这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战
HTML
H5新特性(9个)
- 画布(canvas)
- 地理位置API
- 音频、视频API(audio/video)
- 拖拽、释放API(drag/drop)
- 增强型表单功能
- 语义化标签
- WebStorage: localStorage和sessionStorage
- 全双工通信webScoket
- SVG绘画
拓展
- 语义化标签
- header、nav、article、aside、section、footer
- localStorage:本地存储
生命周期是永久,除非用户清除localStorage,否则信息永久存在
- 使用方式:windows.localStorage
- sessionStorage: 会话存储
生命周期:当前窗口或标签页。一旦关闭,那么所有通过它存储的数据就清空了。(同源页面数据不会消除)
- 使用方式:windows.sessionStorage
- H5:webStorage 与 H4:cookies对比
- 改善了大小(4KB -> 5MB)和带宽(不用每次都进行传递,节省了带宽)
2种实现前端路由的方式
- history
- hash
拓展
- 前端路由:URL与内容之间的映射关系
- hash模式:VueRouter默认使用,地址栏有#,兼容性更好
- history模式:更美观(地址栏没有#)
- 两者都需后端支持
- 设置方式
// history模式 var router = new VueRouter({ mode: 'history', ... }) // hash默认,不需要设置mode,监听hash变化即可 hashChange()
- 前端路由在访问一个新页面时,只变换了路径,没有网络延迟,对用户体验有较大的提升
- H5新增2个history的API
history.pushState()history.replaceState()
浏览器渲染原理
- 浏览器将获取的HTML文档解析成DOM树
- 处理CSS,构成层叠样式表模型(CSS Object Model)
- 将DOM和CSSOM合并为渲染树
- 渲染树的每个元素包含的内容都是计算过的,称为layout布局。浏览器使用一种流式处理的方式,只需一次绘制操作就可布局所有元素。
- 将渲染树的各个节点绘制到屏幕上,painting
拓展
- 用户在浏览网页时进行“交互”或通过“js脚本”改变页面结构时,以上操作有可能重复运行,此过程Repaint(重绘) 或 Reflow(重排)
- 重排一定会重绘
- 重绘不一定重排
- 问题:什么操作会引起重排或重绘?
- 重排:页面第一次渲染、Dom树变化、浏览器窗口resize、获取元素某些属性、
display:none - 重绘:背景色、颜色、字体改变、
visibility: hidden
- 重排:页面第一次渲染、Dom树变化、浏览器窗口resize、获取元素某些属性、
- 问题:如何减少重排?
- 将其position设为absolute或fixed,脱离文档流,变化不会影响到其他元素
label的作用是什么?
- 用来定义表单控制间的关系。
- 当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上
<!-- 通过使用 "for" 属性将 label 绑定到另一个元素 -->
<label for="name">Number:</label>
<input type="text" id="name"/>
<!-- 或者直接在 label 元素内部放置元素。 -->
<label>Date:<input type="text" name="B"/></label>
HTML5的form如何关闭自动完成功能?
- 给不想要提示的 form 或某个 input 设置为
autocomplete=off - 指定autocomplete属性以启用(或禁用)表单中的自动填充功能。
页面可见性(Page Visibility API)的用途
- 通过visibilityState的值检测页面是否可见,以及打开网页的时间
- 在页面切换到其他后台进程时,自动暂停音乐或者视频播放、轮播图
- 对于节省资源和提高性能特别有用,它使页面在文档不可见时避免执行不必要的任务
- 监听事件visibilityChange 属性:document.hidden(只读)
实现不使用border画出1px高的线,在不同浏览器的标准模式与怪异模式下都能保持⼀致的效果。
<div
style="height: 1px; overflow: hidden; background-color: aqua;"
></div>
- 标准模式:符合W3C标准,width = content
- 怪异模式: width = content + border + padding
- 设置
box-sizing: border-box
- 设置
拓展
- overflow: hidden
- 内部元素的加载高度超过父级,出现溢出效果隐藏
.title与h1的区别、b与strong的区别、i与em的区别?
- title属性: 没有明确意义只表示是个标题
- H1: 层次明确的标题,对页面信息的抓取也有很大的影响
- strong: 标明重点内容,有语气加强的含义,使用阅读设备阅读网络时会重读
- B:展示强调内容
- i:内容展示为斜体
- em: 强调文本
拓展
- 自然样式标签
- b\i\u\s\pre
- 语义样式标签
- strong\em\ins\del\code
- 应该正确使用语义样式标签,但不能滥用,如果不能确定时首选使用自然样式标签