DOCTYPE是用来声明文档类型和DTD规范的。<!DOCTYPE html>声明位于HTML文档中的第一行,不是一个 html 标签,处于 html 标签之前。告诉浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现
标准模式的排版 和 JS 运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。
在HTML4.01中<!doctype>声明指向一个DTD,由于HTML4.01基于SGML,所以DTD指定了标记规则以保证浏览器正确渲染内容 HTML5 不基于SGML,所以不用指定DTD
全局属性是所有HTML元素共有的属性;它们可以用于所有元素,即使属性可能对某些元素不起作用。
全局属性|MDN
canvas是html5提供的新元素,而svg存在的历史要比canvas久远,已经有十几年了。svg并不是html5专有的标签,最初svg是xml技术(超文本扩展语言,可以自定义标签或属性)描述二维图形的语言。在H5中看似canvas和svg很像,但是,它们有巨大的差别。
首先,从它们的功能上讲,canvas可以看做是一个画布。其绘制出来的图形为标量图,因此,可以在canvas中引入.jpg或.png这类格式的图片,在实际开发中,大型的网络游戏都是用canvas画布做出来的,并且canvas的技术现在已经相当娴熟。另外,我们喜欢用canvas来做一些统计用的图表,如柱状图曲线图或饼状图等。而svg,所绘制的图形为矢量图,所以其用法上受到了限制。因为只能绘制矢量图,所以svg中不能引入普通的图片,因为矢量图的不会失真效果,在项目中我们会用来做小图标。但是由于其本质为矢量图,可以被无限放大而不会失真,这很适合被用来做地图,而百度地图就是用svg技术做出来的。
另外从技术方面来讲canvas里面绘制的图形不能被引擎抓取,如我们要让canvas里面的一个图片跟随鼠标事件:canvas.onmouseover = function(){}。而svg里面的图形可以被引擎抓取,支持事件的绑定。另外canvas中我们绘制图形通常是通过JavaScript来实现,而svg更多的是通过标签来实现,如在svg中绘制正矩形,这里我们不能用属性style="width:xxx;height:xxx"来定义。
定义:CSS规范规定,每个元素都有 display 属性,确定该元素的类型,每个元素都有默认的 display 值,如 div 的 display 默认值为“block”,则为“块级”元素;span 默认 display 属性值为“inline”,是“行内”元素。
行内元素有:a b span img input select strong块级元素有:div ul ol li dl dt dd h1 h2 h3 ....p空元素: 常见:br hr img link input meta不常见:area base col command embed keygen param source track wbr不同浏览器(版本)、HTML4(5)、CSS2等实际略有差别 参考http://stackoverflow.com/questions/6867254/browsers-default-css-for-html-elements
主要分两部分:渲染引擎(layout engineer 或 Rendering Engine)和JS引擎。
渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后渲染到用户的屏幕上。
JS引擎:解析和执行 JavaScript 来实现逻辑和控制 DOM 进行交互。
最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于渲染引擎。
table的缺点在于服务器把代码加载到本地服务器的过程中,本来是加载一行执行一行,但是table标签是里面的东西全都下载完之后才会显示出来,那么如果图片很多的话就会导致网页一直加载不出来,除非所有的图片和内容都加载完。如果要等到所有的图片全部加载完之后才显示出来会影响网页的性能,所以table标签现在我们基本放弃使用了。
阻止用户手滑放大或缩小页面,需要在 index.html 中添加meta元素,设置viewport。
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">我们需要重置页面样式,因为在不同的手机浏览器上,默认的css样式不是统一的。解决方法:使用reset.css重置所有元素的默认样式
有的手机分辨率比较高,是2倍屏或3倍屏,手机上的浏览器就会把CSS中的1像素值展示为2个或3个物理宽度。解决方法:添加一个border.css库,将利用scroll缩放的原理将边框重置。当我们需要使用一像素边框时只需要在标签上添加类名,如设置底部一像素边框就在标签上加入“border-bottom”的class名
在移动端开发中,某些机型上使用click事件会延迟300ms才执行,这样影响了用户体验。解决方法:引入fastclick.js
给不想要提示的 form 或某个 input 设置为 autocomplete = off
localStorage 另一个浏览器上下文里被添加、修改、或删除时,它都会触发一个storage事件,我们通过监听事件,控制它的值来进行页面信息通信;
在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件。
原理:HTML5 的离线缓存是基于一个新建的 .appcache 文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像 cookie 一样被存储下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。
如何使用:
页面头部像下面一样加入一个 manifest 的属性;在 cache.manifest 文件的编写离线存储的资源 CACHE MANIFEST #v1.0 CACHE: js/app.js css/style.css NETWORK: assets/logo.png FALLBACK: /html5/ /404.html在离线状态时,操作 window.applicationCache 进行需求实现
使用iframe 之前需要考虑这两个缺点,如果需要使用 iframe,最好是通过JavaScript
动态给iframe添加src属性值,这样可以绕开以上两个问题。
label 标签来定义表单控制间的关系,当用户选择该标签是,浏览器会自动将焦点转到和标签相关的表单控件上。
<label for="Name">Number:</label> <input type=“text“name="Name" id="Name"/> <label>Date:<input type="text" name="B"/></label>转载于:https://www.cnblogs.com/zhen-prz/p/10636729.html