Цвет границы пути клипа

#css #svg #clip-path

#CSS #svg #путь клипа

Вопрос:

Привет, я успешно обрезал путь к форме svg и сделал ее масштабируемой, используя документы, которые я нашел в Интернете.

Однако я пытаюсь добавить границу к пути клипа, но безуспешно. Я не хочу накладывать этот клип и добавлять отступы, так как мне нужна прозрачность.

Вот код, который я использовал, и эффект, который я пытаюсь воссоздать, прикреплен к изображению.

Заранее спасибо!

 lt;svg   height="0"   width="0"  viewBox="0 0 198.6 51.6"  xmlns="http://www.w3.org/2000/svg"   xmlns:xlink="http://www.w3.org/1999/xlink"gt;  lt;g id="Assets" fill="none"gt;  lt;defsgt;  lt;clipPath id="myClip" clipPathUnits="objectBoundingBox" transform="scale(0.00503524672 , 0.01937984496)"gt;  lt;path class="st0" d="M176.9,51.1H7.7c-4,0-7.2-3.2-7.2-7.2V7.7c0-4,3.2-7.2,7.2-7.2h183.1c4,0,7.2,3.2,7.2,7.2v22.2  c0,1.9-0.8,3.8-2.1,5.1L182,49C180.7,50.4,178.8,51.1,176.9,51.1z"gt;lt;/pathgt;  lt;/clipPathgt;  lt;/defsgt;  lt;/ggt; lt;/svggt;  lt;stylegt;  .btn_b {  -webkit-clip-path: url(#myClip);  clip-path: url(#myClip);  } lt;/stylegt;  

пример кнопки

Комментарии:

1. Клип-это как раз то, что нужно. То, что внутри, визуализируется, а то, что снаружи, — нет. Нет такой вещи, как граница.

Ответ №1:

Хотя вы не можете поместить границу, которая следует за контуром клипа, вы можете получить тот же эффект, используя фоновые изображения на псевдоэлементах.

Вот простой пример, где черная часть является просто меньшим псевдо-элементом после, но обрезана так же, как фон, предоставленный псевдо-элементом до.

 .btn_b {  -webkit-clip-path: url(#myClip);  clip-path: url(#myClip);  width: 40vmin;  height: 20vmin;  background-color: transparent;  position: relative;  border: none; }  button::before, button::after {  content: '';  position: absolute;  z-index: -1; }  button::before {  top: 0;  left: 0;  width: 100%;  height: 100%;  background-image: linear-gradient(to right, cyan, magenta); }  button::after {  top: 1vmin;  left: 1vmin;  width: calc(100% - 2vmin);  height: calc(100% - 2vmin);  background-color: black;  -webkit-clip-path: url(#myClip);  clip-path: url(#myClip); } 
 lt;button class="btn_b"gt;lt;/buttongt; lt;svg height="0" width="0" viewBox="0 0 198.6 51.6" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"gt;  lt;g id="Assets" fill="none"gt;  lt;defsgt;  lt;clipPath id="myClip" clipPathUnits="objectBoundingBox" transform="scale(0.00503524672 , 0.01937984496)"gt;  lt;path class="st0" d="M176.9,51.1H7.7c-4,0-7.2-3.2-7.2-7.2V7.7c0-4,3.2-7.2,7.2-7.2h183.1c4,0,7.2,3.2,7.2,7.2v22.2  c0,1.9-0.8,3.8-2.1,5.1L182,49C180.7,50.4,178.8,51.1,176.9,51.1z"gt;lt;/pathgt;  lt;/clipPathgt;  lt;/defsgt;  lt;/ggt; lt;/svggt; 

Комментарии:

1. Эй, спасибо за это, но это не дает того, к чему мы стремимся. Поэтому я хочу, чтобы фон был прозрачным, а не сплошным — это возможно?

2. Ах, извини, я думал, ты хочешь того, что тебе показали. Что вы подразумеваете под происхождением? Вы хотите, чтобы разноцветная окантовка, но черная часть была прозрачной (показывая, что находится прямо под всем этим элементом)?

3. Да, идея заключалась бы в том, чтобы черный бит был прозрачным и заполнялась только граница пути клипа