#html #css #background
#HTML #css #фон
Вопрос:
Интересно, возможно ли добиться этого с помощью CSS?
Моя проблема в том, что эти перекрывающиеся «границы» — я мог бы переместить их с помощью translate, чтобы они не перекрывались, но тогда мне нужно было бы отрегулировать угловые градусы, чтобы иметь правильную вершину угла.
Есть ли какие-либо лучшие решения для этого?
.container {
background: url("https://images.pexels.com/photos/310452/pexels-photo-310452.jpeg?cs=srgbamp;dl=pexels-dom-j-310452.jpgamp;fm=jpg");
height: 300px;
display: flex;
position: relative;
}
.left {
width: 40%;
height: 100%;
background: white;
}
.right {
width: 60%;
height: 100%;
background: transparent;
}
.right:before,
.right:after {
content: '';
width: 11%;
height: 100%;
background: white;
/* background-clip:padding-box; */
position: absolute;
left: 40%;
}
.right:before {
top: 0;
transform: rotate(30deg) translate(-80%, -30%);
/* border-right: 30px solid rgba(0, 0, 136 ,0.5); */
box-shadow: 30px 0 0 0 rgba(0, 0, 136, 0.5);
}
.right:after {
bottom: 0;
transform: rotate(-30deg) translate(-80%, 40%);
/* border-right: 30px solid rgba(0, 0, 136 ,0.5); */
box-shadow: 30px 0 0 0 rgba(0, 0, 136, 0.5);
}
<div class="container">
<div class="left"></div>
<div class="right"></div>
</div>
Комментарии:
1. @XBuilder египетские боги… тупой я. Спасибо! Пожалуйста, добавьте его в качестве ответа.
Ответ №1:
Вот идея использования градиентов и масок. Вам понадобятся два вида градиента, и оба должны быть одинаковыми в свойствах маски и фона
.container {
background:
linear-gradient(120deg, transparent 40%,rgba(0, 0, 136, 0.5) 40.5% 45%, transparent 45.5%) top /100% 50% no-repeat,
linear-gradient(60deg, transparent 40%,rgba(0, 0, 136, 0.5) 40.5% 45%, transparent 45.5%) bottom/100% 50% no-repeat,
url("https://images.pexels.com/photos/310452/pexels-photo-310452.jpeg?cs=srgbamp;dl=pexels-dom-j-310452.jpgamp;fm=jpg");
-webkit-mask:
linear-gradient(120deg, transparent 40%,#fff 40.5%) top /100% 50% no-repeat,
linear-gradient(60deg, transparent 40%,#fff 40.5%) bottom/100% 50% no-repeat;
height: 400px;
}
<div class="container"></div>
Другая версия с другими значениями
.container {
background:
linear-gradient(131deg, transparent 40%,rgba(0, 0, 136, 0.5) 40.1% calc(40% 18px), transparent calc(40.1% 18px)) top /100% 40% no-repeat,
linear-gradient(60deg, transparent 40%,rgba(0, 0, 136, 0.5) 40.1% calc(40% 20px), transparent calc(40.1% 20px)) bottom/100% 60% no-repeat,
url("https://images.pexels.com/photos/310452/pexels-photo-310452.jpeg?cs=srgbamp;dl=pexels-dom-j-310452.jpgamp;fm=jpg");
-webkit-mask:
linear-gradient(131deg, transparent 40%,#fff 40.1%) top /100% 40% no-repeat,
linear-gradient(60deg, transparent 40%,#fff 40.1%) bottom/100% 60% no-repeat;
height: 400px;
}
<div class="container"></div>
Просто отрегулируйте оба градиента так, как вы хотите, чтобы получить окончательную форму