Всех приветствую. Тут недавно столкнулся с SVG графикой, необходимо сделать одну фигуру. Вроде бы сделал, но столкнулся с рядом нюансов. На фото будет представлено как должно быть, и отдельно кодом, как есть. Читал мануалы разные, перепробовал многие вещи, почему-то не выходит так, как надо.
Тут вроде смотришь, всё легко и просто. Однако простыми силами css такую фигуру адекватной не сделать. Начинаешь делать через полигоны, выходит то, что ниже я вставлю...
Как убрать лишнюю толщину у левого верхнего угла? Как скруглить остальные углы?
Код прилагается.
.big-box {
display: flex;
flex-direction: row;
}
.promo-box {
margin-right: 1rem;
}
<div class="big-box">
<div class="promo-box">
<svg width="312" height="472" style="fill: #f2f2f2; stroke: #1698d9;" xmlns="http://www.w3.org/2000/svg" stroke-width="9">
<polygon points="0 50, 50 0, 312 0, 312 472, 0 472"/>
</svg>
</div>
<div class="promo-box">
<svg width="312" height="472" style="fill: #f2f2f2; stroke: #1698d9;" xmlns="http://www.w3.org/2000/svg" stroke-width="9">
<polygon points="0 50, 50 0, 312 0, 312 472, 0 472"/>
</svg>
</div>
<div class="promo-box">
<svg width="312" height="472" style="fill: #f2f2f2; stroke: #1698d9;" xmlns="http://www.w3.org/2000/svg" stroke-width="9">
<polygon points="0 50, 50 0, 312 0, 312 472, 0 472"/>
</svg>
</div>
</div>
<div class="promo-box">
<svg width="312" height="472">
<path d="M0 50 L50 0 H 312 V 472 H 0 Z" fill="red" stroke="blue" stroke-width="8" stroke-linejoin="round" stroke-linecap="round" vector-effect="non-scaling-stroke"></path>
<!-- <polygon points="0 50, 50 0, 312 0, 312 472, 0 472"/> -->
</svg>
</div>
<div class="promo-box">
<svg width="312" height="472" style="fill: #f2f2f2; stroke: #1698d9;" vector-effect="non-scaling-stroke" xmlns="http://www.w3.org/2000/svg" stroke-width="9">
<polygon points="0 50, 50 0, 312 0, 312 472, 0 472"/>
</svg>
</div>
<div class="promo-box">
<svg width="312" height="472" style="fill: #f2f2f2; stroke: #1698d9;" xmlns="http://www.w3.org/2000/svg" stroke-width="9">
<polygon points="0 50, 50 0, 312 0, 312 472, 0 472"/>
</svg>
</div>
Пробовал так, но ситуация не изменилась...
Используйте path
для рисования линии, и установите viewBox
чтобы линия не обрезалась:
.big-box {
display: flex;
flex-direction: row;
}
.promo-box {
margin-right: 1rem;
}
<div class="big-box">
<div class="promo-box">
<svg width="312" height="472" viewBox="-5 -5 332 482" style="fill: #f2f2f2; stroke: #1698d9;" xmlns="http://www.w3.org/2000/svg" stroke-width="9">
<path d="M0,50 L50,0 L292,0 a20,20 0 0 1 20,20 L312,452 a20,20 0 0 1 -20,20 L20,472 a20,20 0 0 1 -20,-20 L0,50 L50,0" />
</svg>
</div>
<div class="promo-box">
<svg width="312" height="472" viewBox="-5 -5 332 482" style="fill: #f2f2f2; stroke: #1698d9;" xmlns="http://www.w3.org/2000/svg" stroke-width="9">
<path d="M0,50 L50,0 L292,0 a20,20 0 0 1 20,20 L312,452 a20,20 0 0 1 -20,20 L20,472 a20,20 0 0 1 -20,-20 L0,50 L50,0" />
</svg>
</div>
<div class="promo-box">
<svg width="312" height="472" viewBox="-5 -5 332 482" style="fill: #f2f2f2; stroke: #1698d9;" xmlns="http://www.w3.org/2000/svg" stroke-width="9">
<path d="M0,50 L50,0 L292,0 a20,20 0 0 1 20,20 L312,452 a20,20 0 0 1 -20,20 L20,472 a20,20 0 0 1 -20,-20 L0,50 L50,0" />
</svg>
</div>
</div>
clip-path
в помощь:
* {
box-sizing: border-box;
}
img {
max-width: 100%;
}
.row {
display: flex;
}
.card {
padding: 0 5px;
}
.card-thumb {
border-radius: 0px 10px 10px 10px;
padding: 3px;
-webkit-clip-path: polygon(0 100%, 0 25%, 25% 0, 100% 0, 100% 100%);
clip-path: polygon(0 100%, 0 25%, 25% 0, 100% 0, 100% 100%);
}
.c-1 {
background: #1886bd;
}
.c-2 {
background: #d91667;
}
.card img {
display: block;
border-radius: 0px 7px 7px 7px;
-webkit-clip-path: polygon(0 100%, 0 25%, 25% 0, 100% 0, 100% 100%);
clip-path: polygon(0 100%, 0 25%, 25% 0, 100% 0, 100% 100%);
}
<div class="row">
<div class="card ">
<div class="card-thumb c-1">
<img src="https://images.unsplash.com/photo-1533738699159-d0c68059bb61?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=0bb9888db1d270eab08c77f41120dfca&auto=format&fit=crop&w=600&q=60" alt="">
</div>
</div>
<div class="card ">
<div class="card-thumb c-2">
<img src="https://images.unsplash.com/photo-1518064711538-4e27e702c706?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=d27c0369f194434f87a058060024cf0d&auto=format&fit=crop&w=600&q=60" alt="">
</div>
</div>
</div>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Если наводить мышь на объекты man поочередно, выждав пока pop-up пропадет - всё работает, конфликтов не возникаетНо, если не ждать пока пропадет...
Как можно очистить определенное поле по нажатию на кнопку?