在 B 站看视频的时候发现当字幕遇到人物的时候就被裁切了,不会挡住人物,觉得很神奇。
实现方式(一张图片+一个属性,搞定)
- 一行css代码:
mask-image: url(img/head.png);
- 为了更好的兼容性,你可以补一个带 -webkit- 前缀的样式:
-webkit-mask-image: url(img/head.png);
-moz-mask-image: url(img/head.png);
-ms-mask-image: url(img/head.png);
-o-mask-image: url(img/head.png);
- 一张图片:
具体demo实现:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>mask</title>
</head>
<style type="text/css">
.mask {
width: 240px;
height: 240px;
color: #fff;
background-color: red;
/* background-image: url(img/head.png); */
-webkit-mask-image: url(img/head.png);
-webkit-mask-size: 100% 100%;
position: relative;
margin: auto;
}
p {
white-space: nowrap;
color: black;
}
.text {
position: absolute;
left: 240px;
animation: sport 15s linear infinite;
}
/* 鼠标经过停止运动 */
.text:hover {
animation-play-state: paused;
}
@keyframes sport {
0% {
}
100% {
/* 父盒子宽度减去100% */
transform: translateX(-1000px);
}
}
</style>
<body>
<div class="mask">
<p>
高端的效果,往往只需要采用最朴素的实现方式。一张图片+一个属性,直接搞定
</p>
<p>
高端的效果,往往只需要采用最朴素的实现方式。一张图片+一个属性,直接搞定
</p>
<p class="text">
高端的效果,往往只需要采用最朴素的实现方式。一张图片+一个属性,直接搞定
</p>
</div>
</body>
</html>
- 实现效果图
至此我们就实现了不遮挡人物的弹幕。至于这张图片是怎么来的,肯定是 AI 识别出来然后生成的。