Вместо clip-path
я бы посчитал маску с градиентом одинаковым углом. Хитрость заключается в том, чтобы использовать большие значения, которые вы исправили, и расположить градиенты вокруг центра.
body {
background-color: #6e4d3c;
margin: 0;
}
header {
-webkit-mask:
linear-gradient(to bottom left ,#fff 49.8%,transparent 50%) bottom 0 right calc(50% + 750px),
linear-gradient(to bottom right,#fff 49.8%,transparent 50%) bottom 0 left calc(50% + 750px);
-webkit-mask-size:1501px 875px;
-webkit-mask-repeat:no-repeat;
mask:
linear-gradient(to bottom left ,#fff 49.8%,transparent 50%) bottom 0 right calc(50% + 750px),
linear-gradient(to bottom right,#fff 49.8%,transparent 50%) bottom 0 left calc(50% + 750px);
mask-size:1501px 875px;
mask-repeat:no-repeat;
height: 700px;
/* I use a similar gradient here to create the border effect */
background:
linear-gradient(to bottom left ,transparent calc(50% - 50px),#fff calc(50% - 49px))
bottom 0 right calc(50% + 750px)/1501px 875px,
linear-gradient(to bottom right,transparent calc(50% - 50px),#fff calc(50% - 49px))
bottom 0 left calc(50% + 750px)/1501px 875px,
url(http://i.pics.rs/70hBA.png) top/cover
#99ffe7;
background-repeat:no-repeat;
display:flex;
}
#logo {
width: 340px;
margin:auto;
}
<header>
<img id="logo" src="http://i.pics.rs/M7gQb.png" alt="Logo">
</header>
Это немного сложно, но вот иллюстрация только градиента в качестве фона, чтобы вы могли лучше понять, что происходит:
body {
background-color: #6e4d3c;
margin: 0;
padding: 0;
}
header {
background:
linear-gradient(to bottom left ,green 49.8%,transparent 50%) bottom 0 right calc(50% + 750px),
linear-gradient(to bottom right,blue 49.8%,transparent 50%) bottom 0 left calc(50% + 750px);
background-size:1501px 875px;
background-repeat:no-repeat;
height: 700px;
}
<header>
</header>
Цвета - это видимая часть ваших элементов, и если мы можем рассмотреть A
угол, созданный каждым градиентом, у нас будет sin(A) = 875px/1500px = 0.583
, который даст нам угол 35.685deg
. Увеличьте / деактивируйте значения, чтобы контролировать угол. Сохраняйте одинаковое соотношение, чтобы сохранить одинаковый угол. Просто убедитесь, что ширина, определяемая 1500px
, достаточно велика, чтобы градиент покрывал весь экран, а высота, определяемая 875px
, достаточно велика, чтобы покрыть высоту элемента:
Использование небольшого значения приведет к Вы получите это:
body {
background-color: #6e4d3c;
margin: 0;
}
header {
-webkit-mask:
linear-gradient(to bottom left ,#fff 49.8%,transparent 50%) bottom 0 right calc(50% + 60px),
linear-gradient(to bottom right,#fff 49.8%,transparent 50%) bottom 0 left calc(50% + 60px);
-webkit-mask-size:121px 70px;
-webkit-mask-repeat:no-repeat;
mask:
linear-gradient(to bottom left ,#fff 49.8%,transparent 50%) bottom 0 right calc(50% + 60px),
linear-gradient(to bottom right,#fff 49.8%,transparent 50%) bottom 0 left calc(50% + 60px);
mask-size:121px 70px;
mask-repeat:no-repeat;
height: 800px;
background:
linear-gradient(to bottom left ,transparent 48%,#fff 48%)
bottom 0 right calc(50% + 600px)/1201px 700px,
linear-gradient(to bottom right,transparent 48%,#fff 48%)
bottom 0 left calc(50% + 600px)/1201px 700px,
url(http://i.pics.rs/70hBA.png) top/cover,
#99ffe7;
background-repeat:no-repeat;
display:flex;
}
#logo {
width: 340px;
margin:auto;
}
<header>
<img id="logo" src="http://i.pics.rs/M7gQb.png" alt="Logo">
</header>
Вот связанный вопрос, чтобы получить более подробную информацию о вычислении background-size
/ background-position
: Использование процентных значений с background-position на линейном градиенте
PS: я добавляю / удаляю 1px
или небольшое значение в процентах, чтобы избежать зазубренных краев на градиентах