Как сделать маску для ie edge или clip-path?

722
17 февраля 2017, 03:24

Добрый день, мне нужно сделать маску для изображения, но ie edge не понимает это свойство: clip-path: polygon(0 0,100% 15%,100% 100%,0 85%); Я прочитал что можно сделать с помощью svg, но я не понимаю как мне сам объект создать, какие размеры указывать и как. Маска должна выглядеть вот так:

Answer 1

Обратите внимание на clipPathUnits="objectBoundingBox" — благодаря этому атрибуту точки обрезания задаются относительно: 1 = 100%, .1 = 10%.

<svg width=100% height=300> 
  <defs> 
    <clipPath id="clip" clipPathUnits="objectBoundingBox"> 
      <polygon points="0,0 1,.1 1,1 0,.9"></polygon> 
    </clipPath> 
  </defs> 
  <image xlink:href="http://placeimg.com/500/300/any" clip-path="url(#clip)" width=500 height=300 /> 
</svg>

Answer 2

Примерно так:

Demo JsFiddle

CSS

body { background-color: #e0e0e0; }
#image-wrapper { position: relative; }
.svg-background, .svg-image { clip-path: url(#clip-triangle); }
.svg-image {
    -webkit-transition: all 0.5s ease 0.2s;
    -moz-transition: all 0.5s ease 0.2s;
    opacity: 1;
    transition: all 0.5s ease 0.2s;
}
svg.clip-svg { height: 250px; position: absolute; width: 250px; }
#svg-1 { left: 0px; top: 0px; }

HTML

<div>
    <div id="image-wrapper">
    <svg id="svg-1" class="clip-svg">
        <rect class='svg-background' width="300" height="300" fill="#ffffff" />
        <image id="img-1" class='svg-image' width="300" height="300" xlink:href="http://25.media.tumblr.com/tumblr_m5nre6cxkQ1qbs7p5o1_r1_500.jpg" />
    </svg>
</div>
<svg id="svg-defs">
    <defs>
        <clipPath id="clip-triangle">
            <polygon points="0 0, 100 0, 112 13, 240 13, 240 250, -250 250"/>
        </clipPath>
    </defs>
</svg>
READ ALSO
Разное поведение программы на Win7 и WinXP

Разное поведение программы на Win7 и WinXP

Есть такой код (минимальный рабочий пример):

433
Как определить, есть ли буквы в строке? C++

Как определить, есть ли буквы в строке? C++

Как определить, есть ли буквы в строке без функций и очень коротко(буквы любые - и латинские, и русские)

624
Проблема с деструктором в С++

Проблема с деструктором в С++

Задача - создать класс stringЯ прописал конструкторы, перегрузил операции, и программа вроде работает нормально, но в последней строке возникает...

495
Можно ли использовать один сокет в нескольких потоках?

Можно ли использовать один сокет в нескольких потоках?

Клиентское приложение на C++ передаёт на HTTP-сервер данные - идентификатор клиента (чтобы обозначить присутствие), кадры с веб-камеры (по запросу),...

464