gpt4 book ai didi

css - CSS3多边形的剪切部分,但保留内容?

转载 作者:行者123 更新时间:2023-12-04 21:25:52 36 4
gpt4 key购买 nike

我有一些代码:

:root {
--main-color1: rgba(255,000,000,0.7);
--main-colorB: rgba(000,000,000,0.3);

--border-width: 5px;
--arrow-width: 16px;
}

body {
color: #FFFFFF;
font-family: 'Franklin Gothic';
font-size: 20px;
text-shadow: 1px 1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, -1px -1px 0 #000;
line-height: 50px;
text-align: center;
}

.full { width: 1280px; margin: 0 auto; }

.inline { display: inline-block; }
.inner { -webkit-clip-path: inset(var(--main-border) 0); }

.color1 { background-color: var(--main-color1); }
.colorB { background-color: var(--main-colorB); }

.match {
text-transform: uppercase;
min-width: 200px;
-webkit-clip-path: polygon(
var(--arrow-width) 0,
0 50%,
var(--arrow-width) 100%,
calc(100% - var(--arrow-width)) 100%,
100% 50%,
calc(100% - var(--arrow-width)) 0
);
}
.match .inner {
-webkit-clip-path: polygon(
calc(var(--arrow-width) + var(--border-width)) var(--border-width),
calc(var(--border-width) + 3px) 50%,
calc(var(--arrow-width) + var(--border-width)) calc(100% - var(--border-width)),
calc(100% - var(--border-width) - var(--arrow-width)) calc(100% - var(--border-width)),
calc(100% - var(--border-width) - 3px) 50%,
calc(100% - var(--border-width) - var(--arrow-width)) var(--border-width)
);
}
		<div class="match colorB inline">
<div class="inner color1">
<div class="title">Grand Finals</div>
</div>
</div>

如您所见,这是一个灰色的 CSS3 多边形,里面有一个红色的 CSS3 多边形,里面有文本...

我遇到的问题是两个多边形都具有 alpha 透明度。不幸的是,因为第二个多边形在第一个多边形的内部,它改变了第二个多边形的结果颜色。有没有办法可以切掉第一个多边形的区域,这样它就不会改变第二个多边形的颜色?同时还保留透明度?

最佳答案

使用绝对定位的伪元素,剪裁它们来创建边框,并旋转底部的元素。由于旋转,::after 元素有一个小的重叠,我认为您可以通过手动剪入请求路径而不是旋转顶部的路径来解决这个问题。

:root {
--main-color1: rgba(255, 000, 000, 0.7);
--main-colorB: rgba(000, 000, 000, 0.3);
--border-width: 5px;
--arrow-width: 16px;
}
body {
color: #FFFFFF;
font-family: 'Franklin Gothic';
font-size: 20px;
text-shadow: 1px 1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, -1px -1px 0 #000;
line-height: 50px;
text-align: center;
}
.full {
width: 1280px;
margin: 0 auto;
}
.inline {
display: inline-block;
}
.inner {
-webkit-clip-path: inset(var(--main-border) 0);
}
.color1 {
background-color: var(--main-color1);
}

.match {
position: relative;
text-transform: uppercase;
min-width: 200px;
}
.match::before,
.match::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: var(--main-colorB);
-webkit-clip-path: polygon(var(--arrow-width) 0, 0 50%, calc(var(--border-width) + 4px) 50%, calc(var(--arrow-width) + var(--border-width) + 1px) var(--border-width), calc(100% - var(--arrow-width) - var(--border-width)) var(--border-width), calc(100% - var(--border-width) - 3px) 50%, 100% 50%, calc(100% - var(--arrow-width)) 0);
content: '';
}

.match::before {
}

.match::after {
transform: rotate(180deg);
}
.match .inner {
-webkit-clip-path: polygon(calc(var(--arrow-width) + var(--border-width)) var(--border-width), calc(var(--border-width) + 3px) 50%, calc(var(--arrow-width) + var(--border-width)) calc(100% - var(--border-width)), calc(100% - var(--border-width) - var(--arrow-width)) calc(100% - var(--border-width)), calc(100% - var(--border-width) - 3px) 50%, calc(100% - var(--border-width) - var(--arrow-width)) var(--border-width));
}
<div class="match inline">
<div class="inner color1">
<div class="title">Grand Finals</div>
</div>
</div>

关于css - CSS3多边形的剪切部分,但保留内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39058719/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com