网站首页 > 技术文章 正文
CSS简介
1.什么是CSS?
- CSS:Cascading Style sheet层叠样式表或级联样式表
- ? 是一种样式设置规则,用于控制页面的外观的样式
2.为什么使用CSS?
- 实现内容与样式的分离,方便团队开发
- 样式复用,便于网站后期维护
- 页面的精确控制,让页面更精美
3.CSS作用
- 页面外观美化
- 布局和定位
CSS动画
动画的原理
- 人脑的bug
定义
- 由许多静止的画面(帧)组成
- 以一定的速度(如每秒30张)连续播放时
- 肉眼因视觉残象产生错觉
- 而误以为是活动的画面
概念
- 帧:每个静止的画面都叫做帧
- 播放速度:每秒24帧(影视)或者每秒30帧(游戏)
浏览器渲染原理
浏览器渲染过程步骤
- 根据HTML构建HTML树(DOM)
- 根据CSS构建CSS树(CSSOM)
- 将两棵树合并成一棵渲染树(render tree)
- Layout布局(文档流、盒模型、计算大小和位置)
- Paint绘制(把边框颜色、文字颜色、阴影等画出来)
- Comepose合成(根据层叠关系展示画面)
如何更新样式
一般JS来更新样式
- 比如div.remove()删除节点
- 比如div.style.background = 'red'
- 比如div.style.display = 'none'
- 比如div.classList.add('red')
三种更新方式
1.JS/CSS》样式》布局》绘制》合成
比如:div.remove()会触发当前消失,其它元素relayout。
2.JS/CSS》样式》绘制》合成
比如:改变背景色,直接repaint+composite。
3.JS/CSS》样式》合成
比如:改变transform,直接composite。
CSS动画优化
- JS优化:使用requestAnimationFrame代替setTimeout或setlntervl
- CSS优化:使用will-change或translate
CSS 动画的两种做法(transition 和 animation)
一. transform
四个常用功能
- 位移 translate
- 缩放 scale
- 旋转 rotate
- 倾斜 skew
经验:
- 一般都需要配合transition过度
- inline元素不支持transform,需要先改变成block
transform: translate
- translateX(像素(px) / 百分比(%))
- translateY(像素(px) / 百分比(%))
- translate(<像素 / 百分比>,<像素 / 百分比>?)
- translateZ(像素) 且父容器加perspective
- translate3d(x,y,z)
经验:
- 多看MDN语法
- translate(-50%,-50%)可做绝对定位元素居中
#demo{
left:50%;
top:50%;
transform:translate(-50%,-50%);
}
transform: scale
- scaleX(倍数)
- scaleY(倍数)
- scale(倍数,倍数)
经验:
- 用得较少,容易出现模糊
transform: rotate
- rotate([<angle> | <zero> ])
- rotateZ([<angle> | <zero> ])
- rotateX([<angle> | <zero> ])
- rotateY([<angle> | <zero> ])
- rotate3d
经验:
- 一般用于360°旋转制作loading。
transform: skew
- skewX([<angle> | <zero> ])
- skewY([<angle> | <zero> ])
- skew([<angle> | <zero> ],[<angle> | <zero> ]?)
经验:
- 用得较少
transform 可以组合使用
- transform:scale(0.5)translate(-100%,-100%);
- transform:none;取消所有
transition 过渡
作用
- 补充中间帧
语法
- transition: 属性名 时长 过渡方式 延迟
- transition: left 200ms linear
- 可以用逗号分隔开两个不同的属性
- transition: left200ms,top400ms
- 可以用all代表所有属性
- transition: 200ms
- 过渡方式有: linear|ease|ease-in|ease-out|ease-in-out|**cubic-bezier|step-start|step-end|steps,具体含义要靠数学知识
并不是所有的属性都能过度
- display: none => block 不能过渡
- 要改成visibility: hidden => visible
- background 颜色可以过渡
- opacity 透明度可以过渡
二. animation
缩写语法
- animation: 时长 | 过渡方式 | 延迟 | 次数 | 方向 | 填充模式 | 是否暂停 | 动画名
- 时长: 1s 或者 1000ms
- 过渡方式: 跟transition的取值一样,如linear
- 次数: 3 或 n 或者 infinite
- 方向: reverse | alternate | alternate-reverse
- 填充模式: none | forwards | backwards | both
- 是否暂停: paused | running
- 这些属性都有对应的单独属性
使用animation
- 声明关键帧 @keyframes xxx
- 添加动画 animation:xxx
如何让动画停在最后一帧
- 给animation加个forwards
@keyframes 完整语法
- 一种写法是from…to
- 另一种写法是百分数
本文为作者本人的原创文章,著作权归作者本人和饥人谷所有,转载务必注明来源。
- 上一篇: CSS3 变形与透视,让你的页面更生动
- 下一篇: 有趣的 CSS 数学函数
猜你喜欢
- 2024-11-18 Three.js建模基础
- 2024-11-18 CSS3之3D魔方鼠标控制酷炫效果
- 2024-11-18 CSS中的绘制顺序,chrome和firefox在使用3D变换时的不同点
- 2024-11-18 css 3D transform 感性理解
- 2024-11-18 前端进阶打卡题目汇总,赶紧码住
- 2024-11-18 有趣的 CSS 数学函数
- 2024-11-18 CSS3 变形与透视,让你的页面更生动
- 2024-11-18 前端学习,那些新增内容的学习HTML与CSS进阶
- 2024-11-18 前端CSS面试题-7
- 2024-11-18 CSS怎么制作立体的3D照片墙效果
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-