perspective
属性也可以用来声明视距效果 。
perspective
和 transform:perspective()
都能声明视距,那为何要存在两种声明方式呢?
perspective
与transform:perspective()
的作用相同
perspective
在舞台节点
(变换节点的父节点)上使用,transform:perspective()
在当前变换节点
上使用,也可与其他变换函数一起使用
- 值越?。?用户与空间Z轴距离越近,视觉效果越强
- 值越大,用户与空间Z轴距离越远,视觉效果越弱
通过纯 CSS 也可以实现一个心形 ? 。
文章插图
使用单个 div 元素结合
::before
和::after
两个伪元素通过错位叠加的方式就可以轻松实现,搞起来 。步骤:
- 声明
<div>
的尺寸为一个正方形
并以中心顺时针旋转45deg
- 声明两个伪元素继承
<div>
的尺寸并实行绝对定位
- 声明两个伪元素的圆角率为
100%
并平移到相应位置
2)0.5px 边框
在移动端由于屏幕的分辨率较高,因此 1px 边框看起来会有点粗 , 那么可以直接声明 0.5px 的边框吗?可以,但是即便声明成功了,有些浏览器还是会按照 1px 来渲染 。为了实现 0.5px 的边框,我们可以利用 CSS 中的 transform 来实现 。
文章插图
步骤:
- 声明一个伪元素 , 令其宽高为 200%,border 宽度为 1px
- 通过
transform: scale(.5)
将该伪元素缩小为原来的 0.5 倍 。
1.2 过渡过渡的出现让状态间的切换更加丝滑,先简单介绍一下与过渡相关的属性,相关的动画实践稍候奉上 。
1.2.1 过渡属性介绍1)transition-property:属性
all
:全部属性过渡(默认
)
none
:无属性过渡
String
:某个属性过渡
Time
:秒或毫秒(默认0
)
ease
:逐渐变慢,等同于cubic-bezier(.25,.1,.25,1)
(默认
)
linear
:匀速,等同于cubic-bezier(0,0,1,1)
ease-in
:加速,等同于cubic-bezier(.42,0,1,1)
ease-out
:减速,等同于cubic-bezier(0,0,.58,1)
ease-in-out
:先加速后减速,等同于cubic-bezier(.42,0,.58,1)
cubic-bezier
:贝塞尔曲线,(x1,y1,x2,y2)
四个值指定于曲线上的点P1
和P2
,所有值需在[0,1]
区域内
Time
:秒或毫秒(默认0
)
duration
和 delay
的取值都是时间,所以可能会发生混淆 。duration
和delay
作用于所有节点,包括自身的::before
和::after
transition
中出现两个时间值时,第一个解析为duration
, 第二个解析为delay
transition
中出现一个时间值时,解析为duration
transition-timing-function
,它决定了过渡时间内速度是如何变化的 。它的值实际上是一个贝塞尔曲线,推荐一个设置贝塞尔曲线的网站,可以根据需要设计出符合需求的贝塞尔曲线 。1.2.2 过渡动画实践1)IOS 设置页面中的开关按钮
下面这个开关在 IOS 手机的设置面板中太常见了,开关的动画效果利用
transition
这个属性也可以很轻松地实现,而且这里利用上面讲到的设置贝塞尔曲线的网站调试出了一种贝塞尔曲线使得开关按钮被打开的过程有一个刹车的效果 。文章插图
在线源码和演示
1.3 动画CSS 可以通过设置多个点精确地控制一个或一组动画,用来实现复杂的动画效果 。动画由多个点组成 , 每个点拥有独立的状态,这些状态通过浏览器处理成过渡效果,点与点之间的过渡效果串联起来就是一个完整的动画 。
推荐阅读
- 为什么CSS中的calc函数可能会不生效?
- day03-CSS
- 二 Three光线检测-实现摄像机向鼠标点击位置滑动动画
- React动画实现方案之 Framer Motion,让你的页面“自己”动起来
- CSS 渐变锯齿消失术
- 前端开发日常——CSS动画无限轮播
- Vue3 JS 与 SCSS 变量相互使用
- 超强的纯 CSS 鼠标点击拖拽效果
- 迪士尼所有卡通人物 迪士尼所有人物大全
- 前端三件套 HTML+CSS+JS基础知识内容笔记