说说HTML5

看了伯乐在线里的一篇文章,自己面试的时候也被问到了.挑了重点来记录记录.点击查看


为什么HTML5里面我们不需要DTD(Document Type Definition)?

首先,我看到这个问题第一反应就是因为HTML5不基于SGML了,但是一下子对SGML记忆有点模糊了,所以就码了上一篇文章.

HTML5没有使用SGML或者XHTML,因此不用考虑DTD,只需要放置<!DOCTYPE html>这个文档类型告诉浏览器这是HTML5文档

那么我不放<!DOCTYPE html>,HTML5还会正常工作吗?
肯定不会啦,HTML5就这行文档类型声明,你都不放,浏览器不知道是HTML文档,浏览器可能会开启怪异模式,同时HTML5的标签将不能工作


HTML5中哪个是输出元素?

output
来看看W3C的demo

<form oninput="x.value=parseInt(a.value)+parseInt(b.value)">0
   <input type="range" id="a" value="50">100
   +<input type="number" id="b" value="20">
   =<output name="x" for="a b"></output>
</form>

HTML5的新特性真的太好玩了...



HTML5中datalist是什么?

就是有助于提供文本框自动完成特性的
来看看W3C的demo

<input id="myCar" list="cars" />
<datalist id="cars">
  <option value="BMW">
  <option value="Ford">
  <option value="Volvo">
</datalist>

其实跟input的autocomplete的字段自动完成功能是一样的,有on何off值,注意!一定要有name属性

<form>
    <input type="text" name="hhh" autocomplete="on">
</form>

效果一样的



下面要说一下canvas了!

HTML5中重头戏了,现在介绍一下简单的画一条线.

1.首先定义HTML5标签

<canvas id="cv"></canvas>

2.获取画布区域的访问

var canvas=document.querySelector('#cv');
canvas.width=500;
canvas.height=500;
canvas.style.border='1px solid red';
var ctx=cv.getContext('2d');

3.接下来就是编写javascript代码了,定义好开始的x,y和终点的x,y,样式,距离

var Line=function(options){
  this.ctx=options.ctx;
  this.startX=options.startX||0;
  this.startY=options.startY||0;
  this.endX=options.endX||0;
  this.endY=options.endY||0;
  this.style=options.style;
  this.lineWidth=options.lineWidth;
};

4.因为这些都是不变的方法,可以把它放到prototype里面

Line.prototype={
  constructor:Line,
  stroke:function(){
    var ctx=this.ctx;
    ctx.beginPath();//先开辟新路径
    ctx.moveTo(this.startX,this.startY);//起点
    ctx.lineTo(this.endX,this.endY);//终点

    if (this.style){
      ctx.strokeStyle=this.style;//颜色
    }else {
      ctx.strokeStyle='#000';//默认颜色
    }

    if (this.lineWidth){
      ctx.lineWidth=this.lineWidth;//线条宽度
    }else {
      ctx.linewidth=1;//默认线条宽度
    }

      ctx.stroke();//开始绘制
    }
};

5.最后生成实例

var len1=new Line({
  ctx: ctx,
  startX: 100,
  startY: 100,
  endX: 200,
  endY: 200,
  style: "red",
  lineWidth: 5
});
len1.stroke();

看看效果



对就是这样的,还有很多很有意思的玩法,以后会更新到新的文章


如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5

首先解决HTML5新标签浏览器兼容问题的话,除了用一些框架以外,IE6/IE7/IE8支持通过document.createElement来创建标签,可以利用这个特性让浏览器支持HTML5标签,但是要手动添加标签默认样式

如何区分HTML5:

  • DOCTYPE声明
  • 新增的结构标签
  • 功能元素

对HTML语义化的理解

我觉得这种问题好无聊,但是总有人喜欢问这种问题,既然都说了语义化了,顾名思义那就是语义化啊
比如header标签你就写头部代码啊,footer就写页脚代码啊,正确的标签做正确的事情,让代码结构化呀,让计算机知道你在写什么鬼啊,更好解析你写的东西呀,那这样不就利于SEO了么,对搜索引擎爬虫的友好呀,隔段时间回来看这代码还能知道这是你写的,也方便别人来看你写的代码呀

