如何反转使用 CSS 创建的五边形?
How to invert the pentagon created using CSS?
我想创建指向下方(反向)的五边形。但我不怎么提点。
#pentagon {
margin:70px 0 5px 20px;
position: relative;
width: 110px;
border-width: 100px 36px 0;
border-style: solid;
border-color: #abefcd transparent;
}
#pentagon:before {
content: "";
position: absolute;
height: 0;
width: 0;
top: -170px;
left: -36px;
border-width: 0 90px 70px;
border-style: solid;
border-color: transparent transparent #abefcd;
}
<div id="pentagon"></div>
只需按如下所述添加一些新样式来反转您的 div
内容。休息HTML/CSS
保持原样。
#pentagon {
margin:70px 0 5px 20px;
position: relative;
width: 110px;
border-width: 100px 36px 0;
border-style: solid;
border-color: #abefcd transparent;
-moz-transform: scale(1, -1);
-webkit-transform: scale(1, -1);
-o-transform: scale(1, -1);
-ms-transform: scale(1, -1);
transform: scale(1, -1);
}
#pentagon:before {
content: "";
position: absolute;
height: 0;
width: 0;
top: -170px;
left: -36px;
border-width: 0 90px 70px;
border-style: solid;
border-color: transparent transparent #abefcd;
}
<div id="pentagon"></div>
TL;DR:(解决方案)
反转五边形的最简单方法是反转创建它时使用的边框,如下面的代码片段所示:
#pentagon {
margin: 0px 0 5px 20px;
position: relative;
width: 110px;
border-width: 0px 36px 100px;
border-style: solid;
border-color: #abefcd transparent;
}
#pentagon:before {
content: "";
position: absolute;
height: 0;
width: 0;
top: 100px;
left: -36px;
border-width: 70px 90px 0px;
border-style: solid;
border-color: #abefcd transparent transparent;
}
<div id="pentagon"></div>
问题中的五边形是如何创建的?
您所展示的五边形形状创建如下:
- 主元素的
border-top
为100px,颜色为#abefcd
,border-left
和border-right
为36px,但它们是透明的。这会产生一个顶部较宽底部较短的梯形。
- 伪元素的
border-bottom
为70px,颜色为#abefcd
,border-left
和border-right
为90px,但它们是透明的。这会产生一个三角形,然后使用绝对定位将其放置在主要元素的顶部。
这两个一起产生了五边形。我更改了以下代码片段中的边框颜色,以便您可以直观地看到它。
#pentagon {
margin:70px 0 5px 20px;
position: relative;
width: 110px;
border-width: 100px 36px 0;
border-style: solid;
border-color: red transparent;
}
#pentagon:before {
content: "";
position: absolute;
height: 0;
width: 0;
top: -170px;
left: -36px;
border-width: 0 90px 70px;
border-style: solid;
border-color: transparent transparent blue;
}
<div id='pentagon'></div>
如何反转?
一旦我们了解了形状的创建方式,做起来就非常简单了。
- 更改梯形,使底部比顶部宽。即,将
border-bottom
设置为100px,颜色设置为#abefcd
。将 border-top
更改为 0px。 border-top
的颜色无关紧要,因为它无论如何都是 0px 宽。
- 与三角形部分类似,设置
border-top
为70px,颜色为#abefcd
。将 border-bottom
更改为 0px。这将使三角形指向下方。
- 调整
top
值,使三角形(伪元素)低于梯形(100px 高)。
另一种方法是保留相同的代码,但像这样使用 transform
添加旋转五边形。
#pentagon {
margin: 70px 0 5px 20px;
position: relative;
width: 110px;
border-width: 100px 36px 0;
border-style: solid;
border-color: #abefcd transparent;
transform: rotate(180deg);
}
#pentagon:before {
content: "";
position: absolute;
height: 0;
width: 0;
top: -170px;
left: -36px;
border-width: 0 90px 70px;
border-style: solid;
border-color: transparent transparent #abefcd;
}
<div id="pentagon"></div>
我想创建指向下方(反向)的五边形。但我不怎么提点。
#pentagon {
margin:70px 0 5px 20px;
position: relative;
width: 110px;
border-width: 100px 36px 0;
border-style: solid;
border-color: #abefcd transparent;
}
#pentagon:before {
content: "";
position: absolute;
height: 0;
width: 0;
top: -170px;
left: -36px;
border-width: 0 90px 70px;
border-style: solid;
border-color: transparent transparent #abefcd;
}
<div id="pentagon"></div>
只需按如下所述添加一些新样式来反转您的 div
内容。休息HTML/CSS
保持原样。
#pentagon {
margin:70px 0 5px 20px;
position: relative;
width: 110px;
border-width: 100px 36px 0;
border-style: solid;
border-color: #abefcd transparent;
-moz-transform: scale(1, -1);
-webkit-transform: scale(1, -1);
-o-transform: scale(1, -1);
-ms-transform: scale(1, -1);
transform: scale(1, -1);
}
#pentagon:before {
content: "";
position: absolute;
height: 0;
width: 0;
top: -170px;
left: -36px;
border-width: 0 90px 70px;
border-style: solid;
border-color: transparent transparent #abefcd;
}
<div id="pentagon"></div>
TL;DR:(解决方案)
反转五边形的最简单方法是反转创建它时使用的边框,如下面的代码片段所示:
#pentagon {
margin: 0px 0 5px 20px;
position: relative;
width: 110px;
border-width: 0px 36px 100px;
border-style: solid;
border-color: #abefcd transparent;
}
#pentagon:before {
content: "";
position: absolute;
height: 0;
width: 0;
top: 100px;
left: -36px;
border-width: 70px 90px 0px;
border-style: solid;
border-color: #abefcd transparent transparent;
}
<div id="pentagon"></div>
问题中的五边形是如何创建的?
您所展示的五边形形状创建如下:
- 主元素的
border-top
为100px,颜色为#abefcd
,border-left
和border-right
为36px,但它们是透明的。这会产生一个顶部较宽底部较短的梯形。 - 伪元素的
border-bottom
为70px,颜色为#abefcd
,border-left
和border-right
为90px,但它们是透明的。这会产生一个三角形,然后使用绝对定位将其放置在主要元素的顶部。
这两个一起产生了五边形。我更改了以下代码片段中的边框颜色,以便您可以直观地看到它。
#pentagon {
margin:70px 0 5px 20px;
position: relative;
width: 110px;
border-width: 100px 36px 0;
border-style: solid;
border-color: red transparent;
}
#pentagon:before {
content: "";
position: absolute;
height: 0;
width: 0;
top: -170px;
left: -36px;
border-width: 0 90px 70px;
border-style: solid;
border-color: transparent transparent blue;
}
<div id='pentagon'></div>
如何反转?
一旦我们了解了形状的创建方式,做起来就非常简单了。
- 更改梯形,使底部比顶部宽。即,将
border-bottom
设置为100px,颜色设置为#abefcd
。将border-top
更改为 0px。border-top
的颜色无关紧要,因为它无论如何都是 0px 宽。 - 与三角形部分类似,设置
border-top
为70px,颜色为#abefcd
。将border-bottom
更改为 0px。这将使三角形指向下方。 - 调整
top
值,使三角形(伪元素)低于梯形(100px 高)。
另一种方法是保留相同的代码,但像这样使用 transform
添加旋转五边形。
#pentagon {
margin: 70px 0 5px 20px;
position: relative;
width: 110px;
border-width: 100px 36px 0;
border-style: solid;
border-color: #abefcd transparent;
transform: rotate(180deg);
}
#pentagon:before {
content: "";
position: absolute;
height: 0;
width: 0;
top: -170px;
left: -36px;
border-width: 0 90px 70px;
border-style: solid;
border-color: transparent transparent #abefcd;
}
<div id="pentagon"></div>