問題は、フィルタのマスキングがサポートされていないことです。つまり、フィルタはすべての要素に適用されます。この制限の 1 つの回避策は、2 つの要素を持ち、フィルターを 1 つに適用し、それを透明にマスクすることです。次に、フィルター処理されていない 2 番目の (同一の) 要素が表示されます。
CSS は次のようになります。
#one, #two {
position: absolute;
width: 200px;
height: 400px;
font-size: 18px;
}
#one {
top: 20px;
left: 20px;
background: radial-gradient(circle, white 40px, lightblue 45px, transparent 50px);
background-position: -20px -20px;
}
#two {
top: 0px;
left: 0px;
-webkit-filter: blur(2px);
-webkit-mask-position: -20px -20px;
-webkit-mask-size: 200px 400px;
-webkit-mask-image: radial-gradient(circle, rgba(0, 0, 0, 1) 32px, rgba(0, 0, 0, 0) 38px);
background-color: white;
}
HTMLはアブドです
<div id="one">Lorem ipsum ...
<div id="two">Lorem ipsum ....
</div>
</div>
つまり、ネストされた 2 つの div で、同じ内容です。
私がそれについて好きではないこと:
同じコンテンツの 2 つの div が必要です。
マスクの位置 (div 2) を背景の位置 (div1) と同期させる必要があります。div 2 に円を設定して、すべてを同時に移動することもできますが、円がぼやけてしまいます。
しかし、それは始まりです:-)
ところで、私はどこでもグラデーションの最新の構文を使用しました。最初から互換性に制限があるので、気にしなくてもいいと思います。