我试图创建一个纯的css生成的彩虹渐变覆盖在一个基本的背景之上.目标是使彩虹在中心完全不透明,并逐渐褪色到接近边缘的完全透明,与背景无缝混合.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Smooth Fading of CSS-Generated Rainbow Gradient</title>
<style>
.container {
position: relative;
width: 500px;
height: 300px;
overflow: hidden;
background: repeating-linear-gradient(45deg, #f00, #f00 10px, #0f0 10px, #0f0 20px);
}
.rainbow-overlay {
position: absolute;
top: 25%;
left: 25%;
width: 50%;
height: 50%;
background: linear-gradient(to right, violet, indigo, blue, green, yellow, orange, red);
mask:
linear-gradient(transparent 10%, black 20%, black 80%, transparent 90%) /* vertical */ ,
linear-gradient(to right, transparent 10%, black 20%, black 80%, transparent 90%) /* horizontal */;
}
</style>
</head>
<body>
<div class="container">
<div class="rainbow-overlay"></div>
</div>
</body>
</html>
不幸的是,当前使用mask
属性与linear-gradient
的实现导致两个梯度的并集或合并,而不是期望的交集.
有没有办法实现这种平滑淡入淡出的效果? 任何见解或替代方法都将受到极大的赞赏.