教你用html+css实现炫光倒影按钮

CSS/设计
21
0
0
2023-09-09
目录
  • 实现过程(完整源码在最后):
  • 1 老样子,定义基本样式:
  • 2.定义基本标签:
  • 3.定义每个按钮的基本样式:
  • 4. 鼠标经过按钮样式改变:
  • 5.设置环绕按钮的4根线上面那条的样式:
  • 5.以此类推,设置环绕按钮的其它3根样式:
  • 6.给第一,第三个按钮设置其它颜色:
  • 完整代码:

话不多,先看效果:

实现过程(完整源码在最后):

1 老样子,定义基本样式:

   *{
             margin:;
            padding:;
            box-sizing: border-box;
            font-family: 'fangsong';
        }
        body{
            height:vh;
            display: flex;
            align-items: center;
            justify-content: center;
            background-color: rgb(, 0, 0);
        }
font-family: ‘fangsong’; 仿宋字体。
display: flex;
align-items: center;
justify-content: center; flex布局,让按钮在屏幕居中。

2.定义基本标签:

<a href="#" class="item item">
    aurora
    <span></span>
    <span></span>
    <span></span>
    <span></span>
</a>
<a href="#" class="item item">
    aurora
    <span></span>
    <span></span>
    <span></span>
    <span></span>
</a>
<a href="#" class="item item">
    aurora
    <span></span>
    <span></span>
    <span></span>
    <span></span>
</a>

3个a标签就对应3个按钮,每个按钮里4个span就是环绕按钮的4条边。

且都有个公共的选择器 .item 和 只属于自己的选择器。

3.定义每个按钮的基本样式:

 .item{
            position: relative;
            margin:px;
            width:px;
            height:px;
            text-align: center;
            line-height:px;
            text-transform: uppercase;
            text-decoration: none;
            font-size:px;
            letter-spacing:px;
            color: aqua;
            overflow: hidden;
            -webkit-box-reflect: belowpx linear-gradient( transparent,rgba(6, 133, 133,0.3));
        }
text-align: center;文字对齐方式。
line-height: 80px; 字行高。
text-transform: uppercase; 字母为大写。
text-decoration: none; 去掉a标签默认下划线。
letter-spacing: 5px; 每个字符间的距离。
overflow: hidden;溢出隐藏。
-webkit-box-reflect: below 1px linear-gradient( transparent,rgba(6, 133, 133,0.3)); 这个属性能实现倒影效果。

4. 鼠标经过按钮样式改变:

 .item:hover{
            background-color: aqua;
            box-shadow: 0 5px aqua,
 0 75px aqua,
 0 155px aqua;
            color: black;
        }
box-shadow:0 0 5px aqua,
0 0 75px aqua,
0 0 155px aqua; 阴影,写多行可以叠加更亮。

5.设置环绕按钮的4根线上面那条的样式:

.item span:nth-of-type(){
            position: absolute;
            left: -%; 
            width:%;
            height:px;
            background-image: linear-gradient(to left,aqua ,transparent);
            animation: shangs linear infinite;
        }
        @keyframes shang{%{
                left:-%;
            }%,100%{
                left:%;
            }
        }
position: absolute;
left: -100%; 定位在对应位置。
background-image: linear-gradient(to left,aqua ,transparent); 线性渐变颜色。
animation: shang 1s linear infinite; 动画属性,让它动起来。

5.以此类推,设置环绕按钮的其它3根样式:

  .item span:nth-of-type(){
            position: absolute;
            top: -%;
            right:;
            width:px;
            height:%;
            background-image: linear-gradient(to top,aqua ,transparent);
            animation: yous linear infinite;
            animation-delay:.25s;
        }
        @keyframes you{%{
                top:-%;
            }%,100%{
                top:%;
            }
        }
        .item span:nth-of-type(){
            position: absolute;
            right: -%;
            bottom:;
            width:%;
            height:px;
            background-image: linear-gradient(to right,aqua ,transparent);
            animation: xias linear infinite;
            animation-delay:.5s;
        }
        @keyframes xia{%{
                right:-%;
            }%,100%{
                right:%;
            }
        }
        .item span:nth-of-type(){
            position: absolute;
            bottom: -%;
            left:;
            width:px;
            height:%;
            background-image: linear-gradient(to bottom,aqua ,transparent);
            animation: zuos linear infinite;
            animation-delay:.75s;
        }
        @keyframes zuo{%{
                bottom:-%;
            }%,100%{
                bottom:%;
            }
        }

animation-delay: 0.75s; 动画延迟执行。每条线对应延迟一段时间,形成时间差,形成环绕效果。

6.给第一,第三个按钮设置其它颜色:

 .item{
            filter: hue-rotate(deg);
        }
        .item{
            filter: hue-rotate(deg);
        }

filter: hue-rotate(100deg); 用色相旋转,这样不管背景还是阴影颜色都变了。

完整代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=.0">
    <title>Document</title>
    <style>
        *{
            margin:;
            padding:;
            box-sizing: border-box;
            font-family: 'fangsong';
        }
        body{
            height:vh;
            display: flex;
            align-items: center;
            justify-content: center;
            background-color: rgb(, 0, 0);
        }
        .item{
            position: relative;
            margin:px;
            width:px;
            height:px;
            text-align: center;
            line-height:px;
            text-transform: uppercase;
            text-decoration: none;
            font-size:px;
            letter-spacing:px;
            color: aqua;
            overflow: hidden;
            -webkit-box-reflect: belowpx linear-gradient( transparent,rgba(6, 133, 133,0.3));
        }
        .item:hover{
            background-color: aqua;
            box-shadow: 0 5px aqua,
 0 75px aqua,
 0 155px aqua;
            color: black;
        }
        .item span:nth-of-type(){
            position: absolute;
            left: -%; 
            width:%;
            height:px;
            background-image: linear-gradient(to left,aqua ,transparent);
            animation: shangs linear infinite;
        }
        @keyframes shang{%{
                left:-%;
            }%,100%{
                left:%;
            }
        }
        .item span:nth-of-type(){
            position: absolute;
            top: -%;
            right:;
            width:px;
            height:%;
            background-image: linear-gradient(to top,aqua ,transparent);
            animation: yous linear infinite;
            animation-delay:.25s;
        }
        @keyframes you{%{
                top:-%;
            }%,100%{
                top:%;
            }
        }
        .item span:nth-of-type(){
            position: absolute;
            right: -%;
            bottom:;
            width:%;
            height:px;
            background-image: linear-gradient(to right,aqua ,transparent);
            animation: xias linear infinite;
            animation-delay:.5s;
        }
        @keyframes xia{%{
                right:-%;
            }%,100%{
                right:%;
            }
        }
        .item span:nth-of-type(){
            position: absolute;
            bottom: -%;
            left:;
            width:px;
            height:%;
            background-image: linear-gradient(to bottom,aqua ,transparent);
            animation: zuos linear infinite;
            animation-delay:.75s;
        }
        @keyframes zuo{%{
                bottom:-%;
            }%,100%{
                bottom:%;
            }
        }
        .item{
            filter: hue-rotate(deg);
        }
        .item{
            filter: hue-rotate(deg);
        }
    </style>
</head>
<body>
     
        <a href="#" class="item item">
            aurora
            <span></span>
            <span></span>
            <span></span>
            <span></span>
        </a>
        <a href="#" class="item item">
            aurora
            <span></span>
            <span></span>
            <span></span>
            <span></span>
        </a>
        <a href="#" class="item item">
            aurora
            <span></span>
            <span></span>
            <span></span>
            <span></span>
        </a>
 
</body>
</html>