HTML 边框插值
HTML Border Interpolation
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>
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>