IE: trident内核 php
Firefox:gecko内核 css
Safari:webkit内核html
Opera:之前是presto内核,Opera现已改用Google Chrome的Blink内核前端
Chrome:Blink(基于webkit,Google与Opera Software共同开发) web
<!DOCTYPE> 声明位于文档最前面的位置,处于<html>标签以前。此标签可告知浏览器文档使用哪一种HTML规范。(重点:告诉浏览器按照何种规范解析页面)面试
答案:从IE6开始,引入了Standards模式,标准模式中,浏览器尝试给符合标准的文档在规范上的正确处理达到在指定浏览器中的程度。数据库
在IE6以前CSS还不够成熟,因此IE5等以前的浏览器对CSS的支持不好,IE6将对CSS提供更好的支持,然而这时的问题就来了,由于有不少页面是基于旧的布局方式写的,而若是IE6支持CSS则将令这些页面显示不正常,如何在即保证不破坏现有页面,又提供新的渲染机制呢?跨域
在写程序时咱们也会常常遇到这样的问题,如何保证原来的接口不变,又提供更强大的功能,尤为是新功能不兼容旧功能时。遇到这种问题时的一个常见作法是增长参数和分支,即当某个参数为真时,咱们就使用新功能,而若是这个参数不为真时,就使用旧功能,这样就能不破坏原有的程序,又提供新功能。IE6也是相似这样作的,它将DTD当成了这个“参数”,由于之前的页面你们都不会去写DTD,因此IE6就假定 若是写了DTD,就意味着这个页面将采用对CSS支持更好的布局,而若是没有,则采用兼容以前的布局方式。这就是Quirks模式(怪癖模式,诡异模式,怪异模式)。浏览器
区别:整体会有布局、样式解析和脚本执行三个方面的区别。缓存
盒模型:在W3C标准中,若是设置一个元素的宽度和高度,指的是元素内容的宽度和高度,而在Quirks 模式下,IE的宽度和高度还包含了padding和border。
设置行内元素的高宽:在Standards模式下,给<span>等行内元素设置wdith和height都不会生效,而在quirks模式下,则会生效。
设置百分比的高度:在standards模式下,一个元素的高度是由其包含的内容来决定的,若是父元素没有设置百分比的高度,子元素设置一个百分比的高度是无效的用margin:0 auto设置水平居中:使用margin:0 auto在standards模式下可使元素水平居中,但在quirks模式下却会失效。
改版的时候更方便 只要改css文件。
页面加载速度更快、结构化清晰、页面显示简洁。
表现与结构相分离。
易于优化(seo)搜索引擎更友好,排名更容易靠前。
alt:为不能显示图像时显示出来的提示文本。title:鼠标移入时显示的提示文本
strong:粗体强调标签,强调,表示内容的重要性,em:斜体强调标签,更强烈强调,表示内容的强调点
渐进加强:针对低版本浏览器进行构建页面,保证最基本的功能,而后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
优雅降级:一开始就构建完整的功能,而后再针对低版本浏览器进行兼容。
区别:优雅降级是从复杂的现状开始,并试图减小用户体验的供给,而渐进加强则是从一个很是基础的,可以起做用的版本开始,并不断扩充,以适应将来环境的须要。
“优雅降级”观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过期”或有功能缺失的浏览器下的测试工做安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本。在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨”的浏览体验。你能够作一些小的调整来适应某个特定的浏览器。但因为它们并不是咱们所关注的焦点,所以除了修复较大的错误以外,其它的差别将被直接忽略。
“渐进加强”观点则认为应关注于内容自己。内容是咱们创建网站的诱因。有的网站展现它,有的则收集它,有的寻求,有的操做,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进加强”成为一种更为合理的设计范例。这也是它当即被 Yahoo! 所采纳并用以构建其“分级式浏览器支持”策略的缘由所在。
(无标准答案)网页标准和标准制定机构都是为了能让web发展的更‘健康’,开发者遵循统一的标准,下降开发难度,开发成本,SEO也会更好作,也不会由于滥用代码致使各类BUG、安全问题,最终提升网站易用性。
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问而且当会话结束后数据也随之销毁。所以sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。而localStorage用于持久化的本地存储,除非主动删除数据,不然数据是永远不会过时的。
Web Storage的概念和cookie类似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,而且每次你请求一个新的页面的时候Cookie都会被发送过去,这样无形中浪费了带宽,另外cookie还须要指定做用域,不能够跨域调用。除此以外,Web Storage拥有setItem,getItem,removeItem,clear等方法,不像cookie须要前端开发者本身封装setCookie,getCookie。可是Cookie也是不能够或缺的:cookie的做用是与服务器进行交互,做为HTTP规范的一部分而存在 ,而Web Storage仅仅是为了在本地“存储”数据而生。
src用于替换当前元素,href用于在当前文档和引用资源之间确立联系。
src是source的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素。当浏览器解析到该元素时,会暂停其余资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,相似于将所指向资源嵌入当前标签内。这也是为何将js脚本放在底部而不是头部。
href是Hypertext Reference的缩写,指向网络资源所在位置,创建和当前元素(锚点)或当前文档(连接)之间的连接,若是咱们在文档中添加
<link href="common.css" rel="stylesheet"/>那么浏览器会识别该文档为css文件,就会并行下载资源而且不会中止对当前文档的处理。这也是为何建议使用link方式来加载css,而不是使用@import方式。
png-8,png-24,jpeg,gif,svg。
可是上面的那些都不是面试官想要的最后答案。面试官但愿听到是Webp,Apng。(是否有关注新技术,新鲜事物)
科普一下Webp:WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器带宽资源和数据空间。Facebook Ebay等知名网站已经开始测试并使用WebP格式。在质量相同的状况下,WebP格式图像的体积要比JPEG格式图像小40%。
Apng:全称是“Animated Portable Network Graphics”, 是PNG的位图动画扩展,能够实现png格式的动态图片效果。04年诞生,但一直得不到各大浏览器厂商的支持,直到日前获得 iOS safari 8的支持,有望代替GIF成为下一代动态图标准。
微格式是一种让机器可读的语义化XHTML词汇的集合,是结构化数据的开放标准。是为特殊应用而制定的特殊格式。
优势:将智能数据添加到网页上,让网站内容在搜索引擎结果界面能够显示额外的提示。
答案:dns缓存,cdn缓存,浏览器缓存,服务器缓存。
图片懒加载,在页面上的未可视区域能够添加一个滚动条事件,判断图片位置与浏览器顶端的距离与页面的距离,若是前者小于后者,优先加载。
若是为幻灯片、相册等,可使用图片预加载技术,将当前展现图片的前一张和后一张优先下载。
若是图片为css图片,可使用CSSsprite,SVGsprite,Iconfont、Base64等技术。
若是图片过大,可使用特殊编码的图片,加载时会先加载一张压缩的特别厉害的缩略图,以提升用户体验。
若是图片展现区域小于图片的真实大小,则因在服务器端根据业务须要先行进行图片压缩,图片压缩后大小与展现一致。
去掉或样式丢失的时候能让页面呈现清晰的结构:
html自己是没有表现的,咱们看到例如<h1>是粗体,字体大小2em,加粗;<strong>是加粗的,不要认为这是html的表现,这些其实html默认的css样式在起做用,因此去掉或样式丢失的时候能让页面呈现清晰的结构不是语义化的HTML结构的优势,可是浏览器都有有默认样式,默认样式的目的也是为了更好的表达html的语义,能够说浏览器的默认样式和语义化的HTML结构是不可分割的。
屏幕阅读器(若是访客有视障)会彻底根据你的标记来“读”你的网页.
例如,若是你使用的含语义的标记,屏幕阅读器就会“逐个拼出”你的单词,而不是试着去对它完整发音.
PDA、手机等设备可能没法像普通电脑的浏览器同样来渲染网页(一般是由于这些设备对CSS的支持较弱),使用语义标记能够确保这些设备以一种有意义的方式来渲染网页.理想状况下,观看设备的任务是符合设备自己的条件来渲染网页.
语义标记为设备提供了所需的相关信息,就省去了你本身去考虑全部可能的显示状况(包括现有的或者未来新的设备).例如,一部手机能够选择使一段标记了标题的文字以粗体显示.而掌上电脑可能会以比较大的字体来显示.不管哪一种方式一旦你对文本标记为标题,您就能够确信读取设备将根据其自身的条件来合适地显示页面.
搜索引擎的爬虫也依赖于标记来肯定上下文和各个关键字的权重,过去你可能尚未考虑搜索引擎的爬虫也是网站的“访客”,但如今它们他们其实是极其宝贵的用户.没有他们的话,搜索引擎将没法索引你的网站,而后通常用户将很难过来访问.
你的页面是否对爬虫容易理解很是重要,由于爬虫很大程度上会忽略用于表现的标记,而只注重语义标记.
所以,若是页面文件的标题被标记,而不是,那么这个页面在搜索结果的位置可能会比较靠后.除了提高易用性外,语义标记有利于正确使用CSS和JavaScript,由于其自己提供了许多“钩钩”来应用页面的样式与行为.
SEO主要仍是靠你网站的内容和外部连接的。
便于团队开发和维护
W3C给咱们定了一个很好的标准,在团队中你们都遵循这个标准,能够减小不少差别化的东西,方便开发和维护,提升开发效率,甚至实现模块化开发。
了解搜索引擎如何抓取网页和如何索引网页:你须要知道一些搜索引擎的基本工做原理,各个搜索引擎之间的区别,搜索机器人(SE robot 或叫 web crawler)如何进行工做,搜索引擎如何对搜索结果进行排序等等。
Meta标签优化:主要包括主题(Title),网站描述(Description),和关键词(Keywords)。还有一些其它的隐藏文字好比Author(做者),Category(目录),Language(编码语种)等。
如何选取关键词并在网页中放置关键词:搜索就得用关键词。关键词分析和选择是SEO最重要的工做之一。首先要给网站肯定主关键词(通常在5个上下),而后针对这些关键词进行优化,包括关键词密度(Density),相关度(Relavancy),突出性(Prominency)等等。
了解主要的搜索引擎:虽然搜索引擎有不少,可是对网站流量起决定做用的就那么几个。好比英文的主要有Google,Yahoo,Bing等;中文的有百度,搜狗,有道等。不一样的搜索引擎对页面的抓取和索引、排序的规则都不同。还要了解各搜索门户和搜索引擎之间的关系,好比AOL网页搜索用的是Google的搜索技术,MSN用的是Bing的技术。
主要的互联网目录:Open Directory自身不是搜索引擎,而是一个大型的网站目录,他和搜索引擎的主要区别是网站内容的收集方式不一样。目录是人工编辑的,主要收录网站主页;搜索引擎是自动收集的,除了主页外还抓取大量的内容页面。
按点击付费的搜索引擎:搜索引擎也须要生存,随着互联网商务的愈来愈成熟,收费的搜索引擎也开始大行其道。最典型的有Overture和百度,固然也包括Google的广告项目Google Adwords。愈来愈多的人经过搜索引擎的点击广告来定位商业网站,这里面也大有优化和排名的学问,你得学会用最少的广告投入得到最多的点击。
搜索引擎登陆:网站作完了之后,别躺在那里等着客人从天而降。要让别人找到你,最简单的办法就是将网站提交(submit)到搜索引擎。若是你的是商业网站,主要的搜索引擎和目录都会要求你付费来得到收录(好比Yahoo要299美圆),可是好消息是(至少到目前为止)最大的搜索引擎Google目前仍是免费,并且它主宰着60%以上的搜索市场。
连接交换和连接普遍度(Link Popularity):网页内容都是以超文本(Hypertext)的方式来互相连接的,网站之间也是如此。除了搜索引擎之外,人们也天天经过不一样网站之间的连接来Surfing(“冲浪”)。其它网站到你的网站的连接越多,你也就会得到更多的访问量。更重要的是,你的网站的外部连接数越多,会被搜索引擎认为它的重要性越大,从而给你更高的排名。
合理的标签使用
(1)给父元素添加高度height,防止父元素没法获取高度的问题(防止父元素高度变为0),只建议高度固定的布局
(2)结尾处加空div标签给 clear:both
(3)父级div定义 伪类 :after 和 zoom
div:after{
content:"";
height:0;
line-height:0;
display:block;
visibility:hidden;
clear:both;
}
div{
zoom:1;
}复制代码
(4) 父级div定义 overflow:hidden或auto
(5)(只作了解,不推荐使用)父级div 也一块儿浮动
(6)(只作了解,不推荐使用)父级div定义 display:table
尽量少的使用无语义的标签div和span;
在语义不明显时,既可使用div或者p时,尽可能用p, 由于p在默认状况下有上下间距,对兼容特殊终端有利;
不要使用纯样式标签,如:b、font、u等,改用css设置。
须要强调的文本,能够包含在strong或者em标签中(浏览器预设样式,能用CSS指定就不用他们),strong默认样式是加粗(不要用b),em是斜体(不用i);
使用表格时,标题要用caption,表头用thead,主体部分用tbody包围,尾部用tfoot包围。表头和通常单元格要区分开,表头用th,单元格用td;
表单域要用fieldset标签包起来,并用legend标签说明表单的用途;
每一个input标签对应的说明文本都须要使用label标签,而且经过为input设置id属性,在lable标签中设置for来让说明文本和相对应的input关联起来。
<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签以前。此标签可告知浏览器文档使用哪一种 HTML 或 XHTML 规范。
严格模式:又称标准模式,是指浏览器按照 W3C 标准解析代码。
混杂模式:又称怪异模式或兼容模式,是指浏览器用本身的方式解析代码。
如何区分:浏览器解析时到底使用严格模式仍是混杂模式,与网页中的 DTD 直接相关。
一、若是文档包含严格的 DOCTYPE ,那么它通常以严格模式呈现。
二、包含过渡 DTD 和 URI 的 DOCTYPE ,也以严格模式呈现,但有过渡 DTD 而没有 URI (统一资源标识符,就是声明最后的地址)会致使页面以混杂模式呈现。
三、DOCTYPE 不存在或形式不正确会致使文档以混杂模式呈现。
四、HTML5 没有 DTD ,所以也就没有严格模式与混杂模式的区别,HTML5 有相对宽松的语法,实现时,已经尽量大的实现了向后兼容。( HTML5 没有严格和混杂之分)
<!DOCTYPE> 声明不是 HTML 标签;它是指示 web 浏览器关于页面使用哪一个 HTML 版本进行编写的指令。
在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,由于 HTML 4.01 基于 SGML。DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。
HTML5 不基于 SGML,因此不须要引用 DTD。
经常使用的块状元素有:
<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>
经常使用的内联元素有:
<a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>
经常使用的内联块状元素有:
<img>、<input>
知名的空元素: <br/> <hr/> <img/> <input/> <link/> <meta/>
不为人知的是: <area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr>
iframe是一种框架,也是一种很常见的网页嵌入方式
iframe的优势:
1.iframe可以原封不动的把嵌入的网页展示出来。
2.若是有多个网页引用iframe,那么你只须要修改iframe的内容,就能够实现调用的每个页面内容的更改,方便快捷。
3.网页若是为了统一风格,头部和版本都是同样的,就能够写成一个页面,用iframe来嵌套,能够增长代码的可重用。
4.若是遇到加载缓慢的第三方内容如图标和广告,这些问题能够由iframe来解决。
iframe的缺点:
1.会产生不少页面,不容易管理。
2.iframe框架结构有时会让人感到迷惑,若是框架个数多的话,可能会出现上下、左右滚动条,会分散访问者的注意力,用户体验度差。
3.代码复杂,没法被一些搜索引擎索引到,这一点很关键,如今的搜索引擎爬虫还不能很好的处理iframe中的内容,因此使用iframe会不利于搜索引擎优化。
4.不少的移动设备(PDA 手机)没法彻底显示框架,设备兼容性差。
5.iframe框架页面会增长服务器的http请求,对于大型网站是不可取的。
如今基本上都是用Ajax来代替iframe,因此iframe已经渐渐的退出了前端开发。
例子1: 点击" 用户名:" 就能够定位光标到输入框
<form><label for="myid "> 用户名:</label>
<input type="text" id="myid" /></form>复制代码
例子2: 点击" 用户名:" 或按键alt+1, 均可以定位光标到输入框
<form>
<label for="myid" accesskey="1"> 用户名:</label>
<input type="text" id="myid" tabindex="1" />
</form>复制代码
总结:
FOR 属性
功能:表示Label 标签要绑定的HTML 元素,你点击这个标签的时候,所绑定的元素将获取焦点。
用法:<Label FOR="InputBox"> 姓名</Label><input ID="InputBox" type="text"/>
ACCESSKEY 属性
功能:表示访问Label 标签所绑定的元素的热键,当您按下热键,所绑定的元素将获取焦点。
用法:<Label FOR="InputBox" ACCESSKEY="N"> 姓名</Label><input ID="InputBox" tabindex="N" type="text"/>
局限性:accessKey 属性所设置的快捷键不能与浏览器的快捷键冲突,不然将优先激活浏览器的快捷键。
HTML的输入框能够拥有自动完成的功能,当你往输入框输入内容的时候,浏览器会从你之前的同名输入框的历史记录中查找出相似的内容并列在输入框下面,这样就不用所有输入进去了,直接选择列表中的项目就能够了。但有时候咱们但愿关闭输入框的自动完成功能,例如当用户输入内容的时候,咱们但愿使用AJAX技术从数据库搜索并列举而不是在用户的历史记录中搜索。
关闭输入框的自动完成功能有3种方法:
一、在IE的Internet选项菜单里的内容--自动完成里面设置
二、设置form的autocomplete为"on"或者"off"来开启或者关闭自动完成功能
三、设置输入框的autocomplete为"on"或者"off"来开启或者关闭该输入框的自动完成功能
<div style="height:1px;overflow:hidden;background:red"></div>复制代码
1. b和strong的区别
盲人朋友使用阅读设备阅读网络时:<strong>会重读,<b>不会
二者虽然在网页中显示效果同样,但实际目的不一样。
<b>这个标签对应 bold,即文本加粗,其目的仅仅是为了加粗显示文本,是一种样式/风格需求;
<strong>这个标签意思是增强字符的语气,表示该文本比较重要,提醒读者/终端注意。为了达到这个目的,浏览器等终端将其加粗显示;
总结:<b>为了加粗而加粗,<strong>为了标明重点而加粗,也能够用其它方式来强调,好比下划线,好比字体加大,好比红色,等等,能够经过css来改变strong的具体表现。
2. i和em的区别
一样,I是Italic(斜体),而em是emphasize(强调)。
3. title与h1的联系:
从网站角度看,title 更重于网站信息。title 能够直接告诉搜索引擎和用户这个网站是关于什么主题和内容的。
从文章角度看,h1则是用于归纳文章主题。用户进入内容页,想看到的固然就是文章的内容,h1文章标题就是最重要的。文章标题最好只有一个,多个h1会致使搜索引擎不知道这个页面哪一个标题内容最重要,致使淡化这个页面的标题和关键词,起不到突出主题的效果。
区别:h1突出文章主题,面对用户,更突出其视觉效果,突出网站标题或关键字用title。一篇文章,一个页面最好只用一个h1,多个h1会稀释主题。一个网站能够有多个title,最好一个单页用一个title,以便突出网站页面主体信息,从seo看,title权重比h1高,适用性比h1广。标记了h1的文字页面给予的权重会比页面内其余权重高不少。一个好的网站是h1和title并存,既突出h1文章主题,又突出网站主题和关键字。达到双重优化网站的效果。
<div contenteditable="true">
</div>
<style>
*{
padding: 0;
margin: 0;
}
div{
width: 400px;
min-height: 100px;
max-height: 300px;
_height: 100px; /* IE6 */
margin-left: auto;
margin-right: auto;
padding: 3px;
outline: 0;
border: 1px solid #a0b3d6;
font-size: 12px;
word-wrap: break-word;
overflow-x: hidden;
overflow-y: auto;/* 超过最大的高度就出现滚动条 */
_overflow-y: visible;
}
</style>复制代码
HTML 5 全局 contenteditable 属性
<element contenteditable="value">复制代码
值 | 描述 |
---|---|
true | 规定能够编辑元素内容。 |
false | 规定没法编辑元素内容。 |
classname | 继承父元素的 contenteditable 属性。 |