
简而言之,伪元素就是在原先的元素基础上插入额外的元素,而且这个元素不充当HTML的标签,这样就能保持HTML结构的整洁。
我们知道每个元素都有::before
和::after
这两个伪元素,也就是说每个元素都提供了3个矩形(元素本身1个,伪元素2个)来供我们进行形状的绘制。现在又有了clip-path
这个属性,几乎任意的形状都可以被绘制出来,全凭你的想象力
上面的动图是条子划过文本的动画,条子就是每个文本所对应的伪元素,对每个文本和其伪元素应用动画,就能达到上图的效果了
HTML:
<header>
<h1 class="title slide-bar">I'm alphardex.</h1>
<p class="subtitle slide-bar">A CSS Wizard</p>
</header>
CSS:
// palette: https://www.materialpalette.com/light-blue/pink
@import url("https://fonts.googleapis.com/css?family=Lato");
@import url("https://fonts.googleapis.com/css?family=Lora:400,400i,700");
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background: #222;
}
.slide-bar {
position: relative;
color: transparent;
animation: fill-text-white 2s 1.6s forwards;
&::before {
position: absolute;
content: "";
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #35b9f1;
transform: scaleX(0);
transform-origin: left;
animation: slide-in-out 2s cubic-bezier(0.75, 0, 0, 1) forwards;
}
}
@keyframes slide-in-out {
50% {
transform: scaleX(1);
transform-origin: left;
}
50.1% {
transform-origin: right;
}
100% {
transform: scaleX(0);
transform-origin: right;
}
}
@keyframes fill-text-white {
to {
color: white;
}
}
header {
.title,
.subtitle {
width: 250px;
height: 30px;
}
.title {
margin: 0;
font-family: Lora, serif;
font-size: 32px;
line-height: 30px;
&::before {
background: #FF4081;
}
}
.subtitle {
margin: 10px 0 0 0;
font-family: Lato, sans-serif;
font-size: 12px;
line-height: 30px;
letter-spacing: 5px;
text-transform: uppercase;
animation-delay: 3.2s;
&::before {
background: #03A9F4;
animation-delay: 2s;
}
}
}

© 版权声明
THE END
请登录后发表评论
注册
社交帐号登录