css - 带圆 Angular 的菱形和背景图像

标签 css svg css-shapes

我需要实现这个:

diamond with image and rounded corners

请注意,容器已旋转但图片未旋转..

现在我做了:

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/

相关文章:

html - 在 HTML 中正确显示存储在数据库中的带有标记的文本

javascript - 嵌套表格列等宽

javascript - webkit 浏览器中 svg 文本的奇怪行为

svg - 有没有在 gmail 中显示 svg 图像的技巧?

html - 跨浏览器的神秘高度问题

css - 在按回图像交换位置后,Chrome 中两个 SVG 图像的奇怪行为

html - CSS将一个正方形分成4个三 Angular 形

javascript - 以内圆和外圆为界的三 Angular 形

html - 纯 CSS 中的等距拱形

php - 开发人员构建网站的后端并将其与另一个开发人员的前端代码集成是否可行?