it-swarm.com.ru

Клип-путь не работает в Firefox [% ​​values]

Я пытаюсь запустить svg clip-path в Mozilla, но это не работает. 

.mask-1 {
    -webkit-clip-path: polygon(0% 0%, 58% 0%, 39% 81.8%, 0% 81.8%);
    clip-path: polygon(0% 0%, 58% 0%, 39% 81.8%, 0% 81.8%);
}

Работает в хроме отлично. Может кто-нибудь может помочь мне с Mozilla и другими браузерами?

9
user4821826

Вы можете использовать встроенный SVG (как показано в коде ниже) в Firefox, где ваши баллы - это процент/100. Из-за атрибута clipPathUnits маска будет отзывчивой.

<svg width="0" height="0">
  <defs>
    <clipPath id="clip-shape" clipPathUnits="objectBoundingBox">
      <polygon points="0 0, 0.58 0, 0.39 0.818, 0 0.818" />
    </clipPath>
  </defs>
</svg>

Обратитесь к svg как 

.mask-1 {
   -webkit-clip-path: polygon(0% 0%, 58% 0%, 39% 81.8%, 0% 81.8%);
   clip-path: polygon(0% 0%, 58% 0%, 39% 81.8%, 0% 81.8%);
   -webkit-clip-path: url("#clip-shape"); 
   clip-path: url("#clip-shape");
}

Я много боролся с этим, так как мой svg был динамически добавлен на страницу. Применение css-свойства clip-path с задержкой (или загрузкой страницы) через js решило мои проблемы в FF. 

Насколько мне известно, в IE нет поддержки.

12
Cyril Mestrom

Я также много боролся с этим. Я рассматриваю те же вопросы, что и в предыдущем ответе, но решение, которое я нашел, заключалось в добавлении встроенного CSS-кода с помощью тега Style. Это некрасиво, но работает по крайней мере.

<div class="clip-this" style="background:red; height: 200px; width: 200px;"></div>

<!-- this lets Firefox display the angle -->
<svg class="clip-svg">
	<defs>
		<clipPath id="swipe__clip-path" clipPathUnits="objectBoundingBox">
			<polygon points="0.404 0, 1 0, 1 1, 0 1" />
		</clipPath>
	</defs>	
</svg>

<style>
  .clip-this {
	clip-path: polygon(40.4% 0, 100% 0, 100% 100%, 0 100%);
	clip-path: url("#swipe__clip-path");

}
</style>

4
atomictom

В дополнение к ответу @ atomictom я обнаружил, что если вы измените класс div на id, вам не нужно будет вставлять CSS

body{ 
  background: lightgreen;
}
#clip-this {
  background:red; 
  height: 200px; 
  width: 200px;
  clip-path: polygon(40.4% 0, 100% 0, 100% 100%, 0 100%);
  clip-path: url("#swipe__clip-path");

}
 <div id="clip-this"></div>
    
    <!-- this lets Firefox display the angle -->
    <svg class="clip-svg">
    	<defs>
    		<clipPath id="swipe__clip-path" clipPathUnits="objectBoundingBox">
    			<polygon points="0.404 0, 1 0, 1 1, 0 1" />
    		</clipPath>
    	</defs>	
    </svg>

0
Jay