文章插图
![前端样式框架有哪些 前端样式设计](http://img.hubeilong.com/220625/055G51C8-0.jpg)
文章插图
边框长度变化
先来个比较简单的,实现一个类似这样的边框效果:
div {position: relative;border: 1px solid #03A9F3;&::before,&::after {content: "";position: absolute;width: 20px;height: 20px;}&::before {top: -5px;left: -5px;border-top: 1px solid var(--borderColor);border-left: 1px solid var(--borderColor);}&::after {right: -5px;bottom: -5px;border-bottom: 1px solid var(--borderColor);border-right: 1px solid var(--borderColor);}&:hover::before,&:hover::after {width: calc(100% + 9px);height: calc(100% + 9px);}}
接下来,会开始加深一些难度 。虚线边框动画
使用 dashed 关键字,可以方便的创建虚线边框 。
div {border: 1px dashed #333;}
div {background: linear-gradient(90deg, #333 50%, transparent 0) repeat-x;background-size: 4px 1px;background-position: 0 0;}
看看,使用渐变模拟的虚线如下:div {background:linear-gradient(90deg, #333 50%, transparent 0) repeat-x,linear-gradient(90deg, #333 50%, transparent 0) repeat-x,linear-gradient(0deg, #333 50%, transparent 0) repeat-y,linear-gradient(0deg, #333 50%, transparent 0) repeat-y;background-size: 4px 1px, 4px 1px, 1px 4px, 1px 4px;background-position: 0 0, 0 100%, 0 0, 100% 0;}
效果如下:div:hover {animation: linearGradientMove .3s infinite linear;[email protected] linearGradientMove {100% {background-position: 4px 0, -4px 100%, 0 -4px, 100% 4px;}}
OK,看看效果,hover 上去的时候,边框就能动起来,因为整个动画是首尾相连的,无限循环的动画看起来就像是虚线边框在一直运动,这算是一个小小的障眼法或者小技巧:div {border: 1px solid #333;&:hover {border: none;background:linear-gradient(90deg, #333 50%, transparent 0) repeat-x,linear-gradient(90deg, #333 50%, transparent 0) repeat-x,linear-gradient(0deg, #333 50%, transparent 0) repeat-y,linear-gradient(0deg, #333 50%, transparent 0) repeat-y;background-size: 4px 1px, 4px 1px, 1px 4px, 1px 4px;background-position: 0 0, 0 100%, 0 0, 100% 0;}}
由于 border 和 background 在盒子模型上位置的差异,视觉上会有一个很明显的错位的感觉:div {outline: 1px solid #333;outline-offset: -1px;&:hover {outline: none;}}
最后看看运用到实际按钮上的效果:渐变的其他妙用
利用渐变,不仅仅只是能完成上述的效果 。
我们继续深挖渐变,利用渐变实现这样一个背景:
div {position: relative;&::after {content: '';position: absolute;left: -50%;top: -50%;width: 200%;height: 200%;background-repeat: no-repeat;background-size: 50% 50%, 50% 50%;background-position: 0 0, 100% 0, 100% 100%, 0 100%;background-image: linear-gradient(#399953, #399953),linear-gradient(#fbb300, #fbb300), linear-gradient(#d53e33, #d53e33),linear-gradient(#377af5, #377af5);}}
注意,这里运用了元素的伪元素生成的这个图形,并且,宽高都是父元素的 200%,超出则 overflow: hidden 。div {animation: rotate 4s linear infinite;[email protected] rotate {100% {transform: rotate(1turn);}}
看看效果:掌握了上述的基本技巧之后,我们可以再对渐变的颜色做一些调整,我们将 4 种颜色变成 1 种颜色:
div::after {content: '';position: absolute;left: -50%;top: -50%;width: 200%;height: 200%;background-color: #fff;background-repeat: no-repeat;background-size: 50% 50%;background-position: 0 0;background-image: linear-gradient(#399953, #399953);}
得到这样一个图形:clip-path 的妙用
又是老朋友 clip-path,有意思的事情它总不会缺席 。
clip-path 本身是可以进行坐标点的动画的,从一个裁剪形状变换到另外一个裁剪形状 。
利用这个特点,我们可以巧妙的实现这样一种 border 跟随效果 。伪代码如下:
div {position: relative;&::before {content: "";position: absolute;top: 0;left: 0;right: 0;bottom: 0;border: 2px solid gold;animation: clippath 3s infinite linear;[email protected] clippath {0%,100% {clip-path: inset(0 0 95% 0);}25% {clip-path: inset(0 95% 0 0);}50% {clip-path: inset(95% 0 0 0);}75% {clip-path: inset(0 0 0 95%);}}
效果图与示意图一起:如果我们把另外一个伪元素也用上,实际实现一个按钮样式,可以得到这样的效果:
如果我们有这样一张图:
div {width: 200px;height: 120px;border: 24px solid;border-image: url(image-url);border-image-slice: 32;border-image-repeat: round;}
【前端样式框架有哪些 前端样式设计】在这个基础上,可以随便改变元素的高宽,如此便能扩展到任意大小的容器边框中:- 安卓架构 安卓开发框架
- 轮播图插件有哪些 前端轮播图插件
- 前端分页插件 jquery分页插件的使用
- excel2010表格样式在哪里设置 excel中怎么设置表样式
- JS刷新当前页面 前端页面局部刷新
- Android数据库框架对比 Android数据库框架更换
- autocad如何添加字体样式 cad怎样设置字体样式
- html边框线怎么设置粗细 html边框线怎么设置长度
- 数据回显和反显 前端数据回显什么意思
- hadoop大数据技术与应用答案 下列有关大数据处理框架hadoop的说法错误的是