青训营-我的名片|[青训营-码上掘金]

78 阅读3分钟

当青训营遇上码上掘金

青训营-我的名片|[青训营-码上掘金]

先上一个效果预览图:

我的名片.gif

可以看到主题部分是一个方框,然后我们做了圆角处理,并且在边框上面有一个流水灯的效果,然后在方框正中间,我们写上自己的一些信息。

1. 代码实现

首先我们来实现一个方框,这里我们设置方框的宽高的方式是利用padding来实现的,我们先给整个body设置宽高为100vh,和100vw,然后我们给这个盒子设置一个padding,这样我们就可以的到一个盒子。

body{
    /* 居中 */
    display:flex;
    justify-content: center;
    align-items: center;
    overflow: hidden;
    /* min-height: 100vh; */
    width: 100vw;
    height: 100vh;
    background-color: #000;

    
}
.main{
    overflow: hidden;
    padding: 30vmin 20vmin;
    background-color: rgb(10, 3, 16);
    /* 文字居中 */
    text-align: center;
    /* 文字字体 */
    font-size: 2vmin;
    color:#0FF;
    /* 圆角边框 */
    border-radius:5vmin;
    z-index: 0;
    position: relative;
}

在上面的代码中,我们通过flex布局,将盒子垂直居中,并且在背景设置了一个颜色,我们顺便设置了一下文字的位置,大小等等。并且通过border-radius设置了圆角,这样使得方框看起来更加圆润。

边框厚度的实现

这个时候我们并不能看到边框,这是为什么呢,因为我们没有设置边框的宽度,通常我们通过border来设置边框的一些参数,但是我们这里不使用这个方法,因为我们需要的是一个流水灯的效果,所以我们需要一个动态的边框,这个时候我们就需要用到伪元素了。

首先就是before伪元素,我们通过这个一个伪元素,制造出一个很大的盒子,然后将这个盒子的颜色改为一种射灯状的状态,我们可以通过background-image: conic-gradient(transparent,#0FF,transparent 40%);来实现这个射灯状的效果,然后我们再设置一个动画,让这个盒子在中心旋转起来,这样就可以实现一个流水灯的效果了。

.main::before{
    content: "";
    width: 200%;
    height: 200%;
    background-color: rgb(48, 48, 48);
    z-index: -2;
    position: absolute;
    left: -50%;
    top: -50%;
    background-image: conic-gradient(transparent,#0FF,transparent 40%);
    animation: rotate 5s linear infinite;
}
@keyframes rotate {
    100%{transform:rotate(360deg);}
}

遮住大盒子多与的部分

在现在我们的效果中,前面伪元素的盒子太大了,此时我们需要将多余的部分遮住,这个时候我们就需要用到after伪元素了,我们通过这个伪元素,将多余的部分遮住。

.main::after{
    content: "";
    /* width: 18vmin;
    height: 28vmin; */
    inset: 1vmin;
    background-color: #000;
    border-radius: 4vmin;
    position: absolute;
    z-index:-1;
}

可以看到我们在我们给这两个伪元素设置了一个z-index,这是为了防止层级错误,导致效果不能实现。

2.总结

通过这个小案例,我们可以学习到一些css的新知识,比如伪元素,伪类,以及一些新的css属性,比如conic-gradient,以及一些新的css单位,比如vmin,vmax等等。