HTML笔记
常用的浏览器内核
- IE:trident内核
- Firefox:gecko内核
- Safari:webkit内核
- Opera:以前是presto内核,现已改用Google Chrome的Blink内核
- Chrome:Blink
DOCTYPE
Doctype是HTML5的文档声明,它可以告诉浏览器,使用哪一个HTML版本标准解析文档。浏览器渲染有两种模式(可通过document.compatMode获取)
- CSS1Compat:标准模式,默认模式,浏览器使用W3C的标准解析渲染页面。
- BackCompat:怪异模式,浏览器将开启最大兼容模式来解析网页,这样不仅会降低解析效率,还会在解析过程中产生难以预知的bug。
html语义化
语义化是指根据内容的结构化,选择合适的标签(用正确的标签做正确的事)
优点:
- 有利于SEO
- 可读性强,有利于开发和维护
常见的语义化标签1
2
3
4
5
6
7<header></header> 头部
<nav></nav> 导航栏
<section></section> 区块(有语义化的div)
<main></main> 主要区域
<article></article> 主要内容
<aside></aside> 侧边栏
<footer></footer> 底部
strong 与 em有什么区别
- strong:粗体强调标签,表示内容的重要性,全局强调,不会引起语义的变化
- em:斜体强调标签,表示内容的强调点,局部强调,会引起语义的变化
src和href的区别
src和href都是用来引用外部的资源,区别如下:
- src:表示对资源的引用,通常用于img、video、audio、script元素,它指向的内容会嵌入到当前标签所在的位置。src会将其指向的资源下载并应⽤到⽂档内,如请求js脚本。当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执⾏完毕,所以⼀般js脚本会放在页面底部。
- href:超文本引用,指向网络资源,当浏览器识别到它指向的⽂件时,就会并⾏下载资源,不会停⽌对当前⽂档的处理,通常用于a、link元素。
script标签中defer和async的区别
<script>
:浏览器会立即加载并执行相应的脚本,不会等待后续加载的文档元素,读取到就会开始加载和执行,这样就阻塞了后续文档的加载<script defer>
:多个带defer属性的标签按照加载顺序执行。加载后续文档过程和js脚本的加载(仅加载不执行)是并行进行的(异步),js脚本需要等到文档所有的元素都解析完成之后才执行。(DOMContentLoaded事件触发执行之前)<script async>
:表示后续文档的加载和执行与js脚本的加载和执行是并行进行的(异步),但是不能保证加载顺序
常用的meta标签
在SEO中,TDK其实就是title、description、keywords这三个标签
- charset,用来描述HTML文档的编码类型
1
<meta charset="UTF-8" >
- keywords,页面关键词:
1
<meta name="keywords" content="关键词" />
- description,页面描述
1
<meta name="description" content="页面描述内容" />
- refresh,页面重定向和刷新
1
<meta http-equiv="refresh" content="0;url=" />
- viewport,适配移动端,可以控制视口的大小和比例
1
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
content
参数:width viewport
:宽度(数值/device-width)height viewport
:高度(数值/device-height)initial-scale
:初始缩放比例maximum-scale
:最大缩放比例minimum-scale
:最小缩放比例user-scalable
:是否允许用户缩放(yes/no) - 搜索引擎索引方式:
1
<meta name="robots" content="index,follow" />
content
参数:all
:文件将被检索,且页面上的链接可以被查询none
:文件将不被检索,且页面上的链接不可以被查询index
:文件将被检索follow
:页面上的链接可以被查询noindex
:文件将不被检索nofollow
:页面上的链接不可以被查询
iframe的作用以及优缺点
iframe也称作嵌入式框架,可以把一个网页的框架和内容嵌入到现有的网页中。
优点:
- 可以用来处理加载缓慢的内容,比如:广告
- 使脚本可以并行下载
- 可以实现跨子域通信
缺点:
- iframe会阻塞主页面的Onload事件
- iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。但是可以通过JS动态给ifame添加src属性值来解决这个问题,也可以解决iframe会阻塞主页面的Onload事件的问题
- 会产生很多页面,不易管理
- 浏览器的后退按钮没有作用
- 无法被一些搜索引擎识别
img的srcset属性
响应式页面中根据屏幕密度设置不同的图片,用法如下:1
<img src="image-1.png" srcset="image-2.png 2x" />
在屏幕密度为1x的情况下加载image-1.png, 屏幕密度为2x时加载image-2.png。
为了解决加载过慢问题,有了新的srcset标准1
<img src="image-128.png" srcset="image-128.png 128w, image-256.png 256w, image-512.png 512w" sizes="(max-width: 360px) 340px, 128px" />
其中srcset指定图片的地址和对应的图片质量。sizes用来设置图片的尺寸零界点。对于 srcset 中的 w 单位,可以理解成图片质量。如果可视区域小于这个质量的值,就可以使用。浏览器会自动选择一个最小的可用图片。
处理HTML5新标签兼容问题
document.createElement(tagName)
可以让浏览器识别新的标签,还可以为新标签添加CSS样式- 在head标签中调用以下代码
1
<script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>
a元素的作用
href属性中的url可以是浏览器支持的任何协议
- 手机拨号
<a href="tel:119">119</a>
- 发短信
<a href="sms:110">110</a>
- 邮件
- 锚点
- 下载文件(a标签所对应的资源浏览器无法解析,浏览器就会选择将其下载下来)
HTML5 drag API
dragstart
:事件主体是被拖放元素,在开始拖放被拖放元素时触发。darg
:事件主体是被拖放元素,在正在拖放被拖放元素时触发。dragenter
:事件主体是目标元素,在被拖放元素进入某元素时触发。dragover
:事件主体是目标元素,在被拖放在某元素内移动时触发。dragleave
:事件主体是目标元素,在被拖放元素移出目标元素是触发。drop
:事件主体是目标元素,在目标元素完全接受被拖放元素时触发。dragend
:事件主体是被拖放元素,在整个拖放操作结束时触发。
为什么利用多个域名来存储网站资源会更有效?
- CDN 缓存更方便
- 突破浏览器并发限制
- 节约 cookie 带宽
- 节约主域名的连接数,优化页面响应速度
- 防止不必要的安全问题
html 常见兼容性问题
- IE6双边bug问题。 使用_display:inline
- 3像素问题。 使用 float 引起的,使用 dislpay:inline -3px
- 超链接 hover 点击后失效。 使用正确的书写顺序 link visited hover active
- IE6不支持 PNG 透明背景。 IE6 下使用 gif 图片
- IE9以下浏览器不能使用opacity
Firefox/Chrome/Safari/Opera浏览器使用opacity;IE浏览器使用filter
filter: alpha(opacity:70); /用了ie滤镜,可以兼容ie/