Safari浏览器中CSS mask-image或mask-mode失效问题求助
Safari下CSS mask-image/mask-mode失效问题及解决方案
在Safari浏览器中,CSS的mask-image或mask-mode属性无法正常工作,但该效果在Chrome浏览器中可正常运行:
- 正常效果(Chrome):

- 失效效果(Safari):

以下是采用Stack Overflow用户herrstrietzel发布的解决方案2——「用mask替代CSS-clip path」的代码实现:
CSS代码
:root{ --mask : url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 86.6 100'><defs><path id='hex' d='M38.97 2.5q4.33-2.5 8.66 0l34.64 20q4.33 2.5 4.33 7.5l0 40q0 5-4.33 7.5l-34.64 20q-4.33 2.5-8.66 0l-34.64-20q-4.33-2.5-4.33-7.5l0-40q0-5 4.33-7.5l34.64-20z'/></defs><rect width='100%' height='100%'/><use href='%23hex' fill='white' stroke='black'/></svg>"); --hexfront : url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 86.6 100'><path fill='none' stroke='white' stroke-width='3' transform='scale(0.75)' transform-origin='50%' d='M38.97 2.5q4.33-2.5 8.66 0l34.64 20q4.33 2.5 4.33 7.5l0 40q0 5-4.33 7.5l-34.64 20q-4.33 2.5-8.66 0l-34.64-20q-4.33-2.5-4.33-7.5l0-40q0-5 4.33-7.5l34.64-20z'/></svg>"); } .hexagon { width: 200px; display: inline-block; margin: 0 5px; position:relative; line-height:0; } img { aspect-ratio:1/1.15; width: 100%; height:100%; } .mask{ mask-image: var(--mask); mask-mode: luminance; } .mask:after { content: ""; display: block; position: absolute; inset:0%; height: 100%; width: 100%; background-image: var(--hexfront); }
HTML代码
<div class="hexagon"> <div class="mask"> <img src="https://images.unsplash.com/photo-1724884564497-f5024b7e2f93?q=80&w=257" /> </div> </div>
内容的提问来源于stack exchange,提问作者base
相关产品推荐
相关产品推荐

