“拿来主义”学习边框动画,附源码,CV可用
扫码关注:小拾岁月,发送 “边框动画”,获取源码。
需求分析
从边框的旋转动画,我们可以看出,可以在按钮元素的下方添加给 360°旋转
的元素。同时,边框在运行,所以我们不可以使用功能 border
来实现,却可以通过多个元素的叠加形成间隙来实现一个视觉上的边框。
经过上述分析可知,完成边框动画需要以下 3
个元素:
- 按钮元素(主元素)
- 下方旋转元素(旋转运动)
- 上方覆盖元素(面积小于主元素,覆盖在主元素上,形成间隙,即“边框”)
页面布局
<button class="btn">边框按钮</button>
样式处理
- 旋转元素
.btn::before {content: "";width: 200%;height: 200%;background: red;position: absolute;left: 50%;top: 50%;z-index: -1;transform-origin: left top;animation: rotation 1.5s linear infinite;
}@keyframes rotation {to {transform: rotate(360deg);}
}
注意
我们通过 position: absolute;left: 50%;top: 50%;
将旋转元素定位到主元素的中心点,并且通过 z-index: -1;
置于主元素下方。另外,为其添加选中动画。
对于旋转动画,我们需要特别注意的是动画的 基准点
是元素的左上角,而不是元素中心点, 可以通过 transform-origin: left top;
进行设置。
- 覆盖元素
.btn::after {content: "";position: absolute;--gap: 2px;width: calc(100% - var(--gap) *2);height: calc(100% - var(--gap) *2);background-color: #333;left: var(--gap);top: var(--gap);border-radius: inherit;z-index: -1;
}
注意
针对于覆盖元素,其中--gap: 2px;
是我们预留的边框宽度。
同时,根据预留边框的宽度做定位处理,使其覆盖在主元素上。
最后,在调整元素的边框颜色,隐藏超出的部分,就可以实现动画效果了。
温馨提示
扫码关注:小拾岁月,发送 “边框动画”,获取源码。