摘要:的新特性文件类型声明仅有一型。新的技术新的属性用于与用于用于。
1.html5的新特性
文件类型声明()仅有一型:。
新的解析顺序:不再基于SGML。
绘画 canvas;
用于媒介回放的 video 和 audio 元素;
语意化更好的内容元素:article、footer、header、nav、section;
表单控件:calendar、date、time、email、url、search;
input元素的新类型:date, email, url等。
新的技术: webworker, websocket, Geolocation;
新的属性:ping(用于a与area), charset(用于meta), async(用于script)。
全域属性:id, tabindex, repeat。
新的全域属性:contenteditable, contextmenu, draggable, dropzone, hidden, spellcheck。
新应用程序接口:
HTML Geolocation
HTML Drag and Drop
HTML Local Storage
HTML Application Cache
HTML Web Workers
HTML SSE
HTML Canvas/WebGL
HTML Audio/Video
移除的元素:
纯表现的元素:basefont,big,center,font, s,strike,tt,u;
对可用性产生负面影响的元素:frame,frameset,naframes;
retina:一种具备超高像素密度的液晶屏,同样大小的屏幕上显示的像素点由1个变为多个,如在同样带下的屏幕上,苹果设备的retina显示屏中,像素点1个变为4个
在高清显示屏中的位图被放大,图片会变得模糊,因此移动端的视觉稿通常会设计为传统PC的2倍
那么,前端的应对方案是:
设计稿切出来的图片长宽保证为偶数,并使用backgroud-size把图片缩小为原来的1/2
//例如图片宽高为:200px*200px,那么写法如下
.css{width:100px;height:100px;background-size:100px 100px;}
其它元素的取值为原来的1/2,例如视觉稿40px的字体,使用样式的写法为20px
.css{font-size:20px}3.ios系统中元素被触摸时产生的半透明灰色遮罩怎么去掉?
ios用户点击一个链接,会出现一个半透明灰色遮罩, 如果想要禁用,可设置-webkit-tap-highlight-color的alpha值为0,也就是属性值的最后一位设置为0.X就可以去除半透明灰色遮罩
a,button,input,textarea{-webkit-tap-highlight-color: rgba(0,0,0,0.X)}
android用户点击一个链接,会出现一个边框或者半透明灰色遮罩, 不同生产商定义出来额效果不一样,可设置-webkit-tap-highlight-color的alpha值为0去除部分机器自带的效果
a,button,input,textarea{ -webkit-tap-highlight-color: rgba(0,0,0,0;) -webkit-user-modify:read-write-plaintext-only; }
-webkit-user-modify有个副作用,就是输入法不再能够输入多个字符
另外,有些机型去除不了,如小米2
对于按钮类还有个办法,不使用a或者input标签,直接用div标签
通用
.css{-webkit-appearance:none;}
伪元素改变number类型input框的默认样式
input[type=number]::-webkit-textfield-decoration-container { background-color: transparent; } input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; } input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; }6.webkit表单输入框placeholder的颜色值能改变么
input::-webkit-input-placeholder{color:#AAAAAA;} input:focus::-webkit-input-placeholder{color:#EEEEEE;}7.禁止ios 长按时不触发系统的菜单,禁止ios&android长按时下载图片
.css{-webkit-touch-callout: none}
8.禁止ios和android用户选中文字
.css{-webkit-user-select:none}9.打电话发短信写邮件怎么实现
打电话:打电话给:0755-10086
发短信,winphone系统无效 发短信给: 10086
写邮件:peun@foxmail.com
应对方案:触屏即播
$("html").one("touchstart",function(){ audio.play() })11.闪屏怎么解决
通过transform的3d属性改去硬件加速可以解决闪屏问题
开启硬件加速
1)解决页面闪白
2)保证动画流畅
.css { -webkit-transform: translate3d(0, 0, 0); -moz-transform: translate3d(0, 0, 0); -ms-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); }12.取消input在ios下,输入的时候英文首字母的默认大写
13.android 上去掉语音输入按钮
input::-webkit-input-speech-button {display: none}14.设计高性能CSS3动画的几个要素
尽可能地使用合成属性transform和opacity来设计CSS3动画
不使用position的left和top来定位
利用translate3D开启GPU加速
ios下fixed元素容易定位出错,软键盘弹出时,影响fixed元素定位
android下fixed表现要比iOS更好,软键盘弹出时,不会影响fixed元素定位
ios4下不支持position:fixed
解决方案
可用isroll.js,暂无完美方案
1)PC优化手段在Mobile侧同样适用
2)在Mobile侧我们提出三秒种渲染完成首屏指标
3)基于第二点,首屏加载3秒完成或使用Loading
4)基于联通3G网络平均338KB/s(2.71Mb/s),所以首屏资源不应超过1014KB
5)Mobile侧因手机配置原因,除加载外渲染速度也是优化重点
6)基于第五点,要合理处理代码减少渲染损耗
7)基于第二、第五点,所有影响首屏加载和渲染的代码应在处理逻辑中后置
8)加载完成后用户交互使用时也需注意性能
[加载优化]
加载过程是最为耗时的过程,可能会占到总耗时的80%时间,因此是优化的重点
因为手机浏览器同时响应请求为4个请求(Android支持4个,iOS 5后可支持6个),所以要尽量减少页面的请求数,首次加载同时请求数不能超过4个
a) 合并CSS、JavaScript
b) 合并小图片,使用雪碧图
使用缓存可以减少向服务器的请求数,节省加载时间,所以所有静态资源都要在服务器端设置缓存,并且尽量使用长Cache(长Cache资源的更新可使用时间戳)
a) 缓存一切可缓存的资源
b) 使用长Cache(使用时间戳更新Cache)
c) 使用外联式引用CSS、JavaScript
减少资源大小可以加快网页显示速度,所以要对HTML、CSS、JavaScript等进行代码压缩,并在服务器端设置GZip
a) 压缩(例如,多余的空格、换行符和缩进)
b) 启用GZip
写在HTML头部的JavaScript(无异步),和写在HTML标签中的Style会阻塞页面的渲染,因此CSS放在页面头部并使用Link方式引入,避免在HTML标签中写Style,JavaScript放在页面尾
部或使用异步方式加载
首屏的快速显示,可以大大提升用户对页面速度的感知,因此应尽量针对首屏的快速显示做优化
将不影响首屏的资源和当前屏幕资源不用的资源放到用户需要时才加载,可以大大提升重要资源的显示速度和降低总体流量
PS:按需加载会导致大量重绘,影响渲染性能
a) LazyLoad
b) 滚屏加载
c) 通过Media Query加载
大型重资源页面(如游戏)可使用增加Loading的方法,资源加载完成后再显示页面。但Loading时间过长,会造成用户流失
对用户行为分析,可以在当前页加载下一页资源,提升速度
a) 可感知Loading(如进入空间游戏的Loading)
b) 不可感知的Loading(如提前加载下一页)
图片是最占流量的资源,因此尽量避免使用他,使用时选择最合适的格式(实现需求的前提下,以大小判断),合适的大小,然后使用智图压缩,同时在代码中用Srcset来按需显示
PS:过度压缩图片大小影响图片显示效果
a) 使用智图( http://zhitu.isux.us/ )
b) 使用其它方式代替图片(1. 使用CSS3 2. 使用SVG 3. 使用IconFont)
c) 使用Srcset
d) 选择合适的图片(1. webP优于JPG 2. PNG8优于GIF)
e) 选择合适的大小(1. 首次加载不大于1014KB 2. 不宽于640(基于手机屏幕一般宽度))
Cookie会影响加载速度,所以静态资源域名不使用Cookie
重定向会影响加载速度,所以在服务器正确设置避免重定向
第三方资源不可控会影响页面的加载和显示,因此要异步加载第三方资源
处理不当会阻塞页面加载、渲染,因此在使用时需当注意
CSS写在头部,JavaScript写在尾部或异步
避免图片和iFrame等的空Src
空Src会重新加载当前页面,影响速度和效率
重设图片大小是指在页面、CSS、JavaScript等中多次重置图片大小,多次重设图片大小会引发图片的多次重绘,影响性能
DataURL图片没有使用图片的压缩算法文件会变大,并且要解码后再渲染,加载慢耗时长
* 尽量避免写在HTML标签中写Style属性
* 避免CSS表达式
CSS表达式的执行需跳出CSS树的渲染,因此请避免CSS表达式
* 移除空的CSS规则
空的CSS规则增加了CSS文件的大小,且影响CSS树的执行,所以需移除空的CSS规则
* 正确使用Display的属性
Display属性会影响页面的渲染,因此请合理使用
a) display:inline后不应该再使用width、height、margin、padding以及float
b) display:inline-block后不应该再使用float
c) display:block后不应该再使用vertical-align
d) display:table-*后不应该再使用margin或者float
* 不滥用Float
Float在渲染时计算量比较大,尽量减少使用
* 不滥用Web字体
Web字体需要下载,解析,重绘当前页面,尽量减少使用
* 不声明过多的Font-size
过多的Font-size引发CSS树的效率
* 值为0时不需要任何单位
为了浏览器的兼容性和性能,值为0时不要带单位
* 标准化各种浏览器前缀
a) 无前缀应放在最后
b) CSS动画只用 (-webkit- 无前缀)两种即可
c) 其它前缀为 -webkit- -moz- -ms- 无前缀 四种,(-o-Opera浏览器改用blink内核,所以淘汰)
* 避免让选择符看起来像正则表达式 高级选择器执行耗时长且不易读懂,避免使用
* 减少重绘和回流
a) 避免不必要的Dom操作
b) 尽量改变Class而不是Style,使用classList代替className
c) 避免使用document.write
d) 减少drawImage
* 缓存Dom选择与计算
每次Dom选择都要计算,缓存他
* 缓存列表.length
每次.length都要计算,用一个变量保存这个值
* 尽量使用事件代理,避免批量绑定事件
* 尽量使用ID选择器
ID选择器是最快的
* TOUCH事件优化
使用touchstart、touchend代替click,因快影响速度快。但应注意Touch响应过快,易引发误操作
* HTML使用Viewport
Viewport可以加速页面的渲染,请使用以下代码
* 减少Dom节点
Dom节点太多影响页面的渲染,应尽量减少Dom节点
* 动画优化
a) 尽量使用CSS3动画
b) 合理使用requestAnimationFrame动画代替setTimeout
c) 适当使用Canvas动画 5个元素以内使用css动画,5个以上使用Canvas动画(iOS8可使用webGL)
* 高频事件优化
Touchmove、Scroll 事件可导致多次渲染
a) 使用requestAnimationFrame监听帧变化,使得在正确的时间进行渲染
b) 增加响应变化的时间间隔,减少重绘次数
* GPU加速
CSS中以下属性(CSS3 transitions、CSS3 3D transforms、Opacity、Canvas、WebGL、Video)来触发GPU渲染,请合理使用(PS:过渡使用会引发手机过耗电增加)
a、CSS动画更为流畅、但内存占用过高,动画元素在5个以内更为推荐; b、Canvas动画存在丢帧现象,这一现象在android中低端手机中表现更为明显; c、5个以内动画元素,选用CSS动画,80%的设备帧频可达80以上。18.移动端怎么自适应?
移动自适应的话一般我用的话就是rem,通过rem单位配合媒体查询来完成几个屏幕的适配,以iphone6位标准,向上适配plus,向下适配5,不做过多的适配,有时候有要求的话也用js来控制rem的大小达到适配效果,rem是相对单位,相对html元素的font-size值的属性,比如font-size:100px; 的话1rem就得100px,这样我子需要通过改变html的font-size就可以达到适配效果
19.如何开启gpu加速?为动画DOM元素添加CSS3样式-webkit-transform:transition3d(0,0,0)或-webkit-transform:translateZ(0);,这两个属性都会开启GPU硬件加速模式,从而让浏览器在渲染动画时从CPU转向GPU
通过-webkit-transform:transition3d/translateZ开启GPU硬件加速之后,有些时候可能会导致浏览器频繁闪烁或抖动,可以尝试以下办法解决之:
-webkit-backface-visibility:hidden;
-webkit-perspective:1000;
通过-webkit-transform:transition3d/translateZ开启GPU硬件加速的适用范围:
使用很多大尺寸图片(尤其是PNG24图)进行动画的页面。
页面有很多大尺寸图片并且进行了css缩放处理,页面可以滚动时。
使用background-size:cover设置大尺寸背景图,并且页面可以滚动时
编写大量DOM元素进行CSS3动画时(transition/transform/keyframes/absTop&Left)
使用很多PNG图片拼接成CSS Sprite时
可以使用after插入的形式将宽度设置为200%,然后通过css transfrom 的scale 缩放0.5倍;
21.响应式布局的原理 Meta标签定义使用 viewport meta 标签在手机浏览器上控制布局
通过快捷方式打开时全屏显示
隐藏状态栏
iPhone会将看起来像电话号码的数字添加电话连接,应当关闭
使用Media Queries适配对应样式
all所有设备;
screen 电脑显示器;
print打印用纸或打印预览视图;
handheld便携设备;
tv电视机类型的设备;
speech语意和音频盒成器;
braille盲人用点字法触觉回馈设备;
embossed盲文打印机;
projection各种投影设备;
tty使用固定密度字母栅格的媒介,比如电传打字机和终端。
width浏览器宽度;
height浏览器高度;
device-width设备屏幕分辨率的宽度值;
device-height设备屏幕分辨率的高度值;
orientation浏览器窗口的方向纵向还是横向,当窗口的高度值大于等于宽度时该特性值为portrait,否则为landscape;
aspect-ratio比例值,浏览器的纵横比;
device-aspect-ratio比例值,屏幕的纵横比。
@media only screen and (min-width:768px)and(max-width:1024px){} @media only screen and (width:320px)and (width:768px){}百分比布局
宽度不固定,可以使用百分比
#head{width:100%;} #content{width:50%;}
#wrap img{ max-width:100%; height:auto; }字体设置
一个响应式的字体应关联它的父容器的宽度,这样才能适应客户端屏幕。css3引入了新的单位叫做rem,和em类似但对于Html元素,rem更方便使用。em是相对于根元素的,需重置根元素字体大小:
html{font-size:100%;}
完成后,可以定义响应式字体:
@media (min-width:640px){body{font-size:1rem;}} @media (min-width:960px){body{font-size:1.2rem;}} @media (min-width:1200px){body{font-size:2rem;}}22.常见dpr
ip6 2、ip6+ 3、nexus5 3
23.移动端适配1) 自适应方式
2) viewport方式
3) rem方式
4) scale()方式缩放
避免IE使用兼容模式
为不支持viewport的IE Mobile设定宽度
是否对手持设备友好
强制竖屏
强制全屏
应用模式
强制竖屏
强制全屏
应用模式
开启极速模式
iphone相关启动webapp功能 删除工具栏和菜单栏
控制状态栏颜色
开启号码或邮箱检测
添加主屏幕icon
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/52770.html
摘要:行内元素特征设置宽高属性无效设置仅左右水平方向有效,上下垂直无效设置上下左右都有效内容不会自动进行换行行内块元素行内块元素综合了两者的特征,各有取舍,可以对任意元素进行属性设置。 文章大纲来源:【Day 1】HTML & HTML 5 标记语言 XHTML/HTML/HTML 5异同 了解doctype HTML HTML 5 标记语言 标记语言(ML)即 Markup Langu...
摘要:三开发工具的使用使用技巧编辑器四介绍的概述全称,翻译为超文本标记语言,它不是一种编程语言,是一种描述性的标记语言,用于描述超文本内容的显示方式。【转】01-html介绍和head标签主要内容web标准浏览器介绍开发工具介绍HTML介绍HTML颜色介绍HTML规范HTML结构详解一、web标准web准备介绍:w3c:万维网联盟组织,用来制定web标准的机构(组织)web标准:制作网页遵循的规范...
摘要:浏览器一个浏览器的作用是读取并显示一个文档。声明声明有助于浏览器能够正确地显示页面。声明是不区分大小写的,以下所有写法都是正确地常见声明版本在网络的早期,就具有了很多版本版本年份本文翻译于网站提供的教程。 什么是HTML HTML 是一种描述 Web 文档(页面)的标记语言。 HTML 代表超文本标记语言(Hyper Text Markup Language) 标记语言就是一组标记标...
阅读 3488·2021-11-18 10:02
阅读 923·2021-09-04 16:48
阅读 2017·2019-08-30 15:55
阅读 3517·2019-08-30 15:52
阅读 1778·2019-08-30 14:08
阅读 3527·2019-08-30 13:19
阅读 1117·2019-08-27 10:53
阅读 3092·2019-08-26 12:11