tranform-origin + transform
自己可以先简单的实现 hover 默认的两种状态实现下滑线滑动
使用元素的 before 和 after , 定位到当前操作的为父级元素上, 效果前后利用 hover 和 transition 实现过度动画, 方便往下进阶。
达到的效果
采用 transition(过度效果)、transform: scaleX (缩放)、transform-origin(改变原点位置),实现下滑线从左边近,右边出
首先理解 hover 选择器的作用, 使用它时元素被分解成三个步骤
hover 前(默认样式)
hover 中(:hover 设置样式)
hover 后(默认样式)
由此可以看出 hover 正常状态下只有两种状态
所以,必须要有一种方法,能够使得 hover 动画的进入与离开产生两种不一样的效果, 实现:
hover 前设置原点位置 transform-orgin: right 0)、缩放大小 transform: scaleX(0), 隐藏 before 选择器
hover 中(设置原点位置 transform-orgin: 0 0)、缩放大小 transform: scaleX(1), 显示 before 选择器
hover 前(恢复 transform: scaleX(0)、transform-orgin: right 0), 向右隐藏 before 选择器
代码如下
参考文档
transform-origin 取值:
x-axis 默认以元素框上边框为 x正半轴, 上边框与左边框的焦点为顶点; 水平偏移量有以下几种取值方式
left 等于 0 或 0%
center 等于 50%
right 等于 100%
y-axis 以元素框左边框为 y正半轴, 左边框与上边框的焦点为顶点; 水平偏移量有以下几种取值方式
top 等于 0 或 0%
center 等于 50%
right 等于 100%
z-axis 3D变形中会用到 详解见文档
transform-origin 实例解析: https://developer.mozilla.org/zh-CN/docs/Web/CSS/transform-origin
transform-origin 坐标系图析: https://www.jianshu.com/p/fd44d21287ea
Last updated