如何从 CSS 中的图像中获取此部分对角线形状
How to get this partially diagonal shape from an image in CSS
我正在使用 bootstrap 4 并尝试创建此形状的图像:
整个正方形都是我的图像,但我想剪掉红色部分或使其透明,以便看到背景颜色。
<div class="container">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
<img src="path/to/image" class="img-fluid" alt="Some text">
</div>
</div>
</div>
我该如何完成?
您可以使用 SVG 图像遮罩实现此效果。我不知道你面具的尺寸,但这个 link 应该对你有帮助:
CSS
只需使用 CSS border-radius
即可轻松实现。下面是一个简单的例子。
body {
background: blue;
}
img {
border-radius: 100% 20% 0% 0% / 15% 40% 0% 0%;
overflow: hidden;
}
<img src="https://placekitten.com/200/200" />
使用你提供的HTML,添加进去就这么简单
body {
background: blue;
}
img {
border-radius: 100% 20% 0% 0% / 15% 40% 0% 0%;
overflow: hidden;
}
<div class="container">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
<img src="https://placekitten.com/200/200" class="img-fluid" alt="Some text">
</div>
</div>
</div>
SVG/剪辑路径
另一种方法是使用 SVG 剪辑路径,然后将其用于您的图像。
这与 Persijn 的回答略有不同,但大同小异
body {
background: red;
}
img {
-webkit-clip-path: url("#shape_clip");
clip-path: url("#shape_clip");
width: 200px;
height: 200px;
}
<svg width="0" height="0">
<defs>
<clipPath id="shape_clip" clipPathUnits="objectBoundingBox">
<path d="M0,1 L1,1 L1,.3 Q1,0 .65,.1 L0,.25z" />
</clipPath>
</defs>
</svg>
<img src="https://placekitten.com/200/300" />
您可以使用类似下面的内容来获得所需的效果,您必须对其进行编辑以向其添加图片。但是 CSS before
标签是你的朋友
已更新
.clipboard, .shadowboard {
position: absolute;
top: 10px;
left: 10px;
right: 10px;
bottom: 10px;
background-color: #d3d0c9;
background-image: url(http://i1.wp.com/cdn.batman-news.com/wp-content/uploads/2014/06/Batman-News-Default.jpg);
background-size: cover;
background-position: center center;
border-top-right-radius: 65px;
}
<div class="clipboard" style="-webkit-clip-path: polygon(0 31%, 100% -4%, 100% 100%, 0% 100%);clip-path: polygon(0 31%, 100% -4%, 100% 100%, 0% 100%);"></div>
SVG
在 CSS 中很难实现复杂的形状。
我会推荐使用 SVG 来创建这个形状
<svg viewBox="0 0 100 100" width="300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink">
<clipPath id="clip">
<path d="M5,20
C0,20 70,10 70,10
C70,10 85,10 85,30
V95
H5Z"/>
</clipPath>
<image clip-path="url(#clip)" xlink:href="https://placekitten.com/g/300/300" x="0" y="0" height="100%" width="100%"/>
</svg>
我正在使用 bootstrap 4 并尝试创建此形状的图像:
整个正方形都是我的图像,但我想剪掉红色部分或使其透明,以便看到背景颜色。
<div class="container">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
<img src="path/to/image" class="img-fluid" alt="Some text">
</div>
</div>
</div>
我该如何完成?
您可以使用 SVG 图像遮罩实现此效果。我不知道你面具的尺寸,但这个 link 应该对你有帮助:
CSS
只需使用 CSS border-radius
即可轻松实现。下面是一个简单的例子。
body {
background: blue;
}
img {
border-radius: 100% 20% 0% 0% / 15% 40% 0% 0%;
overflow: hidden;
}
<img src="https://placekitten.com/200/200" />
使用你提供的HTML,添加进去就这么简单
body {
background: blue;
}
img {
border-radius: 100% 20% 0% 0% / 15% 40% 0% 0%;
overflow: hidden;
}
<div class="container">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
<img src="https://placekitten.com/200/200" class="img-fluid" alt="Some text">
</div>
</div>
</div>
SVG/剪辑路径
另一种方法是使用 SVG 剪辑路径,然后将其用于您的图像。
这与 Persijn 的回答略有不同,但大同小异
body {
background: red;
}
img {
-webkit-clip-path: url("#shape_clip");
clip-path: url("#shape_clip");
width: 200px;
height: 200px;
}
<svg width="0" height="0">
<defs>
<clipPath id="shape_clip" clipPathUnits="objectBoundingBox">
<path d="M0,1 L1,1 L1,.3 Q1,0 .65,.1 L0,.25z" />
</clipPath>
</defs>
</svg>
<img src="https://placekitten.com/200/300" />
您可以使用类似下面的内容来获得所需的效果,您必须对其进行编辑以向其添加图片。但是 CSS before
标签是你的朋友
已更新
.clipboard, .shadowboard {
position: absolute;
top: 10px;
left: 10px;
right: 10px;
bottom: 10px;
background-color: #d3d0c9;
background-image: url(http://i1.wp.com/cdn.batman-news.com/wp-content/uploads/2014/06/Batman-News-Default.jpg);
background-size: cover;
background-position: center center;
border-top-right-radius: 65px;
}
<div class="clipboard" style="-webkit-clip-path: polygon(0 31%, 100% -4%, 100% 100%, 0% 100%);clip-path: polygon(0 31%, 100% -4%, 100% 100%, 0% 100%);"></div>
SVG
在 CSS 中很难实现复杂的形状。
我会推荐使用 SVG 来创建这个形状
<svg viewBox="0 0 100 100" width="300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink">
<clipPath id="clip">
<path d="M5,20
C0,20 70,10 70,10
C70,10 85,10 85,30
V95
H5Z"/>
</clipPath>
<image clip-path="url(#clip)" xlink:href="https://placekitten.com/g/300/300" x="0" y="0" height="100%" width="100%"/>
</svg>