我有以下黄金分界线,我试图用纯CSS创建。
我尝试使用transform:scale;
CSS创建此内容到目前为止,我发现了以下内容:
.border_angle {
border: 50vw solid transparent;
width: 0;
height: 0;
border-bottom-color: transparent;
border-left-color: transparent;
border-top-color: transparent;
transform: scaleY(0.105) translateY(-50%);
-webkit-transform: scaleY(0.105) translateY(-50%);
-o-transform: scaleY(0.105) translateY(-50%);
-moz-transform: scaleY(0.105) translateY(-50%);
-ms-transform: scaleY(0.105) translateY(-50%);
position: absolute;
transform-origin: top center;
top: 0;
left: 0;
right: 0;
z-index: 11;
}
.border_angle_gold_l {
border-left-color: #BE955A;
}
.border_angle_gold-light_r {
border-right-color: #CCA56B;
}

<div style="margin-top: 200px;" class="border_angle border_angle_gold_l border_angle_gold-light_r"></div>
&#13;
基本上,我几乎拥有它,但我只需要反转三角形!!我无法弄清楚如何......任何帮助都会受到大力赞赏。
答案 0 :(得分:6)
我会以较少的代码和linear-gradient
:
.triangle {
margin-top:100px;
height:80px;
background-image:
linear-gradient(to bottom right, transparent 50%,#BE955A 51%),
linear-gradient(to top right, transparent 50%,#BE955A 51%),
linear-gradient(to bottom left, transparent 50%,#CCA56B 51%),
linear-gradient(to top left, transparent 50%,#CCA56B 51%);
background-position:0 0,0 100%,100% 0,100% 100%;
background-size:50.3% 50%;
background-repeat:no-repeat;
}
&#13;
<div class="triangle">
</div>
&#13;
这是使用clip-path的另一个想法:
.triangle {
margin-top: 100px;
height: 80px;
background: linear-gradient(to left, #CCA56B 50%, #BE955A 0);
-webkit-clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
}
&#13;
<div class="triangle">
</div>
&#13;
答案 1 :(得分:1)
您可以尝试复制div,然后添加translateX
,如:
.border_angle {
border: 50vw solid transparent;
width: 0;
height: 0;
border-bottom-color: transparent;
border-left-color: transparent;
border-top-color: transparent;
position: absolute;
transform-origin: top center;
top: 0;
left: 0;
right: 0;
z-index: 11;
}
.border_angle_gold_l {
border-left-color: #BE955A;
}
.border_angle_gold-light_r {
border-right-color: #CCA56B;
}
.first {
transform: scaleY(0.105) translateY(-50%) translateX(50%);
-webkit-transform: scaleY(0.105) translateY(-50%) translateX(50%);
-o-transform: scaleY(0.105) translateY(-50%) translateX(50%);
-moz-transform: scaleY(0.105) translateY(-50%) translateX(50%);
-ms-transform: scaleY(0.105) translateY(-50%) translateX(50%);
}
.second {
transform: scaleY(0.105) translateY(-50%) translateX(-50%);
-webkit-transform: scaleY(0.105) translateY(-50%) translateX(-50%);
-o-transform: scaleY(0.105) translateY(-50%) translateX(-50%);
-moz-transform: scaleY(0.105) translateY(-50%) translateX(-50%);
-ms-transform: scaleY(0.105) translateY(-50%) translateX(-50%);
}
&#13;
<div style="margin-top: 200px;" class="border_angle border_angle_gold_l border_angle_gold-light_r first"></div>
<div style="margin-top: 200px;" class="border_angle border_angle_gold_l border_angle_gold-light_r second"></div>
&#13;
答案 2 :(得分:1)
只是为了完成其他好的答案:
您可以借助边框创建三角形,并将其应用于分割器的伪元素::before
和::after
。这会减少您的代码,您只需要在标记中使用一个元素,而不必使用转换:
.divider {
position: relative;
width: 500px;
}
.divider::before,
.divider::after {
content: '';
position: absolute;
width: 0;
height: 0;
border-top: 20px solid transparent;
border-bottom: 20px solid transparent;
}
.divider::before {
border-right: 250px solid #bf9655;
left: 0;
}
.divider::after {
border-left: 250px solid #cda667;
right: 0;
}
<div class="divider"></div>
现在作为SVG is widely supported,使用SVG创建形状也是合理的。这是一个简单的例子,将代码长度减少到最小值141B:
<svg viewbox="0 0 24 2">
<polygon points="0,1 12,0 12,2" style="fill:#bf9655;" />
<polygon points="12,0 24,1 12,2" style="fill:#cda667;" />
</svg>