1、你是怎么理解HTML语义化
HTML语义化简单来说就是用正确的标签来做正确的事。比如表示段落用 p 标签、表示标题用 h1-h6 标签、表示文章就用 article
复制代码
使用语义化标签的意义:
可访问性:帮助辅助技术更好的阅读和转译你的网页,利于无障碍阅读;
可检索性:有了良好的结构和语义,可以提高搜索引擎的有效爬取,提高网站流量
国际化:全球只有13%的人口是英语母语使用者,因此通用的语义化标签可以让各国开发者更容易弄懂你网页的结构
互用性:减少网页间的差异性,帮助其他开发者了解你网页的结构,方便后期开发和维护
2、BFC及其应用(重点)__外边距塌陷
BFC (块级格式化上下文)让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响
触发条件:
根元素
浮动元素:float 除 none 以外的值(left、right)
绝对定位元素:position (absolute、fixed)
display 为 inline-block、table-cells、flex
overflow 除了 visible 以外的值 (hidden、auto、scroll)
约束规则:
属于同一个BFC区域的两个相邻的盒子垂直排列、margin发生重叠
BFC区域不会和flot的元素区域重叠
计算BFC高度时,浮动盒子元素也参与计算
文字层不会被浮动层覆盖,会环绕于周围
作用:
阻止元素被浮动元素覆盖
可以包含浮动元素(清除浮动)
阻止相邻元素的margin合并
3、水平垂直居中(重点)
子盒子元素固定宽高
absolute + 负margin
absolute + margin auto
absolute + calc
子盒子固定宽高
absolute + transform
lineheight
table
flex
display: grid;
display: table-cell;
4、meta viewport 是做什么用的,怎么写
目的:是为了在移动端不让用户缩放页面使用的
如何写:
每个词的意思
with=device-width 将布局视窗(layout viewport)的宽度设置为设备屏幕分辨率的宽度
initial-scale=1 页面初始缩放比例为屏幕分辨率的宽度
maximum-scale=1 指定用户能够放大的最大比例
minimum-scale=1 指定用户能够缩小的最大比例
5、行内元素有哪些?块级元素有哪些?空(void)元素有那些?
CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素;span默认display属性值为“inline”,是“行内”元素。
常用的块状元素有:<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>
常用的内联元素有:<a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>
常用的内联块状元素有:
<img>、<input>
知名的空元素:<br/> <hr/> <img/> <input/> <link/> <meta/> <br />
6、iframe有哪些缺点?
iframe是一种框架,也是一种很常见的网页嵌入方
iframe的优点:
原封不动的把嵌入的网页展现出来
如果有多个网页引用iframe,那么你只需要修改iframe的内容,就可以实现调用的每一个页面内容的更改,方便快捷。
用iframe来嵌套,可以增加代码的可重用。
iframe的缺点:
会产生很多页面,不容易管理
如果框架个数多的话,可能会出现上下、左右滚动条,会分散访问者的注意力,用户体验度差
代码复杂,无法被一些搜索引擎索引到,不利于搜索引擎优化
移动设备兼容性差
增加http请求
7、HTML5新特性
拖放(Drag 和 drop)onmousedown、onmousemove
地理定位getCurrentPosition()有两个回调函数参数,获取地理位置成功的回调和失败的回调
离线存储
Web 存储localStorage、sessionStorage
Web Workers是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能
语义化标签
8、script标签为什么要放在body标签的底部,【defer async】
因为浏览器在渲染html的时候,从上到下依次执行,遇到js文件就会停止当前页面的渲染,转而去下载js文件,如果将script标签放在头部,如果文件又很大的情况下,首屏时间就会延长,影响用户体验。解决方法:
defer\async的区别 首先都是让js文件能够异步下载,不阻塞页面的渲染 区别就是defer必须等待整个文档渲染完成后才执行 而async在下载完成后,会暂停html的解析,转去执行js
9、src 和 href的区别
href是超文本引用,它指向资源的位置,建立与目标文件之间的联系
src目标是把资源下载到页面中 浏览器解析方式 href 不会阻塞对文档的处理(这就是官方建议使用link引入而不是@import) src 会阻塞对文档的处理
10、DOCTYPE 标签
防止浏览器在渲染文档时,切换到我们称为“怪异模式(兼容模式)”的渲染模式。“”,确保浏览器按照最佳的相关规范进行渲染,而不是使用一个不符合规范的渲染模式。
Doctype声明于文档最前面,告诉浏览器以何种方式来渲染页面,这里有两种模式,严格模式和混杂模式。
严格模式的排版和JS 运作模式是 以该浏览器支持的最高标准运行。
11、清除浮动(重点)
1、使用clear:both清除浮动
它的优点是简单,方便兼容性好,但是一般情况下不建议使用该方法,因为会造成结构混乱,不利于后期维护
2、利用伪元素clearfix来清除浮动
给父级元素添加了一个:after伪元素,通过清除伪元素的浮动,达到撑起父元素高度的目的
3、使用CSS的overflow属性
当给父元素设置了overflow样式,不管是overflow:hidden或overflow:auto都可以清除浮动只要它的值不为visible就可以了,它的本质就是建构了一个BFC,这样使得达到撑起父元素高度的效果
12、 Less/Sass/Scss的区别
Scss其实是Sass的改进版本
Less环境较Sass简单
变量符不一样,Less是@,而Sass是$,而且变量的作用域也不一样。
Sass支持条件语句,可以使用if{}else{},for{}循环等等。而Less不支持。
Sass和Less的工具库不同
网络、性能优化
1、跨域
啥是跨域:协议,域名,端口不相同,就不能相互访问,浏览器对js的安全限制
跨域带来的影响:
Cookie、LocalStorage 和 IndexDB 无法读取
DOM 和 JS 对象无法获取
Ajax请求发送不出去
跨域的解决办法:
jsonp跨域,动态的创建script标签,再去请求一个带参网址来实现跨域通信
jquery:dataType:’jsonp’只能发送GET请求
跨域资源共享 CORS,CORS支持所有类型的HTTP请求
node、nginx代理跨域
vue中proxy属性
2、 HTTP和HTTPS的区别(必考)
HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头
HTTP 是明文传输,HTTPS 通过 SSL\TLS 进行了加密
HTTP 的端口号是 80,HTTPS 是 443
HTTPS 需要到 CA 申请证书,一般免费证书很少,需要交费
HTTP 的连接很简单,是无状态的
HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
3、HTTP的状态码说一下
200(“OK”) 服务器已成功处理了请求
204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
301 请求的网页已永久移动到新位置
302Found 重新加载,但由于是重定向
400(“Bad Request”)(错误请求) 服务器不理解请求的语法。
500(“Internal Server Error”) 服务器遇到错误,无法完成请求
403 资源没有权限访问
401未经授权:访问由于凭据无效被拒绝
404(“Not Found”) 服务器找不到请求的网页。
410如果请求的资源已永久删除
408 (请求超时)