我尝试使用css创建自定义形状,使其看起来像: image of custom image shape 我尝试使用CSS3 Mask但支持不够宽,我需要支持IE 10,Firefox和Chrome
HTML:
<div class="image_holder">
<div class="image" style="background-image: url();"></div>
</div>
SASS:
.image_holder {
margin: 0 auto;
max-width: 348px;
max-height: 326px;
position: absolute;
top: 0;
bottom: -23px;
left: 0;
right: 0;
margin-top: 10px;
@media (max-width: 991px) {
bottom: inherit;
}
.image {
background-repeat: no-repeat;
background-position: 0 0;
}
}
Illustrator中的SVG掩码代码
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Lag_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="348px" height="326px" viewBox="0 0 348 326" enable-background="new 0 0 348 326" xml:space="preserve">
<g>
<defs>
<image id="SVGID_1_" x="0" y="0" width="348" height="326"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="hidden"/>
</clipPath>
<path clip-path="url(#SVGID_2_)" fill="#E52929" d="181px 1.4833px, 40.0206px 0px,-132.2294,40.6903-171.9397,127.7856
c-39.7103,87.0961,78.2502,157.8612,97.9829,170.1088c19.7319,12.2485,58.5174,42.1872,117.0348,12.2485
c58.5174-29.9395,118.3957-94.5812,121.7973-130.6441c3.4026-36.0629-1.7918-74.5152-52.6753-118.7237
C243.2785,18.7341,220.6634,1.4833,181.1749,1.4833"/>
</g>
</svg>
答案 0 :(得分:3)
以下是您正在寻找的近似纯CSS方式:
.image-holder {
position: relative;
overflow: hidden;
height: 150px;
width: 150px;
}
.image-holder:before {
box-shadow: 0 0 0 1000px #fff;
transform: rotate(-45deg);
border-radius: 40px;
position: absolute;
content: '';
bottom: 10px;
right: 10px;
left: 10px;
top: 10px;
}
.image-holder img {
display: block;
height: auto;
width: 100%;
}
&#13;
<div class="image-holder">
<img src="http://placehold.it/150">
</div>
&#13;
答案 1 :(得分:1)
您可以在父元素上使用box-shadow
大overflow: hidden
来创建此类形状。
.element {
margin: 20px;
background: url('https://img.grouponcdn.com/deal/5EXVDNMDEe1mtyEK6Pgp/ZC-1057x634/v1/c700x420.jpg');
background-size: cover;
padding: 25px;
background-position: center;
display: inline-block;
overflow: hidden;
}
.shape {
width: 140px;
height: 140px;
border-radius: 60px;
transform: rotate(45deg);
box-shadow: 0px 0px 0px 200px white;
}
<div class="element">
<div class="shape"></div>
</div>