Нужно сверстать вот такую фигуру, но не знаю как правильно это сделать. Делал квадрат и через before
добавлял обрезанный border
, но на разных разрешениях экранов он как будто "отклеивался".
Первый вариант с градиентом:
div {
width: 500px;
padding-bottom: 40%;
max-width: 100%;
background: #000;
margin: 30px auto;
border-top: 2px solid #000;
background: linear-gradient(105deg, #000 0%, #000 25%, #ae0000 25%, #ae0000 100%);
}
<div></div>
И более объемный с :before
div {
position: relative;
width: 500px;
padding-bottom: 40%;
max-width: 100%;
background: #ae0000;
margin: 30px auto;
border-top: 2px solid #000;
overflow: hidden;
}
div:before {
content: '';
position: absolute;
background: #000;
width: 100%;
height: 100%;
right: 50%;
transform: rotate(-80deg);
-webkit-transform: rotate(-80deg);
-moz-transform: rotate(-80deg);
-o-transform: rotate(-80deg);
-ms-transform: rotate(-80deg);
}
<div></div>
И вариант с SVG фоном:
div {
width: 500px;
padding-bottom: 40%;
max-width: 100%;
margin: 30px auto;
border-top: 2px solid #000;
background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 660.0001 364.457"><polygon points="186.836 0 179.333 0 132.143 364.457 660 364.457 660 0 186.836 0" fill="#ae1a17"/><polygon points="0 0 0 364.457 132.143 364.457 179.333 0 0 0"/></svg>') no-repeat center / cover;
}
<div></div>
Решение через градиент:
body {
margin: 0;
}
.with-gradient {
background: linear-gradient(100deg, #000 30%, #ac0000 30%);
/* Про для демонстрации */
width: 100vw;
height: 100vh;
}
<div class="with-gradient">
</div>
Если отвлечься от конкретного применения, где, по всей видимости, решение при помощи градиента является достаточным, такие фигуры можно верстать при помощи clip-path
.
.megablock {
display: flex;
}
.block {
height: 400px;
flex-grow: 1;
}
.block--black {
background-image: linear-gradient(#000, #999);
clip-path: url(#polygon-1);
clip-path: polygon(0 0, 80% 0, 100% 100%, 0% 100%);
}
.block--color {
background-image: linear-gradient(rgba(0, 192, 255, 0.8), #ff9);
clip-path: url(#polygon-2);
clip-path: polygon(0 0, 100% 0, 100% 100%, 20% 100%);
}
<div class="megablock">
<div class="block block--black"></div>
<div class="block block--color"></div>
</div>
<svg class="clip">
<defs>
<clipPath id="polygon-1" clipPathUnits="objectBoundingBox" >
<polygon points="0 0, 0.8 0, 1 1, 0 1" />
</clipPath>
<clipPath id="polygon-2" clipPathUnits="objectBoundingBox" >
<polygon points="0 0, 1 0, 1 1, 0.2 1" />
</clipPath>
</defs>
</svg>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите пожалуйста)) Как сделать чтобы при нажатии на картинку скачивался документ? Я сделала через download НО как его привязать к картинке??
Эта косая граница между двумя цветами сверстана как псевдоэлемент в виде прямого (прямоугольного) треугольника
Как получить координаты видимой части дива через jQuery ? А потом от этого отталкиваться и сролить блок внутри этого дива