【发布时间】:2013-12-17 16:21:44
【问题描述】:
我有一个如下所示的 div:
+---------+
| |
+---------+
我想把它改成这样:
+---------+
/ \
+-------------+
我该怎么做?
【问题讨论】:
-
你也要换视角吗?
标签: css
我有一个如下所示的 div:
+---------+
| |
+---------+
我想把它改成这样:
+---------+
/ \
+-------------+
我该怎么做?
【问题讨论】:
标签: css
如果您想使用 CSS 转换,see here
HTML
<div class='trapezoid'></div>
CSS
.trapezoid {
display: inline-block;
overflow: hidden;
margin: 0 3em;
/**outline: solid 1px;/**/
width: 10em;
height: 10em;
transform: rotate(45deg);
-webkit-transform: rotate(45deg);
}
.trapezoid:before {
display: block;
background: red;
content: '';
}
.trapezoid:before {
width: 20em; height: 3em;
transform: rotate(-45deg) translate(-4.142em, -2.6em);
-webkit-transform: rotate(-45deg) translate(-4.142em, -2.6em);
}
为了更简单的实现,see this fiddle
HTML
<div></div>
CSS
div {
border-bottom: 100px solid red;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
height: 0;
margin-top:30px;
width: 100px;
}
【讨论】:
如果“如何转换”是指如何在 x 轴上旋转应用透视以实现深度,那么您可以使用 CSS3 transform 的 perspective 和 rotate3d 来实现:
HTML
<div class="box">
Hover me
</div>
CSS
.box{
width: 300px;
height: 100px;
background: silver;
font-size: 4em;
margin: 100px;
}
.box:hover{
transform : perspective(400px) rotate3d(1, 0, 0, 50deg);
}
你可能也想read this other answer。
【讨论】:
Div 是方形元素,因此您不能将 div 的实际边界框转换为梯形。但是,您可以使用边框和框阴影来实现类似的视觉效果。请参阅CSS3 matrix3d rectangle to trapezoid transformation 以获得一些潜在的帮助。
【讨论】: