使用渐变应用 CSS hue-rotate() 滤镜
Apply CSS hue-rotate() filter with a gradient
是否可以根据梯度应用其参数值的 CSS 过滤器?例如,我想在我的网页的右上角应用 +15° 的色调旋转,在左下角应用 -15°,它们之间有一个平滑的颜色渐变(中间的任何点都应该像它一样应用了 hue-rotate(some number between -15 and +15)
。
我知道可以很容易地生成渐变作为背景,但我想要滤镜本身的渐变。
使用 HSL 颜色。
background-image: linear-gradient(0deg, hsl(0, 100%, 50%) 0%, hsl(30, 100%, 50%) 100%);
您可以使用两个图层和蒙版来近似此:
html {
min-height:100%;
position:relative;
}
html::before,
html::after {
content:"";
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
background:red;
}
html::before {
filter:hue-rotate(100deg);
-webkit-mask:linear-gradient(to bottom right,#fff,transparent);
}
html::after {
filter:hue-rotate(-100deg);
-webkit-mask:linear-gradient(to top left,#fff,transparent);
}
这也可以用图片来完成:
html {
min-height:100%;
position:relative;
}
html::before,
html::after {
content:"";
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
background:url(https://i.picsum.photos/id/1074/800/800.jpg) center/cover;
}
html::before {
filter:hue-rotate(150deg);
-webkit-mask:linear-gradient(to bottom right,#fff,transparent);
}
html::after {
filter:hue-rotate(-150deg);
-webkit-mask:linear-gradient(to top left,#fff,transparent);
}
是否可以根据梯度应用其参数值的 CSS 过滤器?例如,我想在我的网页的右上角应用 +15° 的色调旋转,在左下角应用 -15°,它们之间有一个平滑的颜色渐变(中间的任何点都应该像它一样应用了 hue-rotate(some number between -15 and +15)
。
我知道可以很容易地生成渐变作为背景,但我想要滤镜本身的渐变。
使用 HSL 颜色。
background-image: linear-gradient(0deg, hsl(0, 100%, 50%) 0%, hsl(30, 100%, 50%) 100%);
您可以使用两个图层和蒙版来近似此:
html {
min-height:100%;
position:relative;
}
html::before,
html::after {
content:"";
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
background:red;
}
html::before {
filter:hue-rotate(100deg);
-webkit-mask:linear-gradient(to bottom right,#fff,transparent);
}
html::after {
filter:hue-rotate(-100deg);
-webkit-mask:linear-gradient(to top left,#fff,transparent);
}
这也可以用图片来完成:
html {
min-height:100%;
position:relative;
}
html::before,
html::after {
content:"";
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
background:url(https://i.picsum.photos/id/1074/800/800.jpg) center/cover;
}
html::before {
filter:hue-rotate(150deg);
-webkit-mask:linear-gradient(to bottom right,#fff,transparent);
}
html::after {
filter:hue-rotate(-150deg);
-webkit-mask:linear-gradient(to top left,#fff,transparent);
}