前端文字折叠特效实例

165 阅读2分钟

我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!

前端文字折叠特效实例

码上掘金展示

code.juejin.cn/pen/7141643…

具体代码解析

主要是利用阴影先叠层白的阴影,再在白的后面叠层黑的阴影,其中用双伪类实现文字的上半部分,最后鼠标经过文字上半部分文字折叠,下半部分也是一样。

实现:

1. 定义标签:

 <h1>aurora</h1>

2. 设置文字基本样式:

h1{
             text-transform: uppercase;
             letter-spacing: 3px;
             font-size: 15vw;
             transform: rotate(-10deg) skew(30deg);
             position: relative;
             color: rgba(0, 101, 253, 0.6);
             -webkit-text-stroke: 2px  rgba(0, 101, 253, 0.6);
             transition: all 1s; 
         }

text-transform: uppercase; 字母变为大写字母。

letter-spacing: 3px; 字间距。

transform: rotate(-10deg) skew(30deg); 先旋转-10deg,再倾斜30deg。

-webkit-text-stroke: 2px rgba(0, 101, 253, 0.6); 文字边框 transition: all 1s; 过渡效果

3. 鼠标经过文字显示内陷效果:

 h1:hover{
           /*   先叠层白的,再叠层黑的,先叠的白会覆盖到黑,白的地方亮,黑的地方暗 */
            text-shadow:3px 3px 6px #fff,
            3px 3px 6px #fff,
            0 0 0px #000;           
         }

主要是利用阴影先叠层白的阴影,再在白的后面叠层黑的阴影,这样一来,白的地方发亮,黑的地方暗,形成内陷效果。

4. 用双伪类实现文字的上半部分,(注:双伪类会继承父元素的些css属性):

h1::before{
             content: 'aurora';
             color: rgb(255, 255, 255);
             position: absolute;
             top: 0;
             left: 0;
             clip-path: inset(0 0 50% 0);
             transition: all 1s;     
             transform: rotateX(0deg) skew(0deg);       

         }

position: absolute;
top: 0;
left: 0; 定位。
clip-path: inset(0 0 50% 0); 裁剪,只裁文字的上半部分显示。
transform: rotateX(0deg) skew(0deg); 暂时不旋转,不倾斜。

5. 鼠标经过文字上半部分文字折叠:

 h1:hover::before{
            transform: rotateX(-30deg) skew(-30deg); 
           color: rgb(243, 243, 243);
           text-shadow: 0 0 1px black;
            
         }

transform: rotateX(-30deg) skew(-30deg); 旋转-30deg,倾斜-30deg。
color: rgb(243, 243, 243); 颜色变暗点。
text-shadow: 0 0 1px black; 阴影。
6. 异曲同工,设置下半部分:

 h1::after{
             content: 'aurora';
             color: rgb(255, 255, 255);
             position: absolute;
             top: 0;
             left: 0;
             clip-path: inset(50% 0 0 0);
             transition: all 1s;     
             transform: rotateX(0deg) skew(0deg); 
            
         }
         h1:hover::after{
            transform: rotateX(40deg) skewX(20deg) ;
            color: rgb(212, 212, 212);
            text-shadow: 0 0 1px black;
         }