web前端_web前端金华培训 - CSDN
web前端 订阅
《Web前端设计与开发-HTML+CSS+JavaScript+HTML 5+jQuery》 [1]  是QST青软实训推出的“在实践中成长”系列丛书之一,作者郭全友已从事计算机教学和项目开发多年,拥有丰富的教学和实践经验。本书作为Web前端设计教材,由浅入深系统地讲解了HTML基本标签、表格与框架、CSS页面布局、JavaScript基本语法、JavaScript对象、BOM与DOM编程、HTML 5新特性、jQuery框架以及自定义插件。且对每个知识点都进行了深入分析,针对知识点在语法、示例、代码及任务实现上进行阶梯式层层强化,让读者对知识点从入门到灵活运用一步一步脚踏实地进行。本书的特色是采用一个“Q- Walking Fashion E&S漫步时尚广场”项目,将所有章节重点技术进行贯穿,每章项目代码会层层迭代不断完善,最终形成一个完整的系统。通过贯穿项目以点连线、多线成面,使得读者能够快速理解并掌握各项重点知识,全面提高分析问题、解决问题以及动手编码的能力。 展开全文
《Web前端设计与开发-HTML+CSS+JavaScript+HTML 5+jQuery》 [1]  是QST青软实训推出的“在实践中成长”系列丛书之一,作者郭全友已从事计算机教学和项目开发多年,拥有丰富的教学和实践经验。本书作为Web前端设计教材,由浅入深系统地讲解了HTML基本标签、表格与框架、CSS页面布局、JavaScript基本语法、JavaScript对象、BOM与DOM编程、HTML 5新特性、jQuery框架以及自定义插件。且对每个知识点都进行了深入分析,针对知识点在语法、示例、代码及任务实现上进行阶梯式层层强化,让读者对知识点从入门到灵活运用一步一步脚踏实地进行。本书的特色是采用一个“Q- Walking Fashion E&S漫步时尚广场”项目,将所有章节重点技术进行贯穿,每章项目代码会层层迭代不断完善,最终形成一个完整的系统。通过贯穿项目以点连线、多线成面,使得读者能够快速理解并掌握各项重点知识,全面提高分析问题、解决问题以及动手编码的能力。
信息
出版时间
2016年10月
开    本
185mm * 260mm
出版社
清华大学出版社
ISBN
978-7-302-44775-7
页    数
541
作    者
郭全友 @QST
定    价
69.50
字    数
867千字
又    名
Web前端设计与开发
类    别
计算机图书
装    帧
彩页
书    名
Web前端设计与开发        -HTML+CSS+JavaScript+HTML 5+jQuery
Web前端设计与开发内容简介
本书《Web前端设计与开发-HTML+CSS+JavaScript+HTML 5+jQuery》 [1]  深入介绍了Web前端设计相关的各种技术,内容涵盖HTML基本标签、表格与框架、CSS页面布局、JavaScript基本语法、JavaScript对象、BOM和DOM编程、HTML5、jQuery框架以及自定义插件。本书在HTML5章节中对HTML5的一些新特性进行全面介绍,包括HTML5+CSS3页面布局、Canvas绘图、多媒体播放、Web存储、本地数据库和Web Worker等技术;在jQuery章节中的代码均适用于jQuery 1.x和2.x两个版本。书中所有代码都是基于IE 11、Chrome和FireFox浏览器调试运行。本书由浅入深对Web前端基础内容进行了系统讲解,并且重点突出、强调动手操作能力,以一个项目贯穿所有章节的任务实现,使得读者能够快速理解并掌握各项重点知识,全面提高分析问题、解决问题以及动手编码的能力。
收起全文
  • 本教程专门针对编程小白而制作,是学习HTML+CSS很好的入门教程。学完后能写出你看到的静态页面。
  • 凡是购买本套课程的学员,可以加QQ群: 152364681,专业讲师进行在线答疑与指导,学不懂有疑问,随时问,永久服务,并赠送海量web前端练习素材,名师一路陪伴,让学员真正成为一名优秀的web前端工程师。
  • 本套Web前端基础全家桶教程是全新录制,将前端学习的基础内容融汇为148节课,涵盖了HTML、CSS、HTML5和CSS3的核心技术点。通过对本教程的学习,可以帮助初学者快速上手,并完成大部分静态网页的开发。 ...
  • WEB前端 基础知识汇总

    2018-05-16 18:28:53
    javascript: JavaScript中如何检测一个变量是一个String类型?请写出函数实现typeof(obj) === "string" typeof obj === "string" obj.constructor === String请用js去除字符串空格?...

    javascript:

     JavaScript中如何检测一个变量是一个String类型?请写出函数实现

    typeof(obj) === "string"
    typeof obj === "string"
    obj.constructor === String

    请用js去除字符串空格?

    方法一:使用replace正则匹配的方法

    去除所有空格: str = str.replace(/\s*/g,"");      

    去除两头空格: str = str.replace(/^\s*|\s*$/g,"");

    去除左空格: str = str.replace( /^\s*/, “”);

    去除右空格: str = str.replace(/(\s*$)/g, "");

    str为要去除空格的字符串,实例如下:

    var str = " 23 23 ";
    var str2 = str.replace(/\s*/g,"");
    console.log(str2); // 2323

    方法二:使用str.trim()方法

    str.trim()局限性:无法去除中间的空格,实例如下:

    var str = "   xiao  ming   ";
    var str2 = str.trim();
    console.log(str2);   //xiao  ming 

    同理,str.trimLeft(),str.trimRight()分别用于去除字符串左右空格。

    方法三:使用jquery,$.trim(str)方法

    $.trim(str)局限性:无法去除中间的空格,实例如下:

    var str = "   xiao  ming   ";
    var str2 = $.trim(str)
    console.log(str2);   //  xiao  ming

    你如何获取浏览器URL中查询字符串中的参数?

    测试地址为:http://www.runoob.com/jquery/misc-trim.html?channelid=12333&name=xiaoming&age=23

    实例如下:

    function showWindowHref(){
        var sHref = window.location.href;
        var args = sHref.split('?');
        if(args[0] == sHref){
            return "";
        }
        var arr = args[1].split('&');
        var obj = {};
        for(var i = 0;i< arr.length;i++){
            var arg = arr[i].split('=');
            obj[arg[0]] = arg[1];
        }
        return obj;
    }
    var href = showWindowHref(); // obj
    console.log(href['name']); // xiaoming

    js 字符串操作函数

      我这里只是列举了常用的字符串函数,具体使用方法,请参考网址

    • concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串。

    • indexOf() – 返回字符串中一个子串第一处出现的索引。如果没有匹配项,返回 -1 。

    • charAt() – 返回指定位置的字符。

    • lastIndexOf() – 返回字符串中一个子串最后一处出现的索引,如果没有匹配项,返回 -1 。

    • match() – 检查一个字符串是否匹配一个正则表达式。

    • substr() 函数 -- 返回从string的startPos位置,长度为length的字符串

    • substring() – 返回字符串的一个子串。传入参数是起始位置和结束位置。

    • slice() – 提取字符串的一部分,并返回一个新字符串。

    • replace() – 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。

    • search() – 执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回 -1 。

    • split() – 通过将字符串划分成子串,将一个字符串做成一个字符串数组。

    • length – 返回字符串的长度,所谓字符串的长度是指其包含的字符的个数。

    • toLowerCase() – 将整个字符串转成小写字母。

    • toUpperCase() – 将整个字符串转成大写字母。

    怎样添加、移除、移动、复制、创建和查找节点?

     1)创建新节点

      createDocumentFragment() //创建一个DOM片段
      createElement() //创建一个具体的元素
      createTextNode() //创建一个文本节点

    2)添加、移除、替换、插入
      appendChild() //添加
      removeChild() //移除
      replaceChild() //替换
      insertBefore() //插入

    3)查找
      getElementsByTagName() //通过标签名称
      getElementsByName() //通过元素的Name属性的值
      getElementById() //通过元素Id,唯一性

    写出3个使用this的典型应用

    (1)、在html元素事件属性中使用,如:

    <input type=”button” οnclick=”showInfo(this);” value=”点击一下”/>

    (2)、构造函数

    function Animal(name, color) {
      this.name = name;
      this.color = color;
    }

    (3)、input点击,获取值

    <input type="button" id="text" value="点击一下" />
    <script type="text/javascript">
        var btn = document.getElementById("text");
        btn.onclick = function() {
            alert(this.value);    //此处的this是按钮元素
        }
    </script>

    (4)、apply()/call()求数组最值

    var  numbers = [5, 458 , 120 , -215 ]; 
    var  maxInNumbers = Math.max.apply(this, numbers);  
    console.log(maxInNumbers);  // 458
    var maxInNumbers = Math.max.call(this,5, 458 , 120 , -215); 
    console.log(maxInNumbers);  // 458

    比较typeof与instanceof?

    相同点:JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的。

    typeof的定义和用法:返回值是一个字符串,用来说明变量的数据类型。

    细节:

    (1)、typeof 一般只能返回如下几个结果:number,boolean,string,function,object,undefined。

    (2)、typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错。

    (3)、对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。

    Instanceof定义和用法:instanceof 用于判断一个变量是否属于某个对象的实例。

    实例演示:

    a instanceof b?alert("true"):alert("false"); //a是b的实例?真:假

    var a = new Array(); 
    alert(a instanceof Array);  // true
    alert(a instanceof Object)  // true
    

    如上,会返回 true,同时 alert(a instanceof Object) 也会返回 true;这是因为 Array 是 object 的子类。

    function test(){};
    var a = new test();
    alert(a instanceof test)   // true

    细节:

    (1)、如下,得到的结果为‘N’,这里的 instanceof 测试的 object 是指 js 语法中的 object,不是指 dom 模型对象。

    if (window instanceof Object){ alert('Y')} else {  alert('N');}  // 'N'

     如何理解闭包?

    1、定义和用法:当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的其它变量,如果返回的这个函数在外部被执行,就产生了闭包。

    2、表现形式:使函数外部能够调用函数内部定义的变量。

    3、实例如下:

    (1)、根据作用域链的规则,底层作用域没有声明的变量,会向上一级找,找到就返回,没找到就一直找,直到window的变量,没有就返回undefined。这里明显count 是函数内部的flag2 的那个count 。

    var count=10;   //全局作用域 标记为flag1
    function add(){
        var count=0;    //函数全局作用域 标记为flag2
        return function(){
            count+=1;   //函数的内部作用域
            alert(count);
        }
    }
    var s = add()
    s();//输出1
    s();//输出2

    4、变量的作用域

    要理解闭包,首先必须理解Javascript特殊的变量作用域。

    变量的作用域分类:全局变量和局部变量。

    特点:

    1、函数内部可以读取函数外部的全局变量;在函数外部无法读取函数内的局部变量。

    2、函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!

     5、使用闭包的注意点

    1)滥用闭包,会造成内存泄漏:由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

    2)会改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

     什么是跨域?跨域请求资源的方法有哪些?

    1、什么是跨域?

    由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。存在跨域的情况:

    • 网络协议不同,如http协议访问https协议。

    • 端口不同,如80端口访问8080端口。

    • 域名不同,如qianduanblog.com访问baidu.com。

    • 子域名不同,如abc.qianduanblog.com访问def.qianduanblog.com。

    • 域名和域名对应ip,如www.a.com访问20.205.28.90.

    2、跨域请求资源的方法:

    (1)、porxy代理

    定义和用法:proxy代理用于将请求发送给后台服务器,通过服务器来发送请求,然后将请求的结果传递给前端。

    实现方法:通过nginx代理;

    注意点:1、如果你代理的是https协议的请求,那么你的proxy首先需要信任该证书(尤其是自定义证书)或者忽略证书检查,否则你的请求无法成功。

    (2)、CORS 【Cross-Origin Resource Sharing】

    定义和用法:是现代浏览器支持跨域资源请求的一种最常用的方式。

    使用方法:一般需要后端人员在处理请求数据的时候,添加允许跨域的相关操作。如下:

    res.writeHead(200, {
        "Content-Type": "text/html; charset=UTF-8",
        "Access-Control-Allow-Origin":'http://localhost',
        'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
        'Access-Control-Allow-Headers': 'X-Requested-With, Content-Type'
    });

    (3)、jsonp

    定义和用法:通过动态插入一个script标签。浏览器对script的资源引用没有同源限制,同时资源加载到页面后会立即执行(没有阻塞的情况下)。

    特点:通过情况下,通过动态创建script来读取他域的动态资源,获取的数据一般为json格式。

    实例如下:

    <script>
        function testjsonp(data) {
           console.log(data.name); // 获取返回的结果
        }
    </script>
    <script>
        var _script = document.createElement('script');
        _script.type = "text/javascript";
        _script.src = "http://localhost:8888/jsonp?callback=testjsonp";
        document.head.appendChild(_script);
    </script>

    缺点:

      1、这种方式无法发送post请求(这里)

      2、另外要确定jsonp的请求是否失败并不容易,大多数框架的实现都是结合超时时间来判定。

    谈谈垃圾回收机制方式及内存管理

    回收机制方式

    1、定义和用法:垃圾回收机制(GC:Garbage Collection),执行环境负责管理代码执行过程中使用的内存。

    2、原理:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存。但是这个过程不是实时的,因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行。

    3、实例如下:

    function fn1() {
        var obj = {name: 'hanzichi', age: 10};
    }
    function fn2() {
        var obj = {name:'hanzichi', age: 10};
       return obj;
    }
    var a = fn1();
    var b = fn2();

    fn1中定义的obj为局部变量,而当调用结束后,出了fn1的环境,那么该块内存会被js引擎中的垃圾回收器自动释放;在fn2被调用的过程中,返回的对象被全局变量b所指向,所以该块内存并不会被释放。

     4、垃圾回收策略:标记清除(较为常用)和引用计数。

    标记清除:

      定义和用法:当变量进入环境时,将变量标记"进入环境",当变量离开环境时,标记为:"离开环境"。某一个时刻,垃圾回收器会过滤掉环境中的变量,以及被环境变量引用的变量,剩下的就是被视为准备回收的变量。

      到目前为止,IE、Firefox、Opera、Chrome、Safari的js实现使用的都是标记清除的垃圾回收策略或类似的策略,只不过垃圾收集的时间间隔互不相同。

    引用计数:

      定义和用法:引用计数是跟踪记录每个值被引用的次数。

      基本原理:就是变量的引用次数,被引用一次则加1,当这个引用计数为0时,被视为准备回收的对象。

     内存管理

    1、什么时候触发垃圾回收?

    垃圾回收器周期性运行,如果分配的内存非常多,那么回收工作也会很艰巨,确定垃圾回收时间间隔就变成了一个值得思考的问题。

    IE6的垃圾回收是根据内存分配量运行的,当环境中的变量,对象,字符串达到一定数量时触发垃圾回收。垃圾回收器一直处于工作状态,严重影响浏览器性能。

    IE7中,垃圾回收器会根据内存分配量与程序占用内存的比例进行动态调整,开始回收工作。

    2、合理的GC方案:(1)、遍历所有可访问的对象; (2)、回收已不可访问的对象。

    3、GC缺陷:(1)、停止响应其他操作;

    4、GC优化策略:(1)、分代回收(Generation GC);(2)、增量GC

    开发过程中遇到的内存泄露情况,如何解决的?

    1、定义和用法:

    内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。C#和Java等语言采用了自动垃圾回收方法管理内存,几乎不会发生内存泄露。我们知道,浏览器中也是采用自动垃圾回收方法管理内存,但由于浏览器垃圾回收方法有bug,会产生内存泄露。

    2、内存泄露的几种情况:

    (1)、当页面中元素被移除或替换时,若元素绑定的事件仍没被移除,在IE中不会作出恰当处理,此时要先手工移除事件,不然会存在内存泄露。

    实例如下:

    <div id="myDiv">
        <input type="button" value="Click me" id="myBtn">
    </div>
    <script type="text/javascript">
        var btn = document.getElementById("myBtn");
        btn.onclick = function(){
            document.getElementById("myDiv").innerHTML = "Processing...";
        }
    </script>

    解决方法如下:

    <div id="myDiv">
        <input type="button" value="Click me" id="myBtn">
    </div>
    <script type="text/javascript">
        var btn = document.getElementById("myBtn");
        btn.onclick = function(){
        btn.onclick = null;
            document.getElementById("myDiv").innerHTML = "Processing...";
        }
    </script>
    (2)、由于是函数内定义函数,并且内部函数--事件回调的引用外暴了,形成了闭包。闭包可以维持函数内局部变量,使其得不到释放。
    实例如下:
    function bindEvent(){
        var obj=document.createElement("XXX");
        obj.onclick=function(){
            //Even if it's a empty function
        }
    }

    解决方法如下:

    function bindEvent(){
        var obj=document.createElement("XXX");
        obj.onclick=function(){
             //Even if it's a empty function
        }
        obj=null;
    }

     javascript面向对象中继承实现?

    面向对象的基本特征有:封闭、继承、多态。

    在JavaScript中实现继承的方法:

    1. 原型链(prototype chaining)

    2. call()/apply()

    3. 混合方式(prototype和call()/apply()结合)

    4. 对象冒充

    继承的方法如下:

    1、prototype原型链方式:

    1. function teacher(name){  
    2.     this.name = name;  
    3. }  
    4. teacher.prototype.sayName = function(){  
    5.     console.log("name is "+this.name);  
    6. }  
    7. var teacher1 = new teacher("xiaoming");  
    8. teacher1.sayName();  
    9.   
    10. function student(name){  
    11.     this.name = name;  
    12. }  
    13. student.prototype = new teacher()  
    14. var student1 = new student("xiaolan");  
    15. student1.sayName();  
    16. //  name is xiaoming  
    17. //  name is xiaolan  

    2、call()/apply()方法
    function teacher(name,age){
    this.name = name;
    this.age = age;
    this.sayhi = function(){
    alert('name:'+name+", age:"+age);
    }
    }
    function student(){
    var args = arguments;
    teacher.call(this,args[0],args[1]);
    // teacher.apply(this,arguments);
    }
    var teacher1 = new teacher('xiaoming',23);
    teacher1.sayhi();

    var student1 = new student('xiaolan',12);
    student1.sayhi();

    // alert: name:xiaoming, age:23
    // alert: name:xiaolan, age:12

    3、混合方法【prototype,call/apply】

    function teacher(name,age){
    this.name = name;
    this.age = age;
    }
    teacher.prototype.sayName = function(){
    console.log('name:'+this.name);
    }
    teacher.prototype.sayAge = function(){
    console.log('age:'+this.age);
    }

    function student(){
    var args = arguments;
    teacher.call(this,args[0],args[1]);
    }
    student.prototype = new teacher();

    var student1 = new student('xiaolin',23);
    student1.sayName();
    student1.sayAge();
    // name:xiaolin
    // age:23
    4、对象冒充

    function Person(name,age){
    this.name = name;
    this.age = age;
    this.show = function(){
    console.log(this.name+", "+this.age);
    }
    }

    function Student(name,age){
    this.student = Person; //将Person类的构造函数赋值给this.student
    this.student(name,age); //js中实际上是通过对象冒充来实现继承的
    delete this.student; //移除对Person的引用
    }

    var s = new Student("小明",17);
    s.show();

    var p = new Person("小花",18);
    p.show();
    // 小明, 17
    // 小花, 18

    javascript相关程序计算题

    1、判断一个字符串中出现次数最多的字符,统计这个次数

    var str = 'asdfssaaasasasasaa';
    var json = {};
    for (var i = 0; i < str.length; i++) {
        if(!json[str.charAt(i)]){
           json[str.charAt(i)] = 1;
        }else{
           json[str.charAt(i)]++;
        }
    };
    var iMax = 0;
    var iIndex = '';
    for(var i in json){
        if(json[i]>iMax){
             iMax = json[i];
             iIndex = i;
        }
    }        
    console.log('出现次数最多的是:'+iIndex+'出现'+iMax+'次');

    结果如下:出现次数最多的是:a出现9次

    JavaScript 数组(Array)对象

    1、Array相关的属性和方法

    这里只是做了相关的列举,具体的使用方法,请参考网址

    Array 对象属性

    constructor 返回对创建此对象的数组函数的引用。

    length 设置或返回数组中元素的数目。

    prototype 使您有能力向对象添加属性和方法。

    Array 对象方法

    concat() 连接两个或更多的数组,并返回结果。

    join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

    pop() 删除并返回数组的最后一个元素。  

    shift() 删除并返回数组的第一个元素

    push() 向数组的末尾添加一个或更多元素,并返回新的长度。

    unshift() 向数组的开头添加一个或更多元素,并返回新的长度。

    reverse() 颠倒数组中元素的顺序。

    slice() 从某个已有的数组返回选定的元素

    sort() 对数组的元素进行排序

    splice() 删除元素,并向数组添加新元素。

    toSource() 返回该对象的源代码。

    toString() 把数组转换为字符串,并返回结果。

    toLocaleString() 把数组转换为本地数组,并返回结果。

    valueOf() 返回数组对象的原始值

    2、编写一个方法 去掉一个数组的重复元素

    方法一:

    var arr = [0,2,3,4,4,0,2];
    var obj = {};
    var tmp = [];
    for(var i = 0 ;i< arr.length;i++){
       if( !obj[arr[i]] ){
          obj[arr[i]] = 1;
          tmp.push(arr[i]);
       }
    }
    console.log(tmp);

    结果如下: [0, 2, 3, 4]

     方法二:

    var arr = [2,3,4,4,5,2,3,6],
       arr2 = [];
    for(var i = 0;i< arr.length;i++){
        if(arr2.indexOf(arr[i]) < 0){
            arr2.push(arr[i]);
        }
    }
    console.log(arr2);

    结果为:[2, 3, 4, 5, 6]

     方法三:

    var arr = [2,3,4,4,5,2,3,6];
    var arr2 = arr.filter(function(element,index,self){
    return self.indexOf(element) === index;
    });
    console.log(arr2);

    结果为:[2, 3, 4, 5, 6]

     jquery相关

    1、 jQuery 库中的 $() 是什么?

      $() 函数是 jQuery() 函数的别称。$() 函数用于将任何对象包裹成 jQuery 对象,接着你就被允许调用定义在 jQuery 对象上的多个不同方法。你可以将一个选择器字符串传入 $() 函数,它会返回一个包含所有匹配的 DOM 元素数组的 jQuery 对象。

    2、如何找到所有 HTML select 标签的选中项?

    $('[name=selectname] :selected')

    3、$(this) 和 this 关键字在 jQuery 中有何不同?

    $(this) 返回一个 jQuery 对象,你可以对它调用多个 jQuery 方法,比如用 text() 获取文本,用val() 获取值等等。

    而 this 代表当前元素,它是 JavaScript 关键词中的一个,表示上下文中的当前 DOM 元素。你不能对它调用 jQuery 方法,直到它被 $() 函数包裹,例如 $(this)。

    4、jquery怎么移除标签onclick属性?

    获得a标签的onclick属性: $("a").attr("onclick")

    删除onclick属性:$("a").removeAttr("onclick");

    设置onclick属性:$("a").attr("onclick","test();");

    5、jquery中addClass,removeClass,toggleClass的使用。

    $(selector).addClass(class):为每个匹配的元素添加指定的类名

    $(selector).removeClass(class):从所有匹配的元素中删除全部或者指定的类,删除class中某个值;

    $(selector).toggleClass(class):如果存在(不存在)就删除(添加)一个类

    $(selector).removeAttr(class);删除class这个属性;

    6、JQuery有几种选择器?

    (1)、基本选择器:#id,class,element,*;

    (2)、层次选择器:parent > child,prev + next ,prev ~ siblings

    (3)、基本过滤器选择器::first,:last ,:not ,:even ,:odd ,:eq ,:gt ,:lt

    (4)、内容过滤器选择器: :contains ,:empty ,:has ,:parent

    (5)、可见性过滤器选择器::hidden ,:visible

    (6)、属性过滤器选择器:[attribute] ,[attribute=value] ,[attribute!=value] ,[attribute^=value] ,[attribute$=value] ,[attribute*=value]

    (7)、子元素过滤器选择器::nth-child ,:first-child ,:last-child ,:only-child

    (8)、表单选择器: :input ,:text ,:password ,:radio ,:checkbox ,:submit 等;

    (9)、表单过滤器选择器::enabled ,:disabled ,:checked ,:selected

    7、jQuery中的Delegate()函数有什么作用?

       delegate()会在以下两个情况下使用到:

     1、如果你有一个父元素,需要给其下的子元素添加事件,这时你可以使用delegate()了,代码如下:

    $("ul").delegate("li", "click", function(){ $(this).hide(); });

     2、当元素在当前页面中不可用时,可以使用delegate()

    8、$(document).ready()方法和window.onload有什么区别?

     (1)、window.onload方法是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行的。

     (2)、$(document).ready() 方法可以在DOM载入就绪时就对其进行操纵,并调用执行绑定的函数。

    9、如何用jQuery禁用浏览器的前进后退按钮?

    实现代码如下:

    <script type="text/javascript" language="javascript">
      $(document).ready(function() {
        window.history.forward(1);
          //OR window.history.forward(-1);
      });
    </script>

    10、 jquery中$.get()提交和$.post()提交有区别吗?

    相同点:都是异步请求的方式来获取服务端的数据;

    异同点:

    1、请求方式不同:$.get() 方法使用GET方法来进行异步请求的。$.post() 方法使用POST方法来进行异步请求的。

    2、参数传递方式不同:get请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给Web服务器的,这种传递是对用户不可见的。

    3、数据传输大小不同:get方式传输的数据大小不能超过2KB 而POST要大的多

    4、安全问题: GET 方式请求的数据会被浏览器缓存起来,因此有安全问题。

    11、写出一个简单的$.ajax()的请求方式?

    $.ajax({
        url:'http://www.baidu.com',
        type:'POST',
        data:data,
        cache:true,
        headers:{},
        beforeSend:function(){},
        success:function(){},
        error:function(){},
        complete:function(){}
    }); 

    12、jQuery的事件委托方法bind 、live、delegate、on之间有什么区别?

    (1)、bind 【jQuery 1.3之前】

    定义和用法:主要用于给选择到的元素上绑定特定事件类型的监听函数;

    语法:bind(type,[data],function(eventObject));

    特点:

      (1)、适用于页面元素静态绑定。只能给调用它的时候已经存在的元素绑定事件,不能给未来新增的元素绑定事件。

      (2)、当页面加载完的时候,你才可以进行bind(),所以可能产生效率问题。

    实例如下:$( "#members li a" ).bind( "click", function( e ) {} );

    (2)、live 【jQuery 1.3之后】

    定义和用法:主要用于给选择到的元素上绑定特定事件类型的监听函数;

    语法:live(type, [data], fn);

    特点:

      (1)、live方法并没有将监听器绑定到自己(this)身上,而是绑定到了this.context上了。

      (2)、live正是利用了事件委托机制来完成事件的监听处理,把节点的处理委托给了document,新添加的元素不必再绑定一次监听器。

      (3)、使用live()方法但却只能放在直接选择的元素后面,不能在层级比较深,连缀的DOM遍历方法后面使用,即$(“ul”").live...可以,但$("body").find("ul").live...不行; 

    实例如下:$( document ).on( "click", "#members li a", function( e ) {} );

    (3)、delegate 【jQuery 1.4.2中引入】

    定义和用法:将监听事件绑定在就近的父级元素上

    语法:delegate(selector,type,[data],fn)

    特点:

      (1)、选择就近的父级元素,因为事件可以更快的冒泡上去,能够在第一时间进行处理。

      (2)、更精确的小范围使用事件代理,性能优于.live()。可以用在动态添加的元素上。

    实例如下:

    $("#info_table").delegate("td","click",function(){/*显示更多信息*/});

    $("table").find("#info").delegate("td","click",function(){/*显示更多信息*/});

    (4)、on 【1.7版本整合了之前的三种方式的新事件绑定机制】

    定义和用法:将监听事件绑定到指定元素上。

    语法:on(type,[selector],[data],fn)

    实例如下:$("#info_table").on("click","td",function(){/*显示更多信息*/});参数的位置写法与delegate不一样。

    说明:on方法是当前JQuery推荐使用的事件绑定方法,附加只运行一次就删除函数的方法是one()。

     总结:.bind(), .live(), .delegate(),.on()分别对应的相反事件为:.unbind(),.die(), .undelegate(),.off()

    HTML & CSS:

    1、什么是盒子模型?

    在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(content),元素的内边距(padding),元素的边框(border),元素的外边距(margin)四个部分。这四个部分占有的空间中,有的部分可以显示相应的内容,而有的部分只用来分隔相邻的区域或区域。4个部分一起构成了css中元素的盒模型。

    2、行内元素有哪些?块级元素有哪些? 空(void)元素有那些?

    行内元素:a、b、span、img、input、strong、select、label、em、button、textarea
    块级元素:div、ul、li、dl、dt、dd、p、h1-h6、blockquote
    空元素:即系没有内容的HTML元素,例如:br、meta、hr、link、input、img

    3、CSS实现垂直水平居中

    一道经典的问题,实现方法有很多种,以下是其中一种实现:
    HTML结构:

    <div class="wrapper">
         <div class="content"></div>
    </div>

    CSS:

    .wrapper {
        position: relative;
        width: 500px;
        height: 500px;
        border: 1px solid red; 
     }
    .content{
        position: absolute;
        width: 200px;
        height: 200px;
        /*top、bottom、left和right 均设置为0*/
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        /*margin设置为auto*/
        margin:auto;
        border: 1px solid green;    
    } 

    效果如下:

    4、简述一下src与href的区别

    href 是指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,用于超链接。

    src是指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素。

    当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。

    5、简述同步和异步的区别

    同步是阻塞模式,异步是非阻塞模式。
    同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;
    异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。

     6、px和em的区别

    相同点:px和em都是长度单位;

    异同点:px的值是固定的,指定是多少就是多少,计算比较容易。em得值不是固定的,并且em会继承父级元素的字体大小。
    浏览器的默认字体高都是16px。所以未经调整的浏览器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em。

    7、浏览器的内核分别是什么?

    IE: trident内核
    Firefox:gecko内核
    Safari:webkit内核
    Opera:以前是presto内核,Opera现已改用Google Chrome的Blink内核
    Chrome:Blink(基于webkit,Google与Opera Software共同开发)

     8、什么叫优雅降级和渐进增强?

    渐进增强 progressive enhancement:
    针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。

    优雅降级 graceful degradation:
    一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。

    区别:

    a. 优雅降级是从复杂的现状开始,并试图减少用户体验的供给

    b. 渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要

    c. 降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带

     9、sessionStorage 、localStorage 和 cookie 之间的区别

     共同点:用于浏览器端存储的缓存数据

    不同点:

    (1)、存储内容是否发送到服务器端:当设置了Cookie后,数据会发送到服务器端,造成一定的宽带浪费;

            web storage,会将数据保存到本地,不会造成宽带浪费;

    (2)、数据存储大小不同:Cookie数据不能超过4K,适用于会话标识;web storage数据存储可以达到5M;

    (3)、数据存储的有效期限不同:cookie只在设置了Cookid过期时间之前一直有效,即使关闭窗口或者浏览器;

            sessionStorage,仅在关闭浏览器之前有效;localStorage,数据存储永久有效;

    (4)、作用域不同:cookie和localStorage是在同源同窗口中都是共享的;sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;

     10、Web Storage与Cookie相比存在的优势:

    (1)、存储空间更大:IE8下每个独立的存储空间为10M,其他浏览器实现略有不同,但都比Cookie要大很多。

    (2)、存储内容不会发送到服务器:当设置了Cookie后,Cookie的内容会随着请求一并发送的服务器,这对于本地存储的数据是一种带宽浪费。而Web Storage中的数据则仅仅是存在本地,不会与服务器发生任何交互。

    (3)、更多丰富易用的接口:Web Storage提供了一套更为丰富的接口,如setItem,getItem,removeItem,clear等,使得数据操作更为简便。cookie需要自己封装。

    (4)、独立的存储空间:每个域(包括子域)有独立的存储空间,各个存储空间是完全独立的,因此不会造成数据混乱。

     11、Ajax的优缺点及工作原理?

    定义和用法:

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。Ajax 是一种用于创建快速动态网页的技术。Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

    传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

    优点:

    1.减轻服务器的负担,按需取数据,最大程度的减少冗余请求

    2.局部刷新页面,减少用户心理和实际的等待时间,带来更好的用户体验

    3.基于xml标准化,并被广泛支持,不需安装插件等,进一步促进页面和数据的分离

    缺点:

    1.AJAX大量的使用了javascript和ajax引擎,这些取决于浏览器的支持.在编写的时候考虑对浏览器的兼容性.

    2.AJAX只是局部刷新,所以页面的后退按钮是没有用的.

    3.对流媒体还有移动设备的支持不是太好等

    AJAX的工作原理:

    1.创建ajax对象(XMLHttpRequest/ActiveXObject(Microsoft.XMLHttp))

    2.判断数据传输方式(GET/POST)

    3.打开链接 open()

    4.发送 send()

    5.当ajax对象完成第四步(onreadystatechange)数据接收完成,判断http响应状态(status)200-300之间或者304(缓存)执行回调函数

    12、请指出document load和document ready的区别?

    共同点:这两种事件都代表的是页面文档加载时触发。

    异同点:

    ready 事件的触发,表示文档结构已经加载完成(不包含图片等非文字媒体文件)。

    onload 事件的触发,表示页面包含图片等文件在内的所有元素都加载完成。

     正则表达式

     1、写一个function,清除字符串前后的空格。(兼容所有浏览器)

    function trim(str) {
        if (str && typeof str === "string") {
            return str.replace(/(^\s*)|(\s*)$/g,""); //去除前后空白符
        }
    }

     2、使用正则表达式验证邮箱格式

     var reg = /^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/;
     var email = "example@qq.com";
     console.log(reg.test(email));  // true  

    开发及性能优化

    1、规避javascript多人开发函数重名问题

    • 命名空间
    • 封闭空间
    • js模块化mvc(数据层、表现层、控制层)
    • seajs
    • 变量转换成对象的属性
    • 对象化

    2、请说出三种减低页面加载时间的方法

    • 压缩css、js文件
    • 合并js、css文件,减少http请求
    • 外部js、css文件放在最底下
    • 减少dom操作,尽可能用变量替代不必要的dom操作

    3、你所了解到的Web攻击技术

    (1)XSS(Cross-Site Scripting,跨站脚本攻击):指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或者JavaScript进行的一种攻击。
    (2)SQL注入攻击
    (3)CSRF(Cross-Site Request Forgeries,跨站点请求伪造):指攻击者通过设置好的陷阱,强制对已完成的认证用户进行非预期的个人信息或设定信息等某些状态更新。

     4、web前端开发,如何提高页面性能优化?

    内容方面:

    1.减少 HTTP 请求 (Make Fewer HTTP Requests)

    2.减少 DOM 元素数量 (Reduce the Number of DOM Elements)

    3.使得 Ajax 可缓存 (Make Ajax Cacheable)

    针对CSS:

    1.把 CSS 放到代码页上端 (Put Stylesheets at the Top)

    2.从页面中剥离 JavaScript 与 CSS (Make JavaScript and CSS External)

    3.精简 JavaScript 与 CSS (Minify JavaScript and CSS)

    4.避免 CSS 表达式 (Avoid CSS Expressions)

    针对JavaScript :

    1. 脚本放到 HTML 代码页底部 (Put Scripts at the Bottom)

    2. 从页面中剥离 JavaScript 与 CSS (Make JavaScript and CSS External)

    3. 精简 JavaScript 与 CSS (Minify JavaScript and CSS)

    4. 移除重复脚本 (Remove Duplicate Scripts)

    面向图片(Image):

    1.优化图片

    2 不要在 HTML 中使用缩放图片

    3 使用恰当的图片格式

    4 使用 CSS Sprites 技巧对图片优化

    5、前端开发中,如何优化图像?图像格式的区别?

    优化图像:

    1、不用图片,尽量用css3代替。 比如说要实现修饰效果,如半透明、边框、圆角、阴影、渐变等,在当前主流浏览器中都可以用CSS达成。

    2、 使用矢量图SVG替代位图。对于绝大多数图案、图标等,矢量图更小,且可缩放而无需生成多套图。现在主流浏览器都支持SVG了,所以可放心使用!

    3.、使用恰当的图片格式。我们常见的图片格式有JPEG、GIF、PNG。

    基本上,内容图片多为照片之类的,适用于JPEG。

    而修饰图片通常更适合用无损压缩的PNG。

    GIF基本上除了GIF动画外不要使用。且动画的话,也更建议用video元素和视频格式,或用SVG动画取代。

    4、按照HTTP协议设置合理的缓存。

    5、使用字体图标webfont、CSS Sprites等。

    6、用CSS或JavaScript实现预加载。

    7、WebP图片格式能给前端带来的优化。WebP支持无损、有损压缩,动态、静态图片,压缩比率优于GIF、JPEG、JPEG2000、PG等格式,非常适合用于网络等图片传输。

     图像格式的区别:

    矢量图:图标字体,如 font-awesome;svg 

    位图:gif,jpg(jpeg),png

    区别:

      1、gif:是是一种无损,8位图片格式。具有支持动画,索引透明,压缩等特性。适用于做色彩简单(色调少)的图片,如logo,各种小图标icons等。

      2、JPEG格式是一种大小与质量相平衡的压缩图片格式。适用于允许轻微失真的色彩丰富的照片,不适合做色彩简单(色调少)的图片,如logo,各种小图标icons等。

      3、png:PNG可以细分为三种格式:PNG8,PNG24,PNG32。后面的数字代表这种PNG格式最多可以索引和存储的颜色值。

    关于透明:PNG8支持索引透明和alpha透明;PNG24不支持透明;而PNG32在24位的PNG基础上增加了8位(256阶)的alpha通道透明;

    优缺点:

      1、能在保证最不失真的情况下尽可能压缩图像文件的大小。

      2、对于需要高保真的较复杂的图像,PNG虽然能无损压缩,但图片文件较大,不适合应用在Web页面上。 

    6、浏览器是如何渲染页面的?

    渲染的流程如下:

    1.解析HTML文件,创建DOM树。

       自上而下,遇到任何样式(link、style)与脚本(script)都会阻塞(外部样式不阻塞后续外部脚本的加载)。

    2.解析CSS。优先级:浏览器默认设置<用户设置<外部样式<内联样式<HTML中的style样式;

    3.将CSS与DOM合并,构建渲染树(Render Tree)

    4.布局和绘制,重绘(repaint)和重排(reflow)

    展开全文
  • 来自头条号:丁向明 (ps:加关注)---大家好...微信 dingxiangming82 / 或者关注我的头条早在2007年接触前端2007年接触前端到现在,有11年的时间,算是大龄前端了,算不上高手,但也算的上是老手,很早就接触jquery...

    来自头条号:丁向明 (ps:加关注)

    ---

    大家好, 我是aming ,来自广东的一种称谓(习惯于加阿x来称呼,我曾在广州工作过一段时间,大家习惯这样叫我)

    不管你之前认识或不认识我, 现在,我们开始重新认识一下!

    微信 dingxiangming82 / 或者关注我的头条

    早在2007年接触前端

    2007年接触前端到现在,有11年的时间,算是大龄前端了,算不上高手,但也算的上是老手,很早就接触jquery,下图 <老夫只用jquery > 大概就是我这种人的写照了 /尴尬

    做web前端,年入50w以上的心得

    2014年到人生的岔路口

    在工作到5年左右的时候,走上了岔路口,是继续在公司前端,升职加薪呢,还是自己创业呢?当时真是迷茫了, 后来还是选择了后者

    我成立了最早的一家前端公司(很纯粹的只做前端)——切图网,启用很昂贵的域名qietu.com,就这样开始了

    创业维艰

    刚开始一本一人包揽所有的大小事情,包括推广,运营,客服,开发等,直到后来开始请人... 请了业务员,请了技术员,公司逐步步入正轨

    技术转管理之痛

    我经历了所有的技术转管理必然碰到的问题,就是技术问题凡事都喜欢亲力亲为,导致请了几个技术员,项目都是我在做,累成狗,员工却闲着,后来慢慢的学会了放手和带人

    现在是2018年

    公司成立4年了,从最高峰的时候公司有20多人的前端,到现在精简了人数,保持小体量的运作,致力于做一家小而美,并且活的长的公司,目前稳步增长。

    小规模带人

    我现在是公司的一个闲人 /捂脸 ,很多事已不需要我在亲力亲为,看到市面上的很多培训都不靠谱,我站出来带了一个小班,主教实战,效果很好。

    新班开课在即,还有想学前端的,不妨多一个选择。

    写在最后

    50w不多,特别是创业是个死亡率特别高的事情,公司还活着,我觉得比什么都好。希望公司继续发展顺利,还未步入web前端行业的人 ,能早日就业

    展开全文
  • web前端开发前景

    2018-09-24 17:53:12
    web前端开发的必经之路:HTMI→CSS→JAVASCRIPT 趋势一:重大转变移动优先  响应式设计显然是目前web前端开发领域的主要趋势之一,响应式网站设计是一种网络页面设计布局,其理念是:集中创建页面的图片排版大小...

    web前端开发的必经之路:HTMI→CSS→JAVASCRIPT



    趋势一:重大转变移动优先

            响应式设计显然是目前web前端开发领域的主要趋势之一,响应式网站设计是一种网络页面设计布局,其理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局。





    趋势二:使用高效率开发工具

            众多web前端开发者从2016年开始尝试使用快速原型开发工具,将是这种技术真正爆发的一年。“UXpin、Webflow、Invision以及其它许多快速原型开发工具,让设计师不用写一行代码,就能为网站和服务快速创建低保真和高保真原型,便于设计师衡量它们的可用性和美观性。” web设计师Jamie Leeson says如是说,“许多工具也允许你在浏览器中设计原型并从工具里真正启动网站自身。”




    趋势三:人工智能高速发展

           web与AI碰撞,带来更强大的网页,为网站主和用户同时带来价值。提供网络主机服务的 Wix,是这一领域的领头羊。他们现在提供了一个过程来询问用户一些问题,然后使用一个基于 AI的平台,根据用户的回答提供给用户最符合他们需求的 web设计。

    趋势四:单页站点多级应用

               由于用户更喜欢用滚屏方式浏览网页,各公司将会引起重视并停止浪费时间在设计和开发用户不喜欢的层层相套的子页面上。这一趋势将简化互联网并带来更迷人和身临其境的网页浏览体验,每个人都会感觉到愉悦。



    趋势五:流行的虚拟现实

              VR成为主流的一年,这也就意味着web开发者将通过VR来吸引用户,我们已经看到一些公司比如 Mozilla和 Google投资开发 VR与 Web之间的 API。越来越多的 VR应用程序将相继问世,所以如果看到越来越多的虚拟现实元素出现在 Web上,也别觉得奇怪。早期对 React 的批评(通常批评其 HTML 和 JS 混合方式)现在看起来像是一个遥远的记忆,今年,Facebook 取消了他们的“专利”条款,度过了今年最大的一次危机。由于使用人数和开发人员的满意度都达到了空前的高度,因此可以肯定地说,React 最受欢迎的前端库。

     

    展开全文
  • ... ... 超级文本标记语言是标准通用标记语言(SGML)下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。 网页文件本身是一种文本文件,通过在文本文件中添加标记符。...

    html简介

    1.1 html概述

    html全称:Hyper Text Markup Language(超文本标记语言)
        超级文本标记语言是标准通用标记语言(SGML)下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。
        网页文件本身是一种文本文件,通过在文本文件中添加标记符。
        可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。
    浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果。      
    

    1.2 html特点

    超级文本标记语言文档制作不是很复杂,但功能强大,支持不同数据格式的文件嵌入,这也是万维网(WWW)盛行的原因之一,其主要特点如下:
    1 简易性:超级文本标记语言版本升级采用超集方式,从而更加灵活方便。
    2 可扩展性:超级文本标记语言的广泛应用带来了加强功能,增加标识符等要求,超级文本标记语言采取子类元素的方式,为系统扩展带来保证。
    3 平台无关性:虽然个人计算机大行其道,但使用MAC等其他机器的大有人在,超级文本标记语言可以使用在广泛的平台上,这也是万维网(WWW)盛行的另一个原因。
    4 通用性:另外,HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器。
    

    1.3 html语法规则

    <!DOCTYPE html>
    <html>
      <head>
        <!--设置页面的字符集编码 -->
        <meta charset="utf-8" />
        <!--设置页面的标题 -->
        <title></title>
      </head>
      <body>
        <!--需要展示的信息-->
      </body>
    </html>
    

    1.html结构:包括head body
    2.html标签是以尖括号包围的关键字
    3.html标签通常是成对出现的,有开始就有结束,包含成对标签、独立标签
    4.html通常都有属性,格式:属性名=“属性值”(多个属性之间空格隔开)
    5.html标签不区分大小写,建议小写

    html基本标签

    2.1 结构标签

        <html><html>:根标签         
        <head>:头标签          
         <title></title>:页面的标题       
        </head>      
        <body></body>:主体标签:网页内容
    
    属性:     
        color:文本的颜色 <font color="red">内容</font>
        bgcolor:背景色     <body bgcolor="bisque"> </body>
        background:背景图片              
    颜色的表示方式:                        
        第一种方式:使用颜色名称: red green blue                 
        第二种方式:RGB模式 #000000  #ffffff  #325687   #377405
    

    2.2 排版标签

        1.注释标签:<!--注释-->                
        2.换行标签:<br/>           
        3.段落标签:<p>文本文字</p>   
              特点:段与段之间有行高                         
              属性:align对齐方式  (left:左对齐   center:居中  right:右对齐)          
        4.水平线标签:<hr/>                      
              属性:   
                  width:水平线的长度(两种:第一种:像素表示;第二种,百分比表示)                                       size: 水平线的粗细 (像素表示,例如:10px)                                 
                  color:水平线的颜色                                  
                  align:水平线的对齐方式(left:左对齐   center:居中  right:右对齐)    
    

    2.3 容器标签

       <div></div>:块级标签,独占一行,换行
       <span></span>:行级标签,所有内容都在同一行
             作用:   <div></div>:主要是结合css页面分块布局
                      <span></span>:进行友好提示信息
    

    2.4 文字标签

    2.4.1 基本文字标签

        <font></font> 
           属性: size:设置字体大小
                 color:设置字体颜色
                 face:设置字体        
    

    2.4.2 标题标签

     <h1></h1>—-<h6></h6>  
     随着数字增大文字逐渐变小,字体是加粗的,内置字号,默认占据一行; 
    

    2.5 列表标签

    2.5.1 无序列表

    ul

       无序列表标签: <ul></ul>
                 属性:type :三个值,分别为
                      circle(空心圆) ,disc(默认,实心圆),square(黑色方块)
             列表项:<li></li>
    
       示例如下:  
            <ul type="square">无序列表
                <li>苹果</li>
                <li>香蕉</li>
                <li>橘子</li>
            </ul>
    

    2.5.2 有序列表

    ol

          有序列表标签:<ol></ol>
                 属性:type:1、A、a、I、i(数字、字母、罗马数字)
                 列表项: <li></li>
          示例如下:
            <ol type="I">有序列表
                <li>苹果</li>
                <li>香蕉</li>
                <li>橘子</li>
            </ol>
    

    2.5.3 定义列表

    dl

     定义列表   <dl>
                    <dt>苹果</dt>
                    <dd>苹果是一种水果,富含维生素C,美容养颜,吃了长寿....</dd>
               </dl>
    

    2.5.4 列表嵌套

    <ul>
        <li>咖啡</li>
            <li><ul>
                    <li>红茶</li>
                    <li>绿茶
                        <ul>
                            <li>中国茶</li>
                            <li>非洲茶</li>
                        </ul>
                    </li>
                </ul>
            </li>
        <li>牛奶</li>
    </ul>

    2.6 图片标签

     <img/>独立标签   
      属性: 
          src:图片地址: 相对路径 (同一个网站)  绝对路径 (不同网站)
          width:宽度
          height:高度
          border:边框
          align:对齐方式,代表图片与相邻的文本的相当位置(有三个属性值:top middle bottom)
          alt:图片的文字说明
          hspace 和 vspace 设定图片边沿上下左右空白,以免文字或其它图片过于贴近
    

    2.7 链接标签

     超链接可以是文本,也可以是一幅图像,您可以点击这些内容来跳转到新的文档或者当前文档中的某个部分。
    
    <a>文本或图片</a>
    属性: 
        href:跳转页面的地址(跳转到外网需要添加协议);            
        name:名称,锚点(回到锚点: 顶部,底部,中间),在访问锚点的书写格式:#name的值                        target:_self(自己)  _blank(新页面,之前页面存在)  _parent  _top  默认_self
              _search相等于给页面起一个名字,如果再次打开时,如果页面存在,则不再打开新的页面。可以是任意名字。
    

    2.8 表格标签

    表格由<table>标签来定义。每个表格均有若干行(由 <tr> 标签定义),每行被分割为若干单元格(由 <td> 标签定义)。数据单元格可以包含文本、图片、列表、段落、表单、水平线、表格等等。
    

    2.8.1 普通表格

    (table,tr,td)

     <!--border:边框的宽度 bordercolor:边框的颜色 cellspacing:单元格的边距 width:宽度 height:高度-->
            <table border="1" bordercolor="red" cellspacing="0" align="center" width="200" height="100">
                <tr>
                    <td>学号</td>
                    <td>姓名</td>
                </tr>
                <tr>
                    <td>1</td>
                    <td>aa</td>
                </tr>
            </table>
    

    2.8.2 表格的表头

    (th)

      <table border="1" bordercolor="red" cellspacing="0" align="center">
                    <caption>学生表</caption>
                    <tr>
                        <th>学号</th>
                        <th>姓名</th>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>aa</td>
                    </tr>
            </table>

    2.8.3 表格的列合并

    colspan 属性

    <table border="1" bordercolor="red" cellspacing="0" align="center">
                    <tr>
                        <td colspan="4" align="center">学生表</td>
                    </tr>
                    <tr>
                        <td>学号</td>
                        <td>姓名</td>
                        <td colspan="2">各科成绩</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>aa</td>
                        <td>80</td>
                        <td>90</td>
                    </tr>
            </table>

    2.8.4 表格的行合并

    rowspan属性

    <table border="1" bordercolor="red" cellspacing="0" align="center">
                <tr>
                <td colspan="4" align="center">学生表</td>
                </tr>
                <tr>
                    <td>学号</td>
                    <td>姓名</td>
                    <td>语文成绩</td>
                    <td>数学成绩</td>
                </tr>
                <tr>
                    <td rowspan="2">1</td>
                    <td rowspan="2">aa</td>
                    <td>80</td>
                    <td>90</td>
                </tr>
                <tr>
                    <td>80</td>
                    <td>90</td>
                </tr>
    </table>
    

    2.9 文本格式化标签

        <b>     定义粗体文本。
        <big>   定义大号字。
        <em>    定义着重文字。
        <i>     定义斜体字。
        <small>     定义小号字。
        <strong>    定义加重语气。
        <sub>   定义下标字。
        <sup>   定义上标字。
        <ins>   定义插入字。
        <del>   定义删除字。
    

    html表单标签

    html表单用于收集不同类型的用户输入

    3.1 form标签

    常用属性:action:表示动作,值为服务器的地址,把表单的数据提交到该地址上处理
             method:请求方式:get 和post
             enctype:表示是表单提交的类型
                    默认值:application/x-www-form-urlencoded  普通表单
                           multipart/form-data  多部分表单(一般用于文件上传)
    
         get:
           1.地址栏,请求参数都在地址后拼接 path?name="张三"&password="123456"
           2.不安全
           3.效率高
           4.get请求大小有限制,不同浏览器有不同,但是大约是2KB
    使用情况:一般情况用于查询数据。
         post:
           1.地址栏:请求参数单独处理。
           2.安全可靠
           3.效率低
           4.post请求大小理论上无限。
    使用情况:一般用于插入修改等操作                                       
    

    3.1.1 input标签

    type: 以下为type可能要取的值: 
          1.1   text 文本框  输入内容
          1.2   password  密码框   密文或者掩码
          1.3   radio 表示是单选,name必须一致;value:提交给服务器的数据
                      表示同一组中只能选中一个( checked ="checked" 表示选中)
          1.4  checkbox  表示多选 ,name必须一致,
                     表示同一组中可以选多个,返回值是个数组( checked ="checked" 表示选中)
          1.5   file :表示上传控件                
          以上具有输入性质的必须要有name属性,一开始写value表示是默认值(以后获取输入框的内容要根据name来取)   
         以下按钮不具有输入性质,不需要name属性,但是按钮上的文字提示使用value属性
          1.6 submit   提交
          1.7 reset   重置
          1.9 image   图片提交按钮
         以上所有input的属性: width 设置宽度,height 设置高度  border 设置边框
          1.10 button 普通按钮
          1.11 hidden  表示隐藏域,该框的内容服务器需要,但是不想让用户知道(不想清楚的显示在界面上)
    
    name属性:表单元素名字,只有name属性才能提交给服务器。     
    

    3.1.2 select 元素

    (下拉列表)

    <select name="city">   <!--select标签添加该属性multiple="multiple"表示多选-->  
         <!--option表示下拉列表项-->
        <option value="北京">北京</option> 
         <!--selected="selected"表示选中该项-->
        <option value="上海" selected="selected">上海</option>
        <option value="广州">广州</option>
        <option value="杭州">杭州</option>
    </select>
    

    3.1.3 textarea元素

    (文本域)

    需要指定输入的区域位置大小

     <textarea cols="100" rows="5">  表示5行100列的区域可以输入内容,该元素没有value属性
    

    3.1.4 示例及效果图如下
    这里写图片描述

    <form action="" method="get">
                <table align="center">
                    <caption>
                        <h1>注册</h1></caption>
                    <tr>
                        <td align="right">用户名:</td>
                        <td><input type="text" name="username" value="bluesky" /></td>
                    </tr>
                    <tr>
                        <td align="right">密码:</td>
                        <td><input type="password" name="password" /></td>
                    </tr>
                    <tr>
                        <td align="right">确认密码:</td>
                        <td><input type="password" name="confirmpwd" /></td>
                    </tr>
                    <tr>
                        <td align="right">性别:</td>
                        <td>
                            <input type="radio" name="sex" value="男" /><input type="radio" name="sex" value="女" checked="checked" /></td>
                    </tr>
                    <tr>
                        <td align="right">爱好:</td>
                        <td>
                            <input type="checkbox" name="hobby" value="篮球" checked="checked" />篮球
                            <input type="checkbox" name="hobby" value="足球 " />足球
                            <input type="checkbox" name="hobby" value="乒乓球 " />乒乓球
                            <input type="checkbox" name="hobby" value="羽毛球 " />羽毛球
                        </td>
                    </tr>
                    </tr>
                    <tr>
                        <td align="right">上传头像:</td>
                        <td>
                            <input type="file" name="upload" />
                        </td>
                    </tr>
                    </tr>
                    <tr>
                        <td align="right">居住地:</td>
                        <td>
                            <select name="city">
                                <option value="北京">北京</option>
                                <option value="上海" selected="selected">上海</option>
                                <option value="广州">广州</option>
                                <option value="杭州">杭州</option>
                            </select>
                        </td>
                    </tr>
                    </tr>
                    <tr>
                        <td align="right">个人介绍:</td>
                        <td>
                            <textarea cols="100" rows="5">
                     </textarea>
                        </td>
                    </tr>
                    </tr>
                    <tr>
                        <td></td>
                        <td align="center">
                            <input type="submit" value="注册" />
                            <input type="reset" value="重置" />
                        </td>
                    </tr>
                </table>
    </form>

    html框架标签

    通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面。每份HTML文档称为一个框架,并且每个框架都独立于其他的框架。
    使用框架的坏处:
        开发人员必须同时跟踪更多的HTML文档
        很难打印整张页面
    

    4.1 frameset

    框架结构标签

    框架结构标签(<frameset>)定义如何将窗口分割为框架
            每个 frameset 定义了一系列行或列
            rows/columns 的值规定了每行或每列占据屏幕的面积
    

    4.2 frame

    框架标签

    frame 标签定义了放置在每个框架中的 HTML 文档。
    

    4.3 基本的注意事项

    1. 不能将 <body></body> 标签与 <frameset></frameset> 标签同时使用
    2. 假如一个框架有可见边框,用户可以拖动边框来改变它的大小。为了避免这种情况发生,可以在   <frame> 标签中加入:noresize="noresize"。
    

    4.4 效果图及源代码示例
    这里写图片描述

    !--主界面--
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <frameset rows="15%,*" border="1px">
            <frame src="FrameTop.html" name="topFrame" noresize="noresize" />
            <frameset cols="15%,*">
                <frame src="FrameLift.html" name="liftFrame" noresize="noresize"/>
                <frame src="FrameRight.html" name="rigthFrame"/>
            </frameset>
        </frameset>
    </html>
    
    !--左侧超链接连接栏--
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style>a{text-decoration:none}</style>
        </head>
        <body>
            <table width="100%" height="400px">
                <tr align="center" >
                    <td>
                        <a href="a连接.html" target="rigthFrame"><font size="5">第一个连接</font></a>
                    </td>
                </tr>
                <tr align="center" >
                    <td>
                        <a href="Table.html" target="rigthFrame"><font size="5">第二个连接</font></a>
                    </td>
                </tr>
                <tr align="center" >
                    <td>
                        <a href="注册.html" target="rigthFrame"><font size="5">第三个连接</font></a>
                    </td>
                </tr>
                <tr align="center" >
                    <td>
                        <a href="综合案例.html" target="rigthFrame"><font size="5">第四个连接</font></a>
                    </td>
                </tr>
                <tr align="center" >
                    <td>
                        <a href="列表.html" target="rigthFrame"><font size="5">第五个连接</font></a>
                    </td>
                </tr>
            </table>
        </body>
    </html>
    
    !--右侧显示页面--
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>注册</title>
        </head>
        <body bgcolor="aquamarine">
            <div align="center">
                <form action="" method="post">
                <table>
                    <tr>
                        <th colspan="2">用户注册</th>
                    </tr>
                    <tr>
                        <td>用户名:</td>
                        <td><input type="text" name="uName" /></td>
                    </tr>
                    <tr>
                        <td>密码:</td>
                        <td> <input type="password" name="pwb" /></td>
                    </tr>
                    <tr>
                        <td>确认密码:</td>
                        <td> <input type="password" name="qpwb" /></td>
                    </tr>
                    <tr>
                        <td>性别:</td>
                        <td>
                            <input type="radio" name="gender" checked="checked" value="男" />男
                            &nbsp;&nbsp;&nbsp;
                            <input type="radio" name="gender" value="女" /></td>
                    </tr>
                    <tr>
                        <td>爱好:</td>
                        <td>
                            <input type="checkbox" name="hobby" value="动漫"/>动漫
                            <input type="checkbox" name="hobby" value="游戏"/>游戏
                            <input type="checkbox" name="hobby" value="社交"/>社交
                        </td>
                    </tr>
                    <tr>
                        <td>所在地</td>
                        <td>
                            <select name="address">
                                <option>北京</option>
                                <option>上海</option>
                                <option>天津</option>
                                <option>广东</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td>上传头像</td>
                        <td>
                            <input type="file" name="file" />
                        </td>
                    </tr>
                    <tr>
                        <td>自我介绍</td>
                        <td>
                            <textarea style="resize:none; height: 50px;" name="myself"></textarea>
                        </td>
                    </tr>
                    <tr >
                        <td colspan="2">
                            <input style="margin-left: 50px;" type="submit" name="submit"/>
                            <input style="margin-left: 50px;" type="reset" name="reset"/>
                        </td>
                    </tr>
                </table>
            </form>
    
            </div>
    
        </body>
    </html>
    
    !--顶部Hello World--
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body bgcolor="coral">
            <p align="center"><font size="7">Hello World</font></p>
        </body>
    </html>
    

    html的其它标签和特殊字符

    5.1 其它标签

            <!--该网页的关键字-->
            <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
            <!--该网页的描述-->
            <meta http-equiv="description" content="this is my page">
             <!--该网页的编码-->
            <meta http-equiv="content-type" content="text/html; charset=UTF-8">  html4.01
             <meta charset="UTF-8">  html5
            <!-- href:引入css文件的地址-->
            <link rel="stylesheet" type="text/css" href="./styles.css">
            <!--src:js的文件地址-->
            <script type="text/javascript" src=""></script>
    

    5.2 特殊字符

            &lt; 小于号  
            &gt; 大于号
            &amp; 与字符
            &quot; 引号 
            &reg; 己注册
            &copy; 版权
            &trade; 商标
            &nbsp; 空格   
    
    展开全文
  • Web前端基础知识

    2018-07-09 17:05:03
    1. 前端基础知识 文件分类 文件类型 中文 备注 SGML 标准通用标记语言 HTML和XML的前身 HTML 超本文标记语言 B/S(浏览器/服务器) XML 扩展标记语言 加载数据/配置信息 XML(扩展标记...

    1. 前端基础知识

    文件分类

    文件类型 中文 备注
    SGML 标准通用标记语言 HTML和XML的前身
    HTML 超本文标记语言 B/S(浏览器/服务器)
    XML 扩展标记语言 加载数据/配置信息

    XML(扩展标记语言)

    1. 装载有格式的数据信息,用于各个框架和技术的配置文件描述
    2. 特点:
      1. 扩展名为.xml
      2. 内容区分大小写
      3. 标签要成对出现,形成容器,只能有一个
      4. 标签按正确的嵌套顺序,只有一个根标签
      5. 标签属性的语法:属性名=”值”,写在头上,空格隔开
    3. 格式:
           <?xml version="1.0" encoding="UTF-8"> - 首行
            <class> ... </class> - 标签
            <!--注释--> - 注释
            <class num="1"> - 标签的属性

    java解析xml的方式

    1. SAX(Simple APT for XML) - 常用于移动设备Android
      基于事件的逐行扫描文档,边扫描边解析,只在读时检查数据,不需要把全数据加载到内存中,对于大型文档解析有优势
    2. DOM(Document Object Model) - 文档对象模型
      数据全部存到内存中解析,速度快,dom4j组件方式解析常用

    HTML(超文本标记语言)

    1. 扩展名为.html或.htm
    2. 内容不区分大小写
    3. 标签建议成对出现
    4. 嵌套顺序正确,一个根标签
    5. 标签具有固定含义: 可视化和功能性

    2. JS(JavaScript)(Java脚本)

    1. 一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型
    2. 特点:
      1. 与html和css结合客户端的技术
      2. 能够动态修改html,css中的属性等内容,形成动态效果
      3. 解释型语言
      4. 区分大小写
      5. 弱类型的语言
    3. 格式:
           window.onload=init;
            //自定义函数init
            function init(){
            document.getElementById("btn")
            }
            document.getElementById("btna").onclick=function () {
                //按html元素id查找,将匿名函数与该元素的点击事件捆绑
                var arr=new Array(4);
                //向数组插入数据
                arr[0]="刘备";
                //调用数组对象的方法
                arr.push("张飞","关羽");//动态追加2个数组元素
                var x=arr.pop();
                console.log("length:"+arr.length+",pop:"+x);
                for(i=0;i<arr.length;i++){
                    console.log(arr[i]);
                }
            }

    3. JSON(JS对象简谱)

    1. JS对象标记,JavaScript Object Notation,可以当做字符串传输,能被java,python等多种语言处理,通用性高
    2. 格式:
      1. json对象:
        {key:value,key:value,key:value}
      2. json数组:
        {{key:value,key:value,key:value},{key:value,key:value,key:value}}
    // 可以通过json对象的属性名获得相应的值
    s['xage']=26;//修改xage的值为26
    console.log(s['xname']+","+s2['tsex']); //打印对应值
           for...in:遍历语句
            //遍历json数组s[]
            for(var i in s){
                console.log("i:"+i+",type:"+typeof(i)+","+s[i]);
            }

    JSON与字符串直接转换

    1. java向js传输的是json格式的字符串,要转换成json对象才能被js使用
    2. 代码:
    str=eval(str);//str是传来的字符串,转换后变为json对象
    eval()//函数:将字符串按照表达式的形式转换为对应的具体类型
    //如果传来的是'1+1'放入eval函数会转换成数值进行计算返回结果

    4. JSP(java server page)(Java服务器界面)

    1. 由servlet改编而成,用静态的html去嵌套jsp脚本,完成动态数据的显示
    2. /src/main/webapp下创建.jsp文件

    jsp运行的工作原理

    1. 编写.jsp文件
    2. 编写jsp代码:jsp元素+html/css/javascript
      <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>//jsp抬头
    3. 在web容器部署运行时,首次运行jsp会将它翻译成类servlet源文件.java并编译.class
      第一次jsp运行比较慢是因为要翻译成.java文件
    4. web容器执行.class文件

    jsp元素

    1. jsp元素运行级别高于静态元素,如果出现相同属性仅执行jsp元素
    2. jsp指令,指示页面执行动作属性
      <%@指令名 属性="值"...%>
    3. page指令:规定整个页面的属性特征
      1. language=”java” ,规定整个页面的编程语言
      2. contentType=”text/html; charset=UTF-8”,规定当前页面基于html编写
      3. isErrorPage=”true”,规定当前页面主要用于显示错误信息
      4. include
      5. taglib

    小脚本

    1. 作为web服务器运行的java代码,相当于servlet的service()方法
      <% java语句,结构或jsp内置元素 %>
    2. 如果想在jsp中写html部分,需要用<% %>将jsp语句隔开
    3. jsp内置元素
    jsp元素 功能
    out 页面输出对象,如out.print()
    page 得到整个页面对象
    pageContext 得到页面的上下文
    config 得到web配置信息web.xml
    request 代表请求
    session 代表会话
    application 代表应用
    response 代表响应
    exception 代表运行错误对象,仅当jsp的page指令为isErrorPage=”true”时可用

    全局声明

    1. 语法:<%! 全局属性或方法 %>
    2. 写在声明中的全局声明会当做类的属性/方法
    3. 写的脚本中的局部变量/方法会写入service方法中

    jsp表达式

    1. 语法:<%=表达式%>
    2. 用于显示表达式的值页面

    jsp注释

    1. 语法:<%--注释内容 --%>
    2. 不能在html客户端源码中查看

    jsp动作标签

    <jsp:标签名称 属性="值"></jsp:标签名称>
    <jsp:include>//引入,动态导入
    //1 在导入另一个JSP页面前,编译该jsp页面成html后静态导入
    <jsp:include page="x1.jsp"></jsp:include>
    <%@include%>//引入,静态导入
    //2 相当于把另一个文件的全部代码粘贴到当前页面内,代码有上下顺序
    <%@include file="x1.jsp" %>
    <jsp:forward page="跳转的页面"></jsp:forward>
    //3 转发动作,不会执行转发后脚本内的代码,最后默认写了return

    5. jsp开发模式

    1. Model分类
      1. ModelI:jsp+javaBean
      2. MdoelII:jsp+servlet+javaBean,mvc
    2. EL(expression language)
      1. 用于输出存储范围对象
      2. 语法: ,{2*5}
    3. 获取存储在jsp上下文四个存储范围中的对象,依次查找当前页面和三块存储区,可简化javaBean对象属性的获取
    4. 范围关键字${pageScope.x.sage}
      1. pageScope
      2. requestScope
      3. sessionScope
      4. applicationScope
    5. 判断空对象,empty,not empty
    6. 判断大小,ge,gt,le,lt

    6. jstl(jsp标准标签库语言)

    1. 目的是减少jsp上小脚本的数量,作为sun公司推出的jsp辅助技术
    2. 分类:
      1. 核心库:控制程序流程,存储变量的使用和输出
      2. jstl sql库:直接在页面上使用sql语句
      3. jstl fmt库:按指定形式格式化数值
    3. 使用:
      1. maven中添加jstl依赖库
      2. 在jsp页面上通过<%@taglib%>指令引入jstl对应类型库
      3. 在jsp中使用具体的标签
    4. 案例:

    输出控制

    1. uri=依赖库,引入的是当前标签库的标识
    2. prefix=前缀,代表在jsp中代码当前引入的标签库的标识
    3. out标签:向页面输出
    4. value:引用EL表达式将存储猚中的对象引出
    5. escapeXml:默认true,表示输出内容有特殊字符也不识别直接打印出来
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>//写在首行
    <%
    String str="<h1>你好</h1>";
    request.setAttribute("xw", str);
    %>
    ${xw}
    <hr>
    <c:out value="${xw}" escapeXml="false"></c:out>

    循环

    1. var,表示当次循环对象的引用
    2. items,使用EL表达式在四个存储范围加载集合对象
    <c:forEach var="op" items="${ss }">
    <tr>
    <td>${pageScope.op.sname}</td>
    <td>${op.sage}</td>
    <td>${op.hobby}</td>
    </tr>
    </c:forEach>
    展开全文
  • 1.一次完整的HTTP事务流程 (1)域名解析 (2)发起TCP的三次握手 (3)建立TCP连接后发起http... ... ...(6)浏览器对页面进行渲染呈现给用户 ...从网址到IP地址的转换,称为DNS解析,DNS解析是一个递归查询的过程,具体...
  • web前端简易制作之HTML

    2018-10-02 11:33:21
    1.文章标题 这里可以看出在 &amp;amp;amp;amp;amp;lt;head 里的title 中 添加了 hello world ...HEAD:包含文件的标题,使用的脚本,样式定义等 ...BODY:放置浏览器中显示信息的所有标志和属性,其中内容在浏览器中...
  • 1. typeof返回的数据类型 typeof返回的数据类型包括undefined、string、number、boolean、symbol、Object、Function类型。 2. 检查数组的方式 isArray()方法、toString.call()、instanceof Array ...
  • Web前端常见问题汇总

    2017-10-31 20:55:32
    1.get 和post的区别  数据传输大小:get 传输数据大小限制在1KB,post传输数据大小没有严格限制  缓存和安全:get请求某个url,数据追加到url中发送(http的header传送),即浏览器将各个表单字段元素及其数据... pos
  • web前端到底是什么? 某货: “前几年前端开发人员鱼目混杂,技术参差不齐,相对学习起来不规范,导致> 前端开发人员聚集,所以现在前端工种和工资还是没得到普遍重视,但近2年来,> > HTML5、JS 的流行...
  • 我的第一篇文章:【web前端到底是什么?有前途吗?】,在我没想到如此 ‘HOT’ 的情况下 得到很多好评和有效传播。 也为我近期新开的 个人前端公众号:前端你别闹(webunao) 直接增加了几百粉(果然,帅的人...
  • 在这众多的新生职业中备受瞩目的当属web前端工程师了,web前端在IT行业真正受到重视的时间不超过五年,但是web前端的发展前景却是非常的可观,好前景高薪资吸引了众多的人投入到前端开发的学习当中去,想学好web前端...
  • 如今参加Web前端培训学习Web前端开发的人不断的增加,但是也有不少小伙伴对Web前端不是很了解,本篇文章小编和读者们探讨一下Web前端工程师能干什么?为什么要学Web前端? 现如今各大网站的页面基本上都是使用Web...
  • 小白为大家收集了11个web前端开发,大企业实战项目案例+5W行源码!拿走玩去吧! 老规矩:转发+关注并私信小编:“资料”全部打包带走! 下面给大家简单介绍几个: 小米官网: 项目描述 首先选择小米官网为第...
  • web前端面试简历算是第一张脸,给HR/CTO的第一印象,弄好啦,就有面试的机会!?   关于前端面试简历简单的介绍几点吧。 1、关于简历如何写。首先可以去招聘网站上面看看。那么可以看哪些呢。比如在拉钩上搜web...
  • 一、什么是web前端?web(互联网总称):是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。用户在查找或浏览信息的时候,展现出图形化,用直观的界面方式表达出来。前端:对于网站...
  •  随着移动互联网的发展,web前端逐渐受到企业的重视,前端开发人员的薪资也水涨船高,越来越多的人看好前端行业的发展,想要转行加入。下面,给大家分享一份web前端学习路线图,希望对初学者有所帮助。  Web前端...
1 2 3 4 5 ... 20
收藏数 473,476
精华内容 189,390
关键字:

web前端