解决text-shadow和text-fill-color的冲突

前言

今天在写样式是有一组文字既要文字渐变,又要文字阴影,但是有文字阴影的话,文字渐变就会沉底,阴影会在文字的上面

.front-text{
     
width: 325px;
height: 105px;
font-size: 140px;
font-family: PingFang SC;
font-weight: bold;
color: #FFFFFF;
text-shadow: 0px 4px 0px #D52A03;
background: linear-gradient(180deg, #FFFFFF 0%, #FFE579 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}

效果如下:
有问题的效果

解决方法

  1. 将文字阴影与文字渐变拆分到连个元素上,然后两个元素通过定位,定位在同一z轴上重叠,下面字体调透明。从而实现两者都有。
  2. 用到了一个css类名后的中括号和content:attr(data-content);的属性,在标签上写上自定义属性data-content,css就可以动态拿到标签文本内容。
文字1span> 文字2span> div>
.front-text {
     
    margin-top : 70px;
    font-size  : 26px;
    font-family: PingFang SC;
    font-weight: bold;
    text-align : center;
    white-space: nowrap;
}

.data-content {
     
    position: relative;
    color      : transparent;
    text-shadow: 0px 2px 0px #D52A03;
}

.data-content[data-content]::after {
     
    content                : attr(data-content);
    display                : block;
    position               : absolute;
    color                  : #fff;
    left                   : 0;
    top                    : 0;
    z-index                : 2;
    background             : linear-gradient(180deg, #FFFFFF 0%, #FFE579 100%);
    background-clip        : text;
    -webkit-text-fill-color: transparent;
    text-shadow            : none;
}

成功的效果如下:
成功的效果

总结

  1. css永远滴神!
  2. 核心就是text-shadow和text-fill-color不能共存

你可能感兴趣的:(css3,react)