我需要实现这个:
请注意,容器已旋转但图片未旋转..
现在我做了:
div.img {
position: relative;
overflow: hidden;
width: 320px;
}
div.img img {
display: block;
width: 100%
}
div.img span {
position: absolute;
content: "";
width: 75%;
height: 75%;
transform: rotate(133deg);
background: white
}
div.img span.tl {
top: -36%;
left: -36%
}
div.img span.bl {
bottom: -36%;
left: -36%
}
div.img span.br {
bottom: -36%;
right: -36%
}
div.img span.tr {
top: -36%;
right: -36%
}
<div class="img">
<img src="http://lorempixel.com/320/320/nature/?v2s" alt="Pellete">
<span class="tl"></span>
<span class="bl"></span>
<span class="tr"></span>
<span class="br"></span>
</div>
但是我找不到用这个解决方案添加圆 Angular 的方法...
我认为也许可以创建一个形状并将其用作带有 css 的 mask ,然后将其添加到具有更高 z-index 的容器中,
你能想出更好的办法吗?
PD:作为最后的手段,我会要求设计师创建一个具有该形状的 .svg(因为响应性与图像将无法正确呈现)..
最佳答案
如果您计划使用 svg,为什么不立即使用它。您也不需要要求您的设计师来制作它,您可以对其进行内联编码、控制圆 Angular 、形状……而且它是可扩展的:
svg{display:block;width:30%;height:auto;}
<svg viewbox="1 1 8 8">
<pattern id="image" width="10" height="10" patternUnits="userSpaceOnUse">
<image xlink:href="http://i.imgur.com/kreZqnx.jpg" x="0" y="0" height="10" width="10" />
</pattern>
<path d="M5.5 1.5 L8.5 4.5 Q9 5 8.5 5.5 L5.5 8.5 Q5 9 4.5 8.5 L 1.5 5.5 Q1 5 1.5 4.5 L4.5 1.5 Q 5 1 5.5 1.5z" fill="url(#image)" />
</svg>
其他要点是:
- 您可以为用户交互(点击或悬停)保持形状的边界
- 在任何背景上显示它(纯色渐变、背景图像...)
示例:
#shape:hover{
cursor:pointer;
fill:gold;
}
body{
background:url('http://i.imgur.com/5NK0H1e.jpg');
background-size:cover;
}
svg{display:block;width:50%;height:auto;}
<svg viewbox="1 1 8 8">
<pattern id="image" width="10" height="10" patternUnits="userSpaceOnUse">
<image xlink:href="http://i.imgur.com/kreZqnx.jpg" x="0" y="0" height="10" width="10" />
</pattern>
<path id="shape" d="M5.5 1.5 L8.5 4.5 Q9 5 8.5 5.5 L5.5 8.5 Q5 9 4.5 8.5 L 1.5 5.5 Q1 5 1.5 4.5 L4.5 1.5 Q 5 1 5.5 1.5z" fill="url(#image)" />
</svg>
关于css - 带圆 Angular 的菱形和背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34249809/