我有一些代码:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 http://localhost:5000

: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)
);
}

正如你所看到的,这是一个灰色的CSS3多边形,里面有一个红色的CSS3多边形,里面有文字......
我遇到的问题是多边形都有alpha透明度。不幸的是,因为第二个多边形在第一个多边形的内部,所以它改变了第二个多边形的结果颜色。有没有办法可以切出第一个多边形的区域,这样它就不会改变第二个多边形的颜色?同时还保留透明度?
答案 0 :(得分:0)
使用绝对定位的伪元素,并剪切它们以创建边框,并旋转底部元素。由于旋转,与::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>
&#13;