CSS一边切边框圈图像

时间:2016-08-19 14:11:32

标签: html css svg css-shapes

如何使用彩色边框制作以下形状

round image with shaped edge

我的第一次尝试是纯CSS,但附加的代码使得形状比圆形更多:



img {
    border: 2px #ff00ff solid;
    border-top-left-radius: 60% 50%;
    border-bottom-left-radius: 60% 50%;
    border-top-right-radius: 50% 20%;
    border-bottom-right-radius:50% 20%;
}

<img  src="https://d1wn0q81ehzw6k.cloudfront.net/additional/thul/media/4e34feee0acdc38a?w=400&h=400" style="width:100%">
&#13;
&#13;
&#13;

第二次尝试,在Opera和IE中不支持使用SVG,我不知道如何制作边框。 &#34; cut&#34;每次都不起作用。

&#13;
&#13;
img {
    clip-path: url(#myClip);
}
&#13;
<svg width="120" height="120"
     viewBox="0 0 120 120"
     xmlns="http://www.w3.org/2000/svg">

    <defs>
        <clipPath id="myClip">
            <circle cx="260" cy="256" r="256" style="fill:none;stroke:#00df0b;stroke-width:6"/>

        </clipPath>
    </defs>
</svg>
<img src="https://d1ra4hr810e003.cloudfront.net/media/27FB7F0C-9885-42A6-9E0C19C35242B5AC/0/D968A2D0-35B8-41C6-A94A0C5C5FCA0725/F0E9E3EC-8F99-4ED8-A40DADEAF7A011A5/dbe669e9-40be-51c9-a9a0-001b0e022be7/thul-IMG_2100.jpg" style="width:100%">
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:3)

最简单的解决方案可能只是制作SVG。

&#13;
&#13;
<svg width="400px" height="400px" viewBox="0 0 1 1"
     overflow="visible">
  <defs>
    <mask id="myMask" x="0" y="0" width="1" height="1"
          maskContentUnits="objectBoundingBox" fill="white">
      <path id="myPath" d="M 0.8 0.9 L 0.8 0.1 A 0.5 0.5 0 1 0 0.8 0.9 Z"/>
    </mask>
  </defs>
  <image xlink:href="https://d1ra4hr810e003.cloudfront.net/media/27FB7F0C-9885-42A6-9E0C19C35242B5AC/0/D968A2D0-35B8-41C6-A94A0C5C5FCA0725/F0E9E3EC-8F99-4ED8-A40DADEAF7A011A5/dbe669e9-40be-51c9-a9a0-001b0e022be7/thul-IMG_2100.jpg"
         x="0" y="0" width="1" height="1" mask="url(#myMask)"/>
  <use xlink:href="#myPath" fill="none" stroke="#f0f" stroke-width="0.01"/>
</svg>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

你可以使用伪元素来创建这样的东西:

div {
  height: 300px;
  width: 300px;
  position: relative;
  overflow: hidden;
  cursor: pointer;
  transition: all 0.4s;
}
div:hover {
  height: 500px;
  width: 500px;
}
div:before {
  content: "";
  box-sizing: border-box;
  position: absolute;
  top: 0;
  left: 15%;
  height: 100%;
  width: 100%;
  background: url(http://lorempixel.com/300/300);
  background-size: 100% 100%;
  border-radius: 50%;
  border: 10px solid tomato;
}
div:after {
  content: "";
  position: absolute;
  right: 0;
  top: 15%;
  height: 70%;
  background: tomato;
  width: 10px;
}
<div></div>

答案 2 :(得分:-1)

现在检查这个可能它是你想要的。 jsfiddle 示例2:jsfiddle 你可以移动宽度和高度来存档你想要的东西

div {
    width: 33%!important;
    height: 75vh!important;
    border: 2px #ff00ff solid;
    border-top-left-radius: 50% 50%;
    border-bottom-left-radius: 50% 50%;
    border-top-right-radius: 40% 20%;
    border-bottom-right-radius:40% 20%;
    overflow:hidden;
}