好吧,可能有更加高深的理解我还没有领悟到,我只能解释到这了


HTML5中的应用缓存,如何实现应用缓存

什么是应用缓存?缓存就是你在没有网路的情况下也可以访问的东西,比如有人问你或者面试官问你,如何做网站性能优化,你就可以说上这一条

缓存减少了HTTP请求,加快了加载资源的速度,用户可以在无网络的情况下使用它,浏览器只用下载更新过的资源

**
原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来.之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示**

如何创建?
1.先创建一个manifest文件,建议后缀使用.appcache
2.就是通过html标签的manifest属性创建application cache,引入你的manifest文件,每个指定了manifest的页面,在用户访问时都会被你定制的规则来缓存

<html manifest="test.appcache">

3.现在来看看manifest文件里面怎么写

CACHE MANIFEST
version:2.1.7
CACHE:  
    应用缓存.html
    test.css

注意,第一行CACHE MANIFEST一定不要写错,它告知浏览器被缓存的内容

然后写上CACHE:
下面写上你要缓存的文件

然后要更新缓存的文件,通过修给version的版本号进行刷新

manifest文件主要分成三部分

  • CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存
  • NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存
  • FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)

4.看看html先

<!DOCTYPE html>
<html lang="en" manifest="test.appcache">
<head>
    <meta charset="UTF-8">
    <title>apply cache</title>
    <link rel="stylesheet" type="text/css" href="test.css">
</head>
<body>
    <p>这是被缓存的样式</p>
</body>
</html>

5.你外链的样式

p{
    color: red;
}

现在看看效果,注意!要用服务器打开,file打开是无效的


我现在把字体颜色修改一下,传说中的骚粉色

p{
    color: hotpink;
}

再看看,连上网之后无论怎么刷新都没有改变



因为没有修改版本号呀!!现在去修改一下

CACHE MANIFEST
version:2.1.8
CACHE:  
    应用缓存.html
    test.css

再看看



更新了!一般工作上就会用来缓存页面的样式和比如你写了个秒表,离线的时候也能用,注意这里说的是一般工作上

一旦文件被缓存,则浏览器会继续展示已缓存的版本,即使您修改了服务器上的文件,要记得修改版本号啊!

还有就是刚刚在Firefox打开它是这样说的



为什么呢?我觉得应该是这样的:

1.每一次更新资源,都要手动的去更改版本号
2.在web app中比较有用,普通pc端来说没什么意义
3.对于hybird来说,也没有意义,通过manifest只能更新css文件,而js文件不能更新
4.你的用户每次打开都是旧的页面,需要用户强行刷新一遍的话,可想而知,交互设计师和产品经理真的会拿刀过来的,那如果不刷新的话,运营那边上了个新的banner,然而需要用户第二次刷新才能看到...我觉得运营也会真的会拿刀过来的哈哈哈
(参考自知乎)

后期更新Serviceworker


<meta http-equiv='X-UA-compatible' content='IE=edge'>

看看这道无聊的题目

<meta http-equiv='X-UA-compatible' content='IE=edge'>


http-equiv就是把content 属性关联到 HTTP 头部

再看compatible,就是兼容,那么content里面的就是兼容条件了

content='IE=edge'就是edge按照最新引擎标准来渲染页面


<meta http-equiv = "X-UA-Compatible" content = "IE=7,IE=9" >

<meta http-equiv = "X-UA-Compatible" content = "IE=7,9" >

以上代码是告诉IE浏览器,IE8/9及以后的版本都会以最高版本的IE标准来渲染页面


strong和em

strong从样式来看是加粗

em从样式来看是斜体

strong是强调的意思,那么SEO会觉得strong比b标签和i标签要重要

em和i都是斜体,但是em是逻辑元素,i是物理元素!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容