[英]background-clip with round border radius
如何在background-clip:padding-box上实现边框半径?
我的边框很粗,不透明; 但是,所有四个内角均为90度角。
<!DOCTYPE html>
<html>
<head>
<title>Border</title>
<style>
body, html{
width: 100%;
height: 100%;
}
.image_frame{
display: flex;
width:50%;
background: white;
background-clip: padding-box;
border: 20px solid rgba(0, 0, 0, 0.3);
border-radius: 20px;
}
</style>
</head>
<body>
<div class="image_frame">
<img src="http://trudog.com/home/wp-content/uploads/2015/03/Shocked-Pups.jpg">
</div>
</body>
</html>
您实现background-clip: padding-box
很好。 实际上, .image_frame
父级的.image_frame
(在本例中为body
)应该在半透明边框下方可见。
这里的问题是您的边框宽度等于您的边框半径。 结果,边界的内角将为90度,因为圆角基本上采用实心象限的形式。 从规格 :
填充边缘(内部边界)半径是外部边界半径减去相应的边界厚度。 在这导致负值的情况下,内半径为零。
如果要使内角具有半径,则需要指定大于半径宽度的边界半径。 对于20px的内半径和20px的border-width
,所得的border-radius
为40px:
.image_frame {
display: flex;
width: 50%;
background: white;
background-clip: padding-box;
border: 20px solid rgba(0, 0, 0, 0.3);
border-radius: 40px;
overflow: hidden;
}
另外,您将需要设置overflow: hidden
以使圆角实际剪切图像; 有关详细信息,请参见我对这个问题的回答。
<!DOCTYPE html>
<html>
<head>
<title>Border</title>
<style>
.image_frame {
display: flex;
width: 150px;
background: white;
background-clip: padding-box;
border: 20px solid rgba(0, 0, 0, 0.3);
border-radius: 190px;
}
body, html{
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div class="image_frame">
<img src="http://trudog.com/home/wp-content/uploads/2015/03/Shocked-Pups.jpg" style="border-radius: 146px;width: 150px; height: 150px;">
</div>
</body>
</html>
试试这个..... https://jsfiddle.net/f0v5v8ns/1/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.