HTML+CSS初学日常知识点-八

13 篇文章 0 订阅

一.重绘与回流

首先要了解网页是如何生成的   节选自阮一峰老师文章

  1. HTML代码转化成DOM
  2. CSS代码转化成CSSOM(CSS Object Model)
  3. 结合DOM和CSSOM,生成一棵渲染树(包含每个节点的视觉信息)
  4. 生成布局(layout),即将所有渲染树的所有节点进行平面合成
  5. 将布局绘制(paint)在屏幕上

这五步里面,第一步到第三步都非常快,耗时的是第四步和第五步

"生成布局"(flow)和"绘制"(paint)这两步,合称为"渲染"(render)

以下三种情况,会导致网页重新渲染 

  • 修改DOM
  • 修改样式表
  • 用户事件(比如鼠标悬停、页面滚动、输入框键入文字、改变窗口大小等等)

重新渲染,就需要重新生成布局和重新绘制。前者叫做"回流"(reflow),后者叫做"重绘"(repaint)

页面中元素的尺寸,布局,隐藏等改变而需要重新构建页面,就会引起回流

页面中元素属性发生改变,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color。则就叫称为重绘

回流必将引起重绘,而重绘不一定会引起回流。比如:只有颜色改变的时候就只会发生重绘而不会引起回流
当页面布局和几何属性改变时就需要回流
比如:添加或者删除可见的DOM元素,元素位置改变,元素尺寸改变——边距、填充、边框、宽度和高度,内容改变

回流和重绘的DOM元素层级越高,成本就越高

提高网页性能,就是要降低"重排"和"重绘"的频率和成本,尽量少触发重新渲染

一般规则是:

  • 样式表越简单,重排和重绘就越快。
  • 重排和重绘的DOM元素层级越高,成本就越高。
  • table元素的重排和重绘成本,要高于div元素

 CSS属性书写顺序

1. 布局定位属性:display / position / float / clear / visibility / overflow(建议 display 第一个写,毕竟关系到模式)
2. 自身属性(跟盒子相关的):width / height / margin / padding / border / background
3. 字体文本属性:color / font / text-decoration / text-align / vertical-align / white- space / break-word
4. 其他属性(CSS3):content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient …

 二.文本阴影-text-shadow

样式:

text-shadow: 0 0.5px 0 #ffffff;

效果:

 text-shadow:水平方向阴影 垂直阴影 [模糊距离] [ 阴影颜色 ];

三.盒子阴影-box-shadow

投影方式:默认外投影 inset为内投影

样式:

box-shadow: 0 0 20px 5px rgba(0,0,0,0.8) ;

效果:

 box-shadow: 水平阴影 垂直阴影 [迷糊距离] [阴影扩展半径] [阴影颜色] [投影方式];

四.定义字体

样式:

@font-face{
   font-family:自定义字体名称;
   src:url (字体路径)
}

使用字体:

使用字体
选择器{
 font-family: 自定义字体名称;
}

五.渐变-background-image

样式:

线性渐变
background-image:linear-gradient( 渐变角度,颜色1  颜色1位置,颜色2 颜色2位置,....)
重复线性渐变
background-image:repeating-linear-gradient( 渐变角度,颜色1  颜色1位置,颜色2 颜色2位置,....)
径向渐变
background-image:radial-gradient ( shape size at position,颜色1  位置 ,颜色2  位置,.....)
重复径向渐变
background-image:radial-gradient ( shape size at position,颜色1  位置 ,颜色2  位置,.....)

六.圆角-border-radius

代码:

border-radius:值;
四个圆角一样

border-radius:值1 值2;
1 左上 右下
2 右上 左下

border-radius:值1 值2 值3;
1  左上
2 右上 左下
3 右下

border-radius:值1    2    3  4;
1 左上  2 右上  3 右下  4 左下

七.过渡 transition-property

transition-duration过渡持续时间 单位:m秒或ms毫秒

transition-timing-function过渡速度 

ease 默认 linear 匀速 ease-in 加速 ease-out 减速 ease-in-out 加减

transition-delay过渡延迟时间

八.优雅降级和渐进增强 

渐进增强progressive enhancement:

针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验

优雅降级graceful degradation:

一开始就构建完整的功能,然后再针对低版本浏览器进行兼容

渐进增强观点 :
“渐进增强”观点则认为应关注于内容本身。 
内容是我们建立网站的诱因。有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进增强”成为一种更为合理的设计范例。这也是它立即被 Yahoo! 所采纳并用以构建其“分级式浏览器支持 (Graded Browser Support)”策略的原因所在

优雅降级观点 :
“优雅降级”观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本。 
在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨 (poor, but passable)” 的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值