浏览器 | 内核 |
---|---|
IE | trident内核 |
Firefox(火狐) | gecko内核 |
Safari | webkit内核 |
Opera | 以前是presto内核,现已改用Google Chrome的Blink内核 |
Chrome | Blink内核 (基于webkit, Google与Opera Software共同开发) |
Quirks模式(怪癖模式,诡异模式,怪异模式)
Quirks模式和Standards模式的区别:
首先,严格模式(又称标准模式,Standards模式)和混杂模式(Quirk模式)都是指浏览器的呈现模式,要与Doctype的两种风格区别开来(严格( strict )和过渡( transitional ),过渡 DOCTYPE 的目的是帮助开发人员从老版本迁移到新版本)。
严格模式下:页面排版及JS解析是以该浏览器支持的最高标准来执行
混杂模式:不严格按照标准执行,主要用来兼容旧的浏览器,向后兼容
而浏览器究竟是使用严格模式还是混杂模式呈现页面与网页中的 DTD (文件类型定义)直接相关。
注意: DTD(文档类型定义)
作用是定义 XML 文档的合法构建模块。它使用一系列的合法元素来定义文档结构。列如:
两种模式的一些差别案列如下:
盒模型: 在W3C
标准中,如果设置一个元素的宽度和高度,指的是元素内容的宽度和高度,而在Quirks 模式
下,设置的宽度和高度还包含了padding
和border
。
设置行内元素的高宽: 在Standards模式
下,给等行内元素设置
wdith
和height
都不会生效,而在quirks模式
下,则会生效。
设置百分比的高度: 在standards模式
下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置百分比的高度,子元素设置一个百分比的高度是无效的。
用margin:0 auto
设置水平居中: 使用margin:0 auto
在standards模式
下可以使元素水平居中,但在quirks模式
下却会失效。
诸如此类的,还有很多。有根据经验遇到的,也有文章上看到的,大家自行摸索吧。。。
声明位于文档中的最前面的位置,处于
标签之前。告知浏览器的解析器,用什么文档类型 规范(
HTML
或 XHTML
)来解析这个文档。
对于 HTML 4.01 文档,
包含严格 DTD 的 DOCTYPE 常常导致页面以标准模式呈现。
包含过度 DTD 和 URI 的 DOCTYPE 也导致页面以标准模式呈现。
但是有过度 DTD 而没有 URI 会导致页面以混杂模式呈现。
DOCTYPE 不存在或形式不正确会导致 HTML 和 XHTML 文档以混杂模式呈现。
对于HTML5文档,
HTML5 没有 DTD ,因此也就没有严格模式与混杂模式的区别,HTML5 有相对宽松的语法,实现时,已经尽可能大的实现了向后兼容。( HTML5 没有严格和混杂之分)
alt
属性: 在图片无法加载时,才会显示的值
title
属性: 在图片正常加载时,鼠标划上去显示的值
注意: alt
也有后者的功能,但是只是在低版本的ie
浏览器才支持,高版本及标准浏览器不支持这个 功能了。
strong
: 粗体强调标签,强调,表示内容的重要性
em
: 斜体强调标签,更强烈强调,表示内容的强调点
渐进增强 progressive enhancement:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
优雅降级 graceful degradation: 一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
区别: 优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。
“优雅降级”观点
认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本。
在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨 (poor, but passable)” 的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略。
“渐进增强”观点
认为应关注于内容本身。
内容是我们建立网站的诱因。有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进增强”成为一种更为合理的设计范例。这也是它立即被 Yahoo! 所采纳并用以构建其“分级式浏览器支持 (Graded Browser Support)”策略的原因所在。
cookie
带宽网页标准和标准制定机构都是为了能让web发展的更‘健康’,开发者遵循统一的标准,降低开发难度,开发成本,SEO也会更好做,也不会因为滥用代码导致各种BUG、安全问题,最终提高网站易用性。
特性 | Cookie | LocalStorage | sessionStorage |
---|---|---|---|
数据的生命周期 | 一般由服务器生成,可设置失效时间。如果在浏览器生成,默认是关闭浏览器之后失效 | 除非被清除,否则永久保存 | 仅在当前会话有效,关闭页面或浏览器后被清除 |
存放数据大小 | 4KB | 一般5MB | 一般5MB |
与服务端通信 | 每次都会携带在HTTP 头中,如果使用cookie 保存过多数据会带来性能问题 |
仅在客户端中保存,不参与和服务器的通信。 | 同LocalStorage |
用途 | 一般由服务器端生成,用于标识用户身份 | 用于浏览器缓存数据 | 同LocalStorage |
共享 | 在同源且符合path 规则的文档之间共享 |
在同源文档之间共享 | 不能共享 |
相同点 | 三者都可以被用来在浏览器端存储数据,而且都是字符串类型的键值对 | 同上 | 同上 |
更多详情,请点击我的这篇博客查看:٩(๑❛ᴗ❛๑)۶
cookie localStorage sessionStorage (¦3」∠) 看完你居然就懂了!!!
src
: 用于替换当前元素
href
: 用于在当前文档和引用资源之间确立联系。
src(source)
指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;
在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素。
当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。
href(Hypertext Reference)
指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,如果我们在文档中添加
那么浏览器会识别该文档为css文件,就会并行下载资源并且不会停止对当前文档的处理。这也是为什么建议使用link方式来加载css,而不是使用@import方式。
png-8
,png-24
,jpeg
,gif
,svg
但是上面的那些都不是面试官想要的最后答案。面试官希望听到是Webp
。(是否有关注新技术,新鲜事物)
科普一下Webp: WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器带宽资源和数据空间。Facebook Ebay等知名网站已经开始测试并使用WebP格式。
在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%
想了解各种格式之间的区别 请点击查看我的另一篇博客:静态资源优化:图片优化
微格式(Microformats)是一种让机器可读的语义化XHTML词汇的集合,是结构化数据的开放标准。是为特殊应用而制定的特殊格式。
优点: 将智能数据添加到网页上,让网站内容在搜索引擎结果界面可以显示额外的提示。(应用范例:豆瓣,有兴趣自行google)
dns缓存,cdn缓存,浏览器缓存,服务器缓存。
想了解更多图片优化方式 请点击查看我的另一篇博客:静态资源优化:图片优化
什么是html语义化?
选择合适的html标签,便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。
为什么要语义化?
了解搜索引擎如何抓取网页和如何索引网页
你需要知道一些搜索引擎的基本工作原理,各个搜索引擎之间的区别,搜索机器人(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(“冲浪”)。其它网站到你的网站的链接越多,你也就会获得更多的访问量。更重要的是,你的网站的外部链接数越多,会被搜索引擎认为它的重要性越大,从而给你更高的排名。
合理的标签使用
外部样式表,引入一个外部css文件
内部样式表,将css代码放在 标签内部
<head>
//...
<style>
#div1 {
background-color: red;
}
</style>
</head>
内联样式,将css样式直接定义在 HTML 元素内部
使用js动态设置
element.style.height = '100px'
element.style.textAlign = 'center'
element.style['text-align'] = 'center'
element.setAttribute("title", "提示")
element.setAttribute('style', 'height: 100px !important');
element.style.setProperty('height', '100px', 'important');
想了解更多DOM操作: 请点击查看我的另一篇博客:DOM操作 ᕙ༼ ͝°益° ༽ᕗ 就是这么吊!
在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素。选择器主要是用来确定html的树形结构中的DOM元素节点。
通配符选择器(所有浏览器支持)
通用选择器用*来表示,用来选择所有元素,,也可以选择某个元素下的所有元素;
*{
marigin: 0;
padding: 0;
font-size: 14px;
}
.demo * {
width: 50px;
height: 50px;
}
类选择器 (用一个样式类名申明;所有浏览器都支持类选择器)
.demo{
width: 50px;
height: 50px;
}
元素选择器(所有浏览器支持)
p{
color:red;
}
ID选择器(用DOM的ID申明;所有浏览器都支持)
#demo{
color:red;
}
群组选择器(利用逗号间隔,比如p,div,#a{ }; 所有浏览器都支持)
p,li{
color: blue;
}
.demo1,.demo2{
color: #fff;
}
派生选择器(通过依据元素在其位置的上下文关系来定义样式,你可以使标记更加简洁。)
<li>
<strong>A</strong>
<em>
B
<strong>C</strong>
</em>
</li>
/* 后代选择器 */
li strong {color:blue;}
/* 子元素选择器 */
h1 > strong {color:red;}
/* 相邻兄弟选择器 */
strong + em {color:yellow}
派生选择器又包含:后代选择器,子元素选择器,相邻兄弟选择器
属性选择器(属性选择器可以根据元素的属性及属性值来选择元素。)
//如果您希望把包含标题(title)的所有元素变为红色,可以写作:
*[title] {color:red;}
伪类选择器(a: hover, li:nth-child)
注意:
一般而言,选择器越特殊,它的优先级越高。也就是选择器指向的越准确,它的优先级就越高。
最基本的:
设置display属性为none,或者设置visibility属性为hidden
技巧性:
设置宽高为0,设置透明度为0,设置z-index位置在-1000em
被点击访问过的超链接样式不再具有hover和active了
解决方法是改变CSS属性的排列顺序
关于a标签的四种状态排序问题,有个简单好记的原则,叫做love hate原则 L-V-H-A(link,visited,hover,active)
代码示例:
<style>
a:link{ background:red;}
a:visited{background:green;}
a:hover{background:blue;}
a:action{background:white;}
</style>