先来看看效果:
制作过程:
1. 定义标签,a标签是按钮,4个span就是按钮周围那四条行动的蓝边。:
<a href="https://blog.csdn.net/luo1831251387?spm=1000.2115.3001.5343" class="night" target="blank"> <span></span> <span></span> <span></span> <span></span> night </a>
2. 定义按钮.night的基本样式:
.night{
position: relative;
width: 300px;
height: 100px;
color: rgb(18, 190, 243);
letter-spacing: 12px;
font-size: 50px;
line-height: 100px;
text-align: center;
/* background-color: rgb(31, 49, 133); */
background-image: linear-gradient(90deg, rgb(40, 62, 161) 50%,rgb(31, 49, 133) 50% );
text-transform: uppercase;
user-select: none;
text-decoration: none;
overflow: hidden;
box-shadow: inset 0 0 10px rgb(14, 20, 105),
0 0 5px rgb(9, 208, 235);
transition: all 0.5s;
}
position : 相对定位。
letter-spacing:字间距。
linear-gradient:渐变颜色。
text-transform:全部字母为大写。
user-select:文本不可选中。
text-decoration:消除默认下划线。
overflow:溢出隐藏。
box-shadow:阴影。
transition:过渡效果。
3. 鼠标经过按钮样式变化:
.night:hover{ text-shadow: 0 0 5px rgb(18, 190, 243), 0 0 8px rgb(18, 190, 243), 0 0 10px rgb(18, 190, 243); background-image: linear-gradient(90deg, rgb(25, 38, 99) 50%,rgb(13, 22, 58) 50% ); box-shadow: inset 0 0 10px rgb(14, 20, 105), 0 0 5px rgb(9, 208, 235), 0 0 10px rgb(9, 208, 235); }
text-shadow:文字阴影。
lineear-gradient:渐变色变化。
box-shadow:盒子阴影变化。
4. 4条span的基本样式:
.night span{ position: absolute; }
absolute 绝对定位
5. 设置按钮上方那条运动蓝线样式:
.night span:nth-child(1){ top: 0; left: 0; width: 100%; height: 2px; background-image: linear-gradient(to right, transparent , rgb(0, 153, 255) ); animation: move1 2s linear infinite; } @keyframes move1 { 0%{ transform: translateX(-100%); } 100%{ transform: translateX(100%); } }
linear-gradient:渐变色。
transparent为透明色。
animation:设置动画,让蓝线运动起来。
transform: translateX(-100%); 在X轴上的偏移为-100%。
transform: translateX(100%); 让它偏移到100%。
6. 以此类推,其它三条也设置动画,再让左边和右边那条设置动画延迟便可。:
.night span:nth-child(2){ top: 0; right: 0; width: 2px; height: 100%; transform: translateY(-100%); background-image: linear-gradient(to bottom, transparent , rgb(0, 153, 255) ); animation: move2 2s linear infinite; animation-delay: 1s; } @keyframes move2 { 100%{ transform: translateY(100%); } } .night span:nth-child(3){ left: 0; bottom: 0; width: 100%; height: 2px; background-image: linear-gradient(to left, transparent , rgb(0, 153, 255) ); animation: move3 2s linear infinite; } @keyframes move3 { 0%{ transform: translateX(100%); } 100%{ transform: translateX(-100%); } } .night span:nth-child(4){ top: 0; left: 0; width: 2px; height: 100%; transform: translateY(100%); background-image: linear-gradient(to top, transparent , rgb(0, 153, 255) ); animation: move4 2s linear infinite; animation-delay: 1s; } @keyframes move4 { 100%{ transform: translateY(-100%); } }
animation-delay: 1s; 设置动画延迟1秒播放。
完整代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> *{ margin: 0; padding: 0; box-sizing: border-box; } body{ height: 100vh; display: flex; justify-content: center; align-items: center; background-color: rgb(4, 4, 19); } .night{ position: relative; width: 300px; height: 100px; color: rgb(18, 190, 243); letter-spacing: 12px; font-size: 50px; line-height: 100px; text-align: center; /* background-color: rgb(31, 49, 133); */ background-image: linear-gradient(90deg, rgb(40, 62, 161) 50%,rgb(31, 49, 133) 50% ); text-transform: uppercase; user-select: none; text-decoration: none; overflow: hidden; box-shadow: inset 0 0 10px rgb(14, 20, 105), 0 0 5px rgb(9, 208, 235); transition: all 0.5s; } .night:hover{ text-shadow: 0 0 5px rgb(18, 190, 243), 0 0 8px rgb(18, 190, 243), 0 0 10px rgb(18, 190, 243); background-image: linear-gradient(90deg, rgb(25, 38, 99) 50%,rgb(13, 22, 58) 50% ); box-shadow: inset 0 0 10px rgb(14, 20, 105), 0 0 5px rgb(9, 208, 235), 0 0 10px rgb(9, 208, 235); } .night span{ position: absolute; } .night span:nth-child(1){ top: 0; left: 0; width: 100%; height: 2px; background-image: linear-gradient(to right, transparent , rgb(0, 153, 255) ); animation: move1 2s linear infinite; } @keyframes move1 { 0%{ transform: translateX(-100%); } 100%{ transform: translateX(100%); } } .night span:nth-child(2){ top: 0; right: 0; width: 2px; height: 100%; transform: translateY(-100%); background-image: linear-gradient(to bottom, transparent , rgb(0, 153, 255) ); animation: move2 2s linear infinite; animation-delay: 1s; } @keyframes move2 { 100%{ transform: translateY(100%); } } .night span:nth-child(3){ left: 0; bottom: 0; width: 100%; height: 2px; background-image: linear-gradient(to left, transparent , rgb(0, 153, 255) ); animation: move3 2s linear infinite; } @keyframes move3 { 0%{ transform: translateX(100%); } 100%{ transform: translateX(-100%); } } .night span:nth-child(4){ top: 0; left: 0; width: 2px; height: 100%; transform: translateY(100%); background-image: linear-gradient(to top, transparent , rgb(0, 153, 255) ); animation: move4 2s linear infinite; animation-delay: 1s; } @keyframes move4 { 100%{ transform: translateY(-100%); } } </style> </head> <body> <a href="https://blog.csdn.net/luo1831251387?spm=1000.2115.3001.5343" class="night" target="blank"> <span></span> <span></span> <span></span> <span></span> night </a> </body> </html>
到此这篇关于使用CSS实现按钮边缘跑马灯动画的文章就介绍到这了,更多相关CSS按钮跑马灯内容请搜索 『沙漠渔溏』 以前的文章或继续浏览下面的相关文章,希望大家以后多多支持 『沙漠渔溏』 !