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漫步时尚广场”项目,将所有章节重点技术进行贯穿,每章项目代码会层层迭代不断完善,最终形成一个完整的系统。通过贯穿项目以点连线、多线成面,使得读者能够快速理解并掌握各项重点知识,全面提高分析问题、解决问题以及动手编码的能力。
信息
定    价
69.50
字    数
867千字
又    名
Web前端设计与开发
类    别
计算机图书
装    帧
彩页
书    名
Web前端设计与开发        -HTML+CSS+JavaScript+HTML 5+jQuery
出版时间
2016年10月
开    本
185mm * 260mm
出版社
清华大学出版社
ISBN
978-7-302-44775-7
页    数
541
作    者
郭全友 @QST
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很好的入门教程。学完后能写出你看到的静态页面。
  • 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)

    展开全文
  • Web前端从初级到高手之路

    万人学习 2015-12-28 16:36:35
    凡是购买本套课程的学员,可以加QQ群: 152364681,专业讲师进行在线答疑与指导,学不懂有疑问,随时问,永久服务,并赠送海量web前端练习素材,名师一路陪伴,让学员真正成为一名优秀的web前端工程师。
  • web前端开发(一)—HTML基础

    万次阅读 多人点赞 2018-07-31 23:41:15
    web前端简介 什么是HTML? HTML标签 HTML基本结构 HTML 段落标签 HTML 换行标签 HTML标题 HTML 水平线 HTML注释 HTML 标签 HTML 列表标签 HTML表格 HTML超链接 HTML 图片 HTML表单 表单元素-文本、...

     

    目录

    web前端简介

    什么是HTML?

    HTML标签

    HTML基本结构

    HTML 段落标签

    HTML 换行标签

    HTML标题

    HTML 水平线

    HTML注释

    HTML 标签

    HTML 列表标签

    HTML表格

    HTML超链接

    HTML 图片

    HTML表单

    表单元素-文本、密码框

    表单元素-多行文本框

    表单元素-选择框

    表单元素-下拉选择框

    表单元素-按钮

    HTML-div


    web前端简介

    web前端开发是从网页制作演变而来,名称上有很明显的时代特征。在互联网的演化进程中,网页制作是Web1.0时代的产物,早期网站主要内容都是静态,以图片和文字为主,用户使用网站的行为也以浏览为主。随着互联网技术的发展和HTML5CSS3的应用,现代网页更加美观,交互效果显著,功能更加强大。

    学习web前端开发基础技术需要掌握:HTML、CSS、JavaScript语言。下面我们就来了解下这三门技术都是用来实现什么的:

    1. HTML是网页内容的载体内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片、视频等。

    2. CSS样式是表现就像网页的外衣。比如,标题字体、颜色变化,或为标题加入背景图片、边框等。所有这些用来改变内容外观的东西称之为表现。

    3. JavaScript是用来实现网页上的特效效果如:鼠标滑过弹出下拉菜单。或鼠标滑过表格的背景颜色改变。还有焦点新闻(新闻图片)的轮换。可以这么理解,有动画的,有交互的一般都是用JavaScript来实现的。

     

    什么是HTML?

    HTML 指的是超文本标记语言 (Hyper Text Markup Language)

    HTML 不是一种编程语言,而是一种标记语言 (markup language)

    标记语言是一套标记标签 (markup tag)

    HTML 使用标记标签来描述网页

     

    HTML标签

    HTML 标签是由尖括号包围的关键词,比如 <html>

    HTML 标签通常是成对出现的,标签对中的第一个标签是开始标签,第二个标签是结束标签

    http://img.mukewang.com/528960dc0001cb6802710128.jpg

    标签与标签之间是可以嵌套的,但先后顺序必须保持一致,如:<div>里嵌套<p>,那么</p>必须放在</div>的前面。

    http://img.mukewang.com/5289611a0001469c05510206.jpg

     

    HTML基本结构

    一个HTML文件是有自己固定的结构,如下所示:

    <html>

    <head>...</head>

        <body>...</body>

    </html>

    代码讲解:

    1. <html></html>称为根标签,所有的网页标签都在<html></html>中。

    2. <head> 标签用于定义文档的头部,它是所有头部元素的容器。头部元素有<title><script>、 <style><link>、 <meta>等标签,头部标签在之后会详细介绍。

    3. <body></body>标签之间的内容是网页的主要内容,如<h1><p><a><img>等网页内容标签,在这里的标签中的内容会在浏览器中显示出来。

     

    在head中设置网页标题和字符集编码

    <head>

        <title>这里是标题</title>

        <meta charset="utf-8"/>

    </head>

     

    HTML 段落标签

    如果想在网页上显示文章,这时就需要<p>标签了,把文章的段落放到<p>标签中。

    <p>段落 </p>

    <p>标签的默认样式,段前段后都会有空白。

     

    HTML 换行标签

    如果希望在不产生一个新段落的情况下进行换行(新行),请使用 <br /> 标签:

    <p>This is<br/>a para<br/>graph with line breaks</p>

     

    HTML标题

    标题标签一共有6个,h1、h2、h3、h4、h5、h6分别为一级标题、二级标题、三级标题、四级标题、五级标题、六级标题。并且依据重要性递减。<h1>是最高的等级。
    语法: <hx>标题文本</hx> (x为1-6)

    题标签的样式都会加粗,h1标签字号最大,h2标签字号相对h1要小,以此类推h6标签的字号最小。一个标题标签要独占一整行。

     

    HTML 水平线

    <hr /> 标签在 HTML 页面中创建水平线,可用于分隔内容。

    <p>This is a paragraph</p>
     <hr />
    <p>This is a paragraph</p>
    <hr />
    <p>This is a paragraph</p>

     

    HTML注释

    么是代码注释代码注释的作用是帮助程序员标注代码的用途,过一段时间后再看你所编写的代码,就能很快想起这段代码的用途。代码注释不仅方便程序员自己回忆起以前代码的用途,还可以帮助其他程序员很快的读懂你的程序的功能,方便多人合作开发网页代码。

    语法:

    <!--注释文字 -->

     

    HTML <span>标签

    <span>它的作用就是为了结合CSS设置单独的样式用的,本身没有任何效果。

     

    HTML 列表标签

    1)无序列表

    在浏览网页时,你会发现网页上有很多信息的列表,如新闻列表、图片列表,如下图所示。

    http://img.mukewang.com/52d383cd0001085503320216.jpg

    这些列表就可以使用ul-li标签来完成。ul-li是没有前后顺序的信息列表。

    语法:

    <ul>
      <li>...</li>
      <li>... </li>
       ......
    </ul>

    2)有序列表

    如果想在网页中展示有前后顺序的信息列表,怎么办呢?如,当当网上的书籍热卖排行榜,如下图所示。这类信息展示就可以使用<ol>标签来制作有序列表来展示。

    http://img.mukewang.com/52d3884a00014b0702270264.jpg

    语法:
    <ol>
       <li>信息</li>
       <li>信息</li>
       ......
    </ol>

     

    HTML表格

    有时候我们需要在网页上展示一些数据,如某公司想在网页上展示公司的库存清单。如下表:

    http://img.mukewang.com/52d38f0b00017e4305060133.jpg

    想在网页上展示上述表格效果可以使用以下代码:

    http://img.mukewang.com/52d38f83000160be02920445.jpg

    创建表格的四个元素:

    table、tr、th、td

    1、<table>…</table>:整个表格以<table>标记开始、</table>标记结束。

    2、<tr>…</tr>:表格的一行,所以有几对tr 表格就有几行。

    3、<td>…</td>:表格的一个单元格,一行中包含几对<td>...</td>,说明一行中就有几列。

    4、<th>…</th>:表格的头部的一个单元格,表格表头。

    5、表格中列的个数,取决于一行中数据单元格的个数。

    表格标题

    <caption> 指定表格标题,它显示在表格上方。

         语法:

    <table>

        <caption>标题文本</caption>

        <tr>

            <td>…</td>

            <td>…</td>

            …

        </tr>

    </table>

     

    合并单元格

    有时候一些行和列需要合并,如下:

    合并行使用rowspan属性,合并列使用功能colspan属性。

     

     

     

    HTML超链接

    使用<a>标签可实现超链接,它在网页制作中可以说是无处不在,只要有链接的地方,就会有这个标签。

    语法:

    <a  href="目标网址"  title="鼠标滑过显示的文本">链接显示的文本</a>

    例如:

    <a  href="http://www.baidu.com"  title="点击进入百度">click here!</a>

     

    上面例子作用是单击click here!文字,网页链接到http://www.baidu.com这个网页。

    title属性的作用,鼠标滑过链接文字时会显示这个属性的文本内容。这个属性在实际网页开发中作用很大,主要方便搜索引擎了解链接地址的内容(语义化更友好)

     

    <a>标签在默认情况下,链接的网页是在当前浏览器窗口中打开,有时我们需要在新的浏览器窗口中打开。

    如下代码:

    <a href="目标网址" target="_blank">click here!</a>

     

    HTML 图片

    在网页的制作中为使网页炫丽美观,肯定是缺少不了图片,可以使用<img>标签来插入图片。

    语法:

    <img src="图片地址" alt="下载失败时的替换文本" title = "提示文本">

    举例:

    <img src = "myimage.gif" alt = "My Image" title = "My Image" />

    讲解:

    1、src:标识图像的位置;

    2、alt:指定图像的描述性文本,当图像不可见时(下载不成功时),可看到该属性指定的文本;

    3、title:提供在图像可见时对图像的描述(鼠标滑过图片时显示的文本);

    4图像可以是GIF,PNG,JPEG格式的图像文件。

     

     

     

    HTML表单

    网站怎样与用户进行交互?答案是使用HTML表单(form)。表单是可以把浏览者输入的数据传送到服务器端,这样服务器端程序就可以处理表单传过来的数据。

    <form   method="传送方式"   action="服务器文件">

    讲解:

    1.<form> <form>标签是成对出现的,以<form>开始,以</form>结束。

    2.action 浏览者输入的数据被传送到的地方,比如一个PHP页面(save.php)。

    3.method  数据传送的方式(get/post)。

    <form    method="post"   action="save.php">

            <label for="username">用户名:</label>

            <input type="text" name="username" />

            <label for="pass">密码:</label>

            <input type="password" name="pass" />

    </form>

    注意:

    1、所有表单控件(文本框、文本域、按钮、单选框、复选框等)都必须放在 <form></form> 标签之间(否则用户输入的信息可提交不到服务器上哦!)。

    2、method : post/get

     

    表单元素-文本、密码框

    当用户要在表单中键入字母、数字等内容时,就会用到文本输入框。文本框也可以转化为密码输入框

    语法

    <form>

       <input type="text/password" name="名称" value="文本" />

    </form>

    1、type:

       当type="text"时,输入框为文本输入框;

       当type="password"时, 输入框为密码输入框。

    2、name:为文本框命名,以备后台程序ASP 、PHP使用。

    3、value:为文本输入框设置默认值。(一般起到提示作用)

    举例:

    <form>

      姓名:

      <input type="text" name="myName">

      <br/>

      密码:

      <input type="password" name="pass">

    </form>

    在浏览器中显示的结果:

    http://img.mukewang.com/52e4e9be000152ca05250275.jpg

     

    表单元素-多行文本框

    当用户需要在表单中输入大段文字时,需要用到文本输入域。

    语法

    <textarea  rows="行数" cols="列数">文本</textarea>

    1、<textarea>标签是成对出现的,以<textarea>开始,以</textarea>结束。

    2cols 多行输入域的列数

    3rows 多行输入域的行数

    4、在<textarea></textarea>标签之间可以输入默认值

    举例:

    <form  method="post" action="save.php">
            <label>联系我们</label>
            <textarea cols="50" rows="10" >在这里输入内容...</textarea>
    </form>

    注意:代码中的<label>标签在本章5-9中讲解。

    在浏览器中显示结果:

    http://img.mukewang.com/52e5b4040001f4af05760367.jpg

     

    表单元素-选择框

    在使用表单设计调查表时,为了减少用户的操作,使用选择框是一个好主意,html中有两种选择框,即单选框复选框,两者的区别是单选框中的选项用户只能选择一项,而复选框中用户可以任意选择多项,甚至全选。请看下面的例子:

    语法:

    <input   type="radio/checkbox"   value="值"    name="名称"   checked="checked"/>

    1type:

       当 type="radio" 时,控件为单选框

       当 type="checkbox" 时,控件为复选框

    2value提交数据到服务器的值(后台程序PHP使用)

    3name为控件命名,以备后台程序 ASP、PHP 使用

    4checked当设置 checked="checked" 时,该选项被默认选中

    如下面代码:

    http://img.mukewang.com/52e5f7c60001a23f07360267.jpg

    注意:代码中的<label>标签在本章 5-9 中有讲解。

    在浏览器中显示的结果:

    http://img.mukewang.com/52e5f8010001159804900257.jpg

    注意:同一组的单选按钮,name 取值一定要一致,比如上面例子为同一个名称“radioLove”,这样同一组的单选按钮才可以起到单选的作用。

     

    表单元素-下拉选择框

    下拉列表在网页中也常会用到,它可以有效的节省网页空间。既可以单选、又可以多选。如下代码:

    http://img.mukewang.com/52e604590001ae4005270185.jpg

    讲解:

    1、value:

    http://img.mukewang.com/52e6037300015a9905030165.jpg

    2selected="selected"

    设置selected="selected"属性,则该选项就被默认选中。

    在浏览器中显示的结果:

    http://img.mukewang.com/52e605340001014804520288.jpg

     

    表单元素-按钮

    在表单中有两种按钮可以使用,分别为:提交按钮、重置。这一小节讲解提交按钮:当用户需要提交表单信息到服务器时,需要用到提交按钮

    语法

    <input   type="submit"   value="提交">

    type:只有当type值设置为submit时,按钮才有提交作用

    value按钮上显示的文字

    举例:

    http://img.mukewang.com/52e613350001461604820109.jpg

     

    HTML-div

    在网页制作过程过中,可以把一些独立的逻辑部分划分出来,放在一个<div>标签中,这个<div>标签的作用就相当于一个容器。

    语法:

    <div>…</div>

    确定逻辑部分:

    什么是逻辑部分?它是页面上相互关联的一组元素。如网页中的独立的栏目版块,就是一个典型的逻辑部分。如下图所示:图中用红色边框标出的部分就是一个逻辑部分,就可以使用<div>标签作为容器。

    http://img.mukewang.com/52d38c41000163e210120455.jpg

     

     

    展开全文
  • web 前端入坑第一篇:web前端到底是什么?有前途吗

    万次阅读 多人点赞 2016-08-01 14:49:20
    web前端到底是什么? 某货: “前几年前端开发人员鱼目混杂,技术参差不齐,相对学习起来不规范,导致> 前端开发人员聚集,所以现在前端工种和工资还是没得到普遍重视,但近2年来,> > HTML5、JS 的流行...

    web前端到底是什么?


    某货: “前几年前端开发人员鱼目混杂,技术参差不齐,相对学习起来不规范,导致> 前端开发人员聚集,所以现在前端工种和工资还是没得到普遍重视,但近2年来,> > HTML5、JS 的流行,让前端异常火爆,以后还会更有前途吗?请问您怎么看?”



    “我只能告诉你:前端不灭”
    “除非你不要脸!”
    “前些年因为国内都不要脸,然而现在都明白了用户体验至上,现在都要脸;”
    “不但要脸 还要胸大 活好!用着舒服”
    “后端提供床,前端提供颜值高的妹,你说重要吗?”


    某货:“嘿嘿!你意思是 地上、厨房都可以,但没妹子怎么行?。。【大大的 污 】”


    上面对话,是我前两天在群里 一段解答的对话。
    有人问我 为什么你举例这么生动,真实,让人看了觉得更激情了。我只能告诉你:我主业是段子手,副业才是code,你表 搞错好吗?
    好,下面我来简单粗暴的介绍下我自己:3个特征而已


    1. 我 最 帅!
    2. 我 最 帅!
    3. 我 最 帅!

    O(∩_∩)O 好了,我们已经相识了,我们进入相知的阶段(我擦,太快了吧?)

    在我讲段子之前呢,我有必要和责任解释下:
    {“ web前端开发 ”是什么? }
    {“ web前端开发 ”有前途吗?}
    {“ web前端开发 ”到底怎么学?}

    这3个对象,是你入【前端】这个坑的初恋,对!没错同时和 3个对象谈恋爱(我知道你大学肯定干过额 【邪恶脸】)。

    NO 1: web前端开发 ”是什么?


    前言:声明啊,我是个草根派,不是学院派;那些一篇噼里啪啦,噼里啪啦的各种定义 和术语解释,你在我这么帅的人的系列文章里,根本看不到 嘿嘿!


    【啦啦啦 啦啦啦, 我是卖报的小行家,不怕苦,不怕累。。】。。。画风突变


    跑题啦!不过话说回来,这个脍炙人口的儿歌,深刻反映了我们 web前端行业的一个工种状态。行家,自由,但要经历苦、累 才会有收获。其他行业,苦、累居多,而我们大前端那必须是自由,乐趣,随心所欲的一个工种。

    本帅的感触:做任何一件事,如果是兴趣使然,那必定会坚守到老,从菜鸟变大神也是顺理成章的事儿。因为你的经验会随着你的颜值经历时间的洗刷,最后你回头会发现一件最有意义的事:

    我擦,加薪了! (^o^)/YES!

    废话了这么多,我们来步入正题:其实web前端这个职位,并没有一个有效的历史记录可以查询,更没有一个明确的定义,她不像java 攻城狮、c++开发这种一开始就有明确定位的工种一样,是有核心技能可以描述的。比如java开发,顾名思义就是利用java程序来开发功能,php开发:利用php做个商城等等。

    前端小美女

    你会发现:我们前端这个姑娘,她甚至没有一个logo 和拟人化的图形用来描述(是不是挺扯淡的?)不过不要紧,下面让帅的人 来为她正名。O(∩_∩)O~

    一、web前端的演变


    Web前端开发工程师是一个很新的职业,在国内乃至国际上真正开始受到重视的时间不超过10年。Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征。在互联网的演化进程中,网页制作是Web 1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主。

    2005年以后,互联网进入Web 2.0时代,各种类似桌面软件的Web应用大量涌现,网站的前端由此发生了翻天覆地的变化。网页不再只是承载单一的文字和图片,各种丰富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供了更好的使用体验,这些都是基于前端技术实现的。

    随着WEB2.0概念的普及和W3C组织的推广,网站重构的影响力正以惊人的速度增长。


    前端飞速发展


    上边一段标注解释,是某科的一些附录,(这么枯燥的东西,就让别人来总结吧对么?)大概阐述了,以前的web是怎么一种状态和Web2.0的重要性。

    其实中国的“web前端开发攻城狮”这个职位好多人并不知道是怎么叫出来的,那么我偷偷 <( ̄︶ ̄)>告诉你:其实是淘宝团队,发明出来的本土化的名称,因为历史原因,淘宝在2005以后迅速崛起,并且爆发式的访问量,让淘宝网的用户体验受到巨大考验和急需前进。

    然后淘宝官方第一次有了【 web前端开发 】这个字眼和招聘职位,或许其他网站也想到了这样一种描述,但是毕竟知名度巨高的淘宝,受关注度自然高,口碑相传,就把【前端开发】这个叫法发扬光大了。

    在早期点Web前端不叫前端,而是被亲切的叫做“网页设计师”,没错你没看错,就是这个名字,我记得那时候 【网页三剑客】的说法满天飞,你掌握了这3贱客,真的很贱,就可以被人叫做网页设计师了。

    网页三剑客:DW\FW\Falsh

    网页三剑客

    网页三剑客(Flash、Dreamweaver、Firewoks) 并称为Macromedia的网页制作三剑客,由于是同一公司的产品,因而在功能上有着一个非常紧密的结合 。后来Firewoks被Adobe这个变态的巨头收购以后,ps就基本取代Firewoks来做设计网页的工作了,虽然我知道现在还有人用,估计是一种怀念和某些好用的切图功能吧。

    而那时候的网页设计师 如果要入此道,必须要掌握的就是Dreamweaver,并不是说只有他能写html 和 css ,而是它在当时的自动提示实在太好用、太强大了,简直不用费脑细胞,你就可以轻轻松松的完成你所想。在当时前端工具和编辑器贫乏的时代,这个绝对是神奇级别了(当然后来 写的多了都熟悉基本不用提示的)。当年还有很多基于Dreamweaver构建网站的教程,那时候真的是个基情满满的年代,这些工具类的历史产物,有兴趣的朋友可以去了解一下就好了,我们不在多舌。

    二、web前端开发入门,需要掌握哪些基础


    虽说这个问题很大,但是这个话题就很好回答了;因为现在前端如此眼花缭乱,技能多多,都是基于此三板斧:
    HTML、CSS、JavaScript


    W3C


    语言基础:HTML、CSS、JavaScript

    思想标准:W3C标准

    W3C万维网联盟创建于1994年,是Web技术领域最具权威和影响力的国际中立性技术标准机构。到目前为止,W3C已发布了200多项影响深远的Web技术标准及实施指南,如广为业界采用的超文本标记语言标准通用标记语言下的一个应用)、可扩展标记语言等,有效促进了Web技术的互相兼容,对互联网技术的发展和应用起到了基础性和根本性的支撑作用。

    所以 我们现在运用的html 超文本标记语言,css 等所有基于web技术的范畴,基本都是w3c标准,并全世界统一执行的,所以符合w3c 也就是开启前段之门了。
    web前端,首先不是孤立存在的,前端相对于web后端编程而言,前端是浏览器自身支持的编程语言,包括html,css,javascript

    HTML: 是构成网页展示的基础,是一种很简单可视化的标识语言,说白了就是 一是一,你写二就出二。网上所有的网页网站,不管多么牛鼻最后都会转化成html,被浏览器渲染出来,用作展示。

    CSS: 又称作样式表,简单点说就是html的外衣,将html包装的明艳动人。

    JavaScript:是一种直译式脚本语言,非常灵活,可以在任何浏览器上开发与调试的一种动态类型、弱类型、基于原型的语言。
    (关于js这个让人又爱又恨的语言,我们到后面会着重介绍和学习,因为掌握此技能, 你就拥有了全世界,说全世界是扯淡的,说白了拥有了 money和妹子)

    NO 2: web前端开发 ”到底有前途吗?


    如果你在2012年以前 这么问,或许很多人会思考一下,给你说不知道,应该没后端编程有前途吧,或者直接说,web前端有啥啊?不就写个网页、js吗?工资又低。。。。


    但现在是2016年了亲,我只能说以后都会是前端年,很久以前不懂web前端的人观念大概是:

    xx是美工,让他弄个网页过来
    xx你好,你能给我切割按钮过来吗,我后面需要用
    xx你alert一下,看我数据传过去了没。
    xx xx xx 的

    xx你麻痹啊xx!不要叫我美工,谁叫我跟谁急;不要叫我页面仔,虽说每个扎实的前端都是页面仔过来的;更不要侮辱我的职业,以为前端只是写页面、切图。。

    然而现在的真实情况是这样的:

    hi,小北你这个是什么效果啊,这么牛,css3 html5做的?【css3 html5 笑而不语

    我擦,这,这 怎么自动就刷新了,吓我一跳啊,我还拉回切换着f5呢【gulp、 webpack等构建工具笑而不语

    哎呦,js真牛逼啊,连后台数据库都能操作了,服务器都能构建了【nodejs笑而不语

    哥,你需要什么形式的json串啊, 我这边好生成一下,哥,你过来看一下这个体验怎么样?【老子 不笑,也不会语。尼玛要累死我?


    随着html5的普罗天下,css3的风靡全球,随着nodejs 的崛起,JavaScript这个最容易被人误解的语言,终于散发了它本该有的光芒(不要以为是我抄的别人的话,本篇文章纯属原创,我就是这么有才!)


    Javascript这个牛鼻的历史产物,现在真的可以说是万能的,至少在web层面是这样,交互、效果、数据操作、娱乐游戏、操作文件io等等。

    由于现在是web应用时代,各种尺寸的电子设备,增长式的爆发,只要和屏幕有关的 就是颜值,颜值代表了一切,你说前端有前途吗?

    html5、网页游戏风靡全球,需要页面展现的东西 都是前端范畴,你说有前途吗?

    目前世界上最多的可视化物质是什么?蚂蚁?人?还有人说是TT(泥煤,亏你想的出来),那么我告诉你,是网页,网页 ,网页,据统计现在全世界 有亿级别的网页,请问什么概念,你说有前途吗?

    最直观的:前端的工资 从前几年的平均几K 到现在的10 20 k 。

    前端工资比例图


    你说有前途没?

    由于本篇文章是 我 前端系列文章的第一篇,只介绍下历史原因 和 为前端正名,并且有效提升初学者和怀疑者的兴趣,所以一些名词的介绍和意义,大家先自行谷歌、度娘一下,后面我们会一一道来。

    NO 3: web前端开发 ”怎么学习,怎么入门?


    想知道吗?嘿嘿,我好累,喝口水把个妹,想知道,持续关注我帅帅的颜值,下回分解!

    在最后,特别感谢,贺贺妹子(傻),辛苦整理提供一些资料和配图,让我的文章更加生动和有趣。我想她一定是被我的颜值折服了吧!

     

    ----------------------------------------------------------------------------------------------

     

    web前端入坑系列:点击标题进入

    第一篇: web 前端入坑第一篇:web前端到底是什么?有前途吗

    第二篇: web前端入坑第二篇:web前端到底怎么学?干货资料!

    第三篇:web前端 | 一条“不归路” -  学习路线!

     

     

    入坑方式:   欢迎加入~!气氛热情,欢乐多,妹子多!

     

     

     扫描屏二维码或直接搜索,可以关注 我的前端公众号 :前端你别闹

    听说妹子挺多的,及时更新一些前端解惑和段子

    70

     

    展开全文
  • web前端——第一个页面

    千次阅读 2018-02-25 16:25:17
    我们在电脑桌面上右键——新建——文本文档,名字随便起,将后缀名改成html以后就创建好了一...双击就可以用浏览器打开。但是严格上来说,这并不能算是一个页面。因为,标准的页面要写成:&lt;...gt;&lt;head&...

    我们在电脑桌面上右键——新建——文本文档,名字随便起,将后缀名改成html以后就创建好了一个空白页面。双击就可以用浏览器打开。



    但是严格上来说,这并不能算是一个页面。因为,标准的页面要写成:

    <html><head><title>网页面名字</title></head><body></body></html>

    有这样内容的页面才能算是一个网页。

    但是这样写我们不容易理解清楚,如果以后写多了也不能很好的编辑,我们需要将代码格式化一下,如:

    <html>

        <head>

            <title>网页面名字</title>

        </head>

        <body>

        </body>

    </html>

    所以,我们用记事本打开我们创建好的页面,将上面的内容填写进去,保存(ctrl+s)。这样一个标准的网页就创建好了。



    但是这样一个网页是空白的,里面什么内容也没有,这当然不是我们想要的,我们要在网页上显示一些内容。

    网页上我们能看的内容一般都是写在<body></body>这个里面的,如我们想要在页面上显示“HelloWorld”这个词就可以写成:

    <html>

        <head>

            <title>网页面名字</title>

        </head>

        <body>

                    HelloWorld

        </body>

    </html>

    这时,改完后后缀名以后再用浏览器打开就可以看见我们写的内容:HelloWorld

    我们的第一个页面就写完了。



    另外要说的是,所有编程语言里面的标点符号全是英文符号,中文的不可用,除非是以文字的形式出现的(就是当汉字用)属于非法字符(反正我所知道的编程语言都是,听说也有中文的编程不知道里面可不可以用,我没用过)。

    展开全文
  • web前端页面

    2017-07-29 11:05:16
    html css
  • Web前端基础知识整理(一)

    万次阅读 2019-06-24 00:00:57
    1. typeof返回的数据类型 typeof返回的数据类型包括undefined、string、number、boolean、symbol、Object、Function类型。 2. 检查数组的方式 isArray()方法、toString.call()、instanceof Array ...
  • Web前端面试——HTTP部分

    万次阅读 多人点赞 2018-09-14 08:39:17
    1.一次完整的HTTP事务流程 (1)域名解析 (2)发起TCP的三次握手 (3)建立TCP连接后发起http... ... ...(6)浏览器对页面进行渲染呈现给用户 ...从网址到IP地址的转换,称为DNS解析,DNS解析是一个递归查询的过程,具体...
  • Web前端常见问题汇总

    千次阅读 2017-10-10 22:28:43
    1.get 和post的区别  数据传输大小:get 传输数据大小限制在1KB,post传输数据大小没有严格限制  缓存和安全:get请求某个url,数据追加到url中发送(http的header传送),即浏览器将各个表单字段元素及其数据... pos
  • 我的第一篇文章:【web前端到底是什么?有前途吗?】,在我没想到如此 ‘HOT’ 的情况下 得到很多好评和有效传播。 也为我近期新开的 个人前端公众号:前端你别闹(webunao) 直接增加了几百粉(果然,帅的人...
  • WEB前端简历模板

    万次阅读 多人点赞 2019-10-15 17:15:36
    WEB前端简历模板 详细资料 姓名:XXX 出生年月:XXXX年X月 名 族:X族 政治面貌:XXXX ...
  • 11个web前端开发实战项目案例+源码!拿走就是了

    万次阅读 多人点赞 2019-07-25 22:11:00
    小白为大家收集了11个web前端开发,大企业实战项目案例+5W行源码!拿走玩去吧! 老规矩:转发+关注并私信小编:“资料”全部打包带走! 下面给大家简单介绍几个: 小米官网: 项目描述 首先选择小米官网为第...
  • web前端 | 一条“不归路” - 学习路线

    万次阅读 多人点赞 2016-08-15 10:39:35
    本文属于职业解惑系列,读完此文要么生,要么死。要么充满斗志,要么颓废放弃。...由于前两篇【前端开发】文章,得到不少赞同和转发,应该也帮助了不少刚入门感兴趣的童鞋更好的入坑。 更不少人留言说 “根据你的文...
  • web前端简历的详解

    万次阅读 2016-11-22 08:55:26
    一、基本信息 基本信息就是介绍自己的姓名、性别、年龄、出生年月、婚姻状况、民族、籍贯、政治面貌、身高、现所在地、练习电话、电子邮箱等,其中一些事必须要写的,有些事不需要写的,看个人情况。...
  • 如何写H5/web前端工程简历中的项目经验

    万次阅读 多人点赞 2017-09-17 17:28:40
    如何写H5/web前端工程简历中的项目经验
  • Web前端开发工具

    万次阅读 多人点赞 2019-05-30 19:46:44
    本文仅代表博主自己观点,希望对大家有所帮助。(只推荐以下三款,其余不推荐使用) ... (1)介绍:入门首推这两款工具。高校可能也有很多老师使用这两款教授学生。区别在于HBuilderX更加轻量,是HBuilder的下一代...
  • web安全 前端性能 浏览器 算法相关 设计模式 正则表达式 职业规划 参考资料 html/ css 行内元素和块级元素举几个例子? 行内元素:span,a,var ,em,input,img,img,textarea,var,em,s...
  • 2019 web 前端面试总结(内附面经)

    万次阅读 多人点赞 2018-09-25 18:52:53
    这篇文章不适合拿到 BAT 的大佬及自制力特别差的人 本文只是提供复习的思路,以及我自己的一些面经,并没有具体的题目 基本情况 据说先把 offer 亮出来才能吸引你们看下去。目前一共有五个。分别是顺丰,拼多多,...
  • Web前端和Web后端的区分

    万次阅读 多人点赞 2018-05-19 15:39:23
    后台包括前端、后端。 前端:对应我们写的html、css、javascript 等网页语言作用在前端网页。 后端:对应jsp、javaBean、dao层、action层和service层的业务逻辑代码。(包括数据库) 为什么jsp是后端呢?主要是...

空空如也

1 2 3 4 5 ... 20
收藏数 506,008
精华内容 202,403
关键字:

web前端