HTML边框插值



Google Chrome在给定以下HTML时会画一个红色圆圈。我最初以为这是Chrome中的一个错误,但Safari也画了一个红圈。在Firefox中,页面显示为白色。边界插值浏览器是特定的,还是红色圆圈只是因为渲染错误而出现的?

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>SVG Overflow Experiment</title>
</head>
<body>
<div
style="
border-color: white;
border-radius: 50%;
width: 200px;
height: 200px;
overflow: hidden;
"
>
<svg width="200" height="200">
<rect width="300" height="300" fill="red" />
<rect width="400" height="400" fill="white" />
</svg>
</div>
</body>
</html>

看起来颜色在圆形边缘上混合。可能是一个抗锯齿的问题

我又添加了一个矩形,并更改了颜色来证明这一点。在下面的代码中,删除黄色或蓝色矩形,当两者都存在时,您会注意到它们正在混合。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>SVG Overflow Experiment</title>
</head>
<body>
<div
style="
border-color: white;
border-radius: 30%;
width: 200px;
height: 200px;
overflow: hidden;

"
>
<svg width="200" height="200">
<rect width="400" height="400" fill="rgba(0,0,255,0.4)" />
<rect width="300" height="300" fill="yellow"/>
<rect width="400" height="400" fill="white" />
</svg>
</div>
Testing
</body>
</html>


如果在svg上设置mix-blend-mode: hard-light;,则会删除混合。您可以根据需要选择其他混合
或者简单地添加属性filter:brigtness(1)似乎可以解决chrome中的问题。我不知道为什么它有效。将亮度设置为1比设置混合酒窖无害。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>SVG Overflow Experiment</title>
</head>
<style>
div {
border-color: white;
border-radius: 50%;
width: 200px;
height: 200px;
overflow: hidden;
}

svg {
filter: brightness(1);
/* or use below */
/* mix-blend-mode: hard-light; /* choose blending as per your requirement */
}
</style>
<body>
<div>
<svg width="100%" height="100%">
<rect width="400" height="400" fill="rgba(0,0,255,0.4)" />
<rect width="300" height="300" fill="yellow" />
<rect width="400" height="400" fill="white" />
</svg>
</div>
Testing
</body>
</html>

最新更新