HTML
# href和src的区别重要
src
- 请求的资源会内嵌到元素当中,比如
img中的src指向的图片链接 - 请求的资源会应用到文档内如
script,浏览器会暂停其他资源下载 等待其加载 编译 执行完成
href
- 表示文本的引用,指向网络资源,建立和当前元素或本文档的链接关系
- 浏览器会并行下载,不会阻断其他资源的加载,如
a、link标签
# img的title和alt的区别
title通常当鼠标滑动到元素上的时候显示alt是<img>的特有属性,是图片内容的等价描述,用于图片无法加载时显示、读屏器阅读图片。可提图片高可访问性,除了纯装饰图片外都必须设置有意义的值,搜索引擎会重点分析。
# 语义化理解
根据内容的结构来选择合适的标签
优点
- 对机器友好,有利于
SEO有利于搜索引擎的爬虫爬取有效信息 - 对开发者友好,可以增强可读性,使结构清晰,便于维护
# DOCTYPE的作用
doctype
doctype是html5一种标准通用标记语言的文档类型声明,目的是告诉浏览器以什么是html或xhtml)的文档类型来解析文档,不同的渲染模式会影响浏览器的css和js的解析
来自 MDN文档
有两种模式(通过document.compatMode获取)
CSS1Compat: 严格/标准模式(strict mode),默认浏览器用W3C标准解析,以其支持的最高标准呈现页面<!doctype html>作用就是让浏览器进入标准模式BackCompat:怪异模式(quick mode)使用怪异模式解析渲染,以一种比较宽松的向后兼容的方式显示
区分这两种模式
网页中的DTD,直接影响是什么模式
如果文档包含严格的
DOCTYPE,就一般以严格模式呈现(严格DTD--- 严格模式)包含过渡
DTD和URI的DOCTYPE,也以严格模式,但有过渡DTD没有URI(统一资源标识符,就是声明最后的地址),就以混杂模式呈现(有URI的过渡DTD——严格模式;没有URI的过渡DTD——混杂模式)没有
doctype或形式不正确会以混在模式呈现html5没有DTD就没有严格模式和混杂模式的区别
# Script中的defer和async 非常重要
共同点: 都是异步加载外部的js,加载时不会阻塞页面的解析
不同点:
执行顺序不同
- 多个带有
async属性的标签,不能保证执行的顺序,加载完就执行,有可能会阻塞html的渲染 - 多个带有
defer属性的标签,可以保证执行的顺序
脚本是否并行执行
async表示后续文档的加载和执行 与js脚本的加载执行 是并行的(一般是计数器或者广告)defer加载文档和js脚本的加载是并行的 但是js脚本要等到文档所有元素解析完成后执行 即DOMContentLoaded之前执行(一般是对执行顺序很重要的)
# 浏览器产生乱码的原因是什么
- 网页源代码是
gbk编码,内容的中文是utf-8编码,这样浏览器打开会出现html乱码 html网页编码是gbk,程序从数据库调出呈现是utf-8编码的内容也会造成编码乱码- 浏览器不能自动监测网页编码,造成网页乱码
解决办法
使用软件编辑
html网页内容如果网页编码为
gbk,数据库存储的是utf-8需要程序 查询 数据库数据 前进行 程序转码浏览器找到转换编码的菜单
# iframe优缺点重要
iframe会创建包含另一个文档的内联框架
优点:
用来加载速度比较慢的内容(广告)
使脚本并行下载
实现跨子域通信
缺点:
iframe会阻塞主页面onload事件无法被搜索引擎识别
产生很多页面不易管理
iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载
使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript动态给iframe添加src属性值,这样可以绕开以上两个问题
# title和h1的区别 b和strong的区别 i和em的区别
strong有语义化起到加重语气的效果,b只是简单地加粗,搜索引擎更侧重strongtitle没有明确意义只是标题h1表示层次明确的标题,对信息抓取有很大影响i内容展示为斜体,em表示强调的文本
# 行内元素,块级元素,空元素有哪些
行内元素有:a b span img input select strong
块级元素有: div ul ol li dl dt dd h1-h6 p
行内块元素(行内可替换元素) img input
空元素就是没有内容的html: 常见的有br hr img input link meta
# canvas和svg的区别重要
SVG概念
svg是基于xml描述的2d图形的语言,svg dom中的每个元素都是可用的,可以为某个元素附加js事件处理器,在svg中,每个被绘制的图形都可被视为对象,如果svg对象属性发生变化,浏览器可以自动重现图形
特点
不依赖分辨率
支持事件处理器
适合大型渲染区域应用如
google地图复杂度高会减慢渲染速度(任何过度使用
dom的应用都不快)不适合游戏应用
canvas概念
canvas是画布,通过js绘制2d图形,逐像素渲染,位置改变就重新绘制
特点
依赖分辨率
不支持事件处理器
弱文本渲染能力
可以以
.png.jpg保存结果图像适合图像密集型游戏
# 常见的meta标签
meta
由name和content属性定义,用户描述网页文档的属性
charset用于描述html编码类型
<meta charset="UTF-8" >
keywords页面关键词
<meta name="keywords"content="关键词" />
description页面描述
<meta name="description"content="页面描述内容" />
refresh页面的重定向和刷新
<meta http-equiv="refresh"content="0;url="" />
viewport适配移动端 可控制视口大小和比例
<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)
robot搜索引擎索引方式
<meta name="robots"content="index,follow" />
其中,
content参数有以下几种:all:文件将被检索,且页面上的链接可以被查询;none:文件将不被检索,且页面上的链接不可以被查询;index:文件将被检索;follow:页面上的链接可以被查询;noindex:文件将不被检索;nofollow:页面上的链接不可以被查询。
# head标签有什么用
用于定义文档头部,可以引用脚本、样式表
下列标签可以用于head
<base><link><meta><script><style><title>唯一必须元素
# label的作用
当选择
label标签时,浏览器会将焦点转到和label标签相关的表单控件上
两种使用方法
label里面的for与id的值相同
<label for="mobile">Number:</label>
<input type="text" id="mobile"/>
2
label包裹着input标签
<label>Date:<input type="text"/></label>
# img的srcset属性的作用
响应式页面根据屏幕密度不同设置不同的图片
<img src="/Users/xiaosong/Downloads/image-128.png" srcset="image-256.png 2x" />
上述代码在1x时候加载image-128.png 在 2x的时候加载imges-256.png,现在有1x 2x 3x 4x 每一个图片都设置4张图片加载就会很慢,于是有了新的srcset标准
<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设置图片的尺寸临界点
语法:sizes="[media query] [length], [media query] [length] ... "
sizes就是指默认显示128px, 如果视区宽度大于360px, 则显示340px。w单位理解为图片质量,可视区小于这个质量的值就会使用
# html5新特性
媒体标签
audio:音频
<audio src='' controls autoplay loop='true'></audio>
属性:
controls控制面板autoplay自动播放loop="true"循环播放video:视频
<video src=''poster='imgs/aa.jpg'controls></video>
属性:
poster指定视频还没下载完毕,用户尚未点击播放前显示的封面,默认为第一帧,也可以自己设置controls控制面板widthheightsource标签,兼容浏览器
<video>
<source src='aa.flv'type='video/flv' />
<source src='aa.mp4'type='video/mp4' />
</video>
2
3
4
表单
emails验证当前输入邮箱地址是否合法url验证urlnumber只能输入数字,自带上下增大减小箭头,maxmin分别设置最大最小search输入框最后会有一个小×,可以删除输入range提供一个范围,其中可以设置max和min以及value,value为默认值color提供颜色拾取器time时分秒date日期选择年月日datetime时间和日期(只支持Safari)datetime-local日期时间控件week周控件month月控件
表单的属性
placeholder提示信息autofocus自动获取焦点autocomplete="on"或off需要表单提交过和有name属性 才能生效required输入框不得为空pattern正则表达式(手机号:patte="^(+86)?\d{10}$")multiple可选择多个文件或者多个邮箱form="form表单的id"
表单事件
oninput当输入框内容发生变化触发onvalid当验证不通过时触发- `进度条、度量条
progress标签:表示任务的进度(ie,Safari不支持),max表示任务的进度,value表示已完成多少meter显示剩余容量或剩余库存high/low:高低范围max/min: 最大/小值value: 当前度量衡
drag api
dragstart事件主体是被拖放元素,再开始拖放被拖放元素时触发drag事件的主体是被拖放的元素,正在被拖放元素时触发dragenter事件主体是目标元素,在被拖放元素进入某元素时触发dragover事件主体是目标元素,再被拖放元素内移动时触发dragleave事件的主体是目标元素,在被拖放元素移除目标时触发drop事件主体是被拖放元素,在目标元素完全接收被拖放元素时触发- 事件主体是被拖放元素,在整个拖放操作结束时触发
# 前端需要注意哪些SEO 重要
- 合理的
title、description、keywords:搜索对着三项的权重逐个减小,title值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title要有所不同;description把页面内容高度概括,长度合适,不可过分堆砌关键词,不同页面description有所不同;keywords列举出重要关键词即可 - 语义化的
HTML代码,符合W3C规范:语义化代码让搜索引擎容易理解网页 - 重要内容
HTML代码放在最前:搜索引擎抓取HTML顺序是从上到下,有的搜索引擎对抓取长度有限制,保证重要内容一定会被抓取 - 重要内容不要用
js输出:爬虫不会执行js获取内容 - 少用
iframe:搜索引擎不会抓取iframe中的内容 - 非装饰性图片必须加
alt - 提高网站速度:网站速度是搜索引擎排序的一个重要指标
# HTML5的离线储存怎么使用,工作原理能不能解释一下?
- 在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件
- 原理:
HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示 - 如何使用:
- 页面头部像下面一样加入一个
manifest的属性; - 在
cache.manifest文件的编写离线存储的资源 - 在离线状态时,操作
window.applicationCache进行需求实现
- 页面头部像下面一样加入一个
CACHE MANIFEST
#v0.11
CACHE:
js/app.js
css/style.css
NETWORK:
resourse/logo.png
FALLBACK:
/offline.html
2
3
4
5
6
7
8
9
# 浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢
- 在线的情况下,浏览器发现
html头部有manifest属性,它会请求manifest文件,如果是第一次访问app,那么浏览器就会根据manifest文件的内容下载相应的资源并且进行离线存储。如果已经访问过app并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储。 - 离线的情况下,浏览器就直接使用离线存储的资源。