在CSS中尝试了几个小时(对不起,我还是一名CSS菜鸟)我正在向你寻求帮助:
我想要一个三角形作为div的“底部”,同时填满整个屏幕宽度,无论屏幕尺寸是多少(100%)。
当窗口调整大小时,我只想让三角形改变它的宽度,使其仍然填满整个屏幕宽度(100%)但不是它的高度。
目前,整个事情看起来像这样(三角形的黑色仅用于演示目的),从外观来看,这是我想要实现的目标:
我的代码如下所示:
.top {
background-color: green;
height: 100px;
width: 100%;
}
.bottom {
background-color: red;
height: 200px;
width: 100%;
}
.triangle {
border-top: 40px solid black;
border-left: 950px solid transparent;
border-right: 950px solid transparent;
width: 0;
height: 0;
top: 107px;
content: "";
display: block;
position: absolute;
overflow: hidden;
left: 0;
right: 0;
margin: auto;
}
<div class="top">
<div class="triangle"></div>
</div>
<div class="bottom"></div>
JSFiddle上的代码:http://jsfiddle.net/L8372wcs/
我的问题:
非常感谢您的帮助。
答案 0 :(得分:7)
请参阅http://jsfiddle.net/L8372wcs/1/
CSS (相关更改)
.top {
...
position: relative;
}
.triangle {
border-top: 40px solid black;
border-left: 50vw solid transparent;
border-right: 50vw solid transparent;
...
bottom: -40px;
}
左右边框是用视口单元定义的(因为你的div是100%宽)。三角形是响应式的(尝试调整视口大小)
三角形位置定义为bottom: -40px;
(而非顶部),其父级为position: relative;
这将确保三角形始终位于绿色元素的下方(直到顶部)三角形的边框为40px
高)
<强>结果强>
答案 1 :(得分:4)
另一种方法是使用 inline svg 和多边形元素。
这样,它的宽度可以设置为100%,并且它的高度可以通过CSS thx独立控制到preserveAspectRatio
svg属性。
在下面的示例中,三角形的高度固定为40px,但您可以通过删除CSS height属性和preserveAspectRatio
属性来根据宽度重新设置高度。< / p>
.top {
position:relative;
background-color: green;
height: 100px;
width: 100%;
}
.bottom {
background-color: red;
height: 200px;
width: 100%;
}
.triangle {
position:absolute;
top:100%;
width:100%;
height:40px;
}
&#13;
<div class="top">
<svg viewbox="0 0 100 10" preserveAspectRatio="none" class="triangle" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<polygon points="0 0 100 0 50 10"/>
</svg>
</div>
<div class="bottom"></div>
&#13;
您还可以使用CSS或SVG元素中的属性来设置三角形(填充颜色,边框,不透明度......)的样式。以下是CSS的示例:
.top {
position: relative;
background-color: green;
height: 100px;
width: 100%;
}
.bottom {
background-color: red;
height: 200px;
width: 100%;
}
.triangle {
position: absolute;
top: 100%;
width: 100%;
height: 40px;
fill: gold;
}
&#13;
<div class="top">
<svg class="triangle" viewbox="0 0 100 10" preserveAspectRatio="none" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<polygon points="0 0 100 0 50 10" />
</svg>
</div>
<div class="bottom"></div>
&#13;
答案 2 :(得分:2)
您可以使用vw
单位(视口宽度)。
答案 3 :(得分:2)
我无法弄清楚如何让三角形占据屏幕尺寸的100%(我现在使用的是像素宽度)。
这可以通过使用vw
作为创建三角形边框的单位来完成。由于正文中有margin
(Chrome中为8px
),请使用calc(50vw - 8px)
来容纳它。
我无法弄清楚如何让三角形贴在div的确切底部(此时我还使用像素值)。
将.triangle
添加到.top
,将position: relative;
添加到.top
,然后将top: 100%
添加到.triangle
,以便始终将其置于.top
的底部vw
。
我既不知道如何相应地调整三角形的大小,也不知道如何保持它的高度(我尝试了几个教程)。
.top {
background-color: green;
height: 100px;
position: relative;
width: 100%;
}
.bottom {
background-color: red;
height: 200px;
width: 100%;
}
.triangle {
border-left: calc(50vw - 8px) solid transparent;
border-right: calc(50vw - 8px) solid transparent;
border-top: 40px solid black;
content: "";
display: block;
height: 0;
left: 0;
margin: auto;
overflow: hidden;
position: absolute;
right: 0;
top: 100%;
width: 0;
}
单位会使三角形响应。
<div class="top">
<div class="triangle"></div>
</div>
<div class="bottom"></div>
&#13;
c:/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rails_admin-0.6.8/app/views/rails_admin/main/export.html.haml where line #51 raised:
&#13;
答案 4 :(得分:2)
也可以使用linear-gradient
:
.top {
background-color: green;
height: 100px;
position: relative;
}
.triangle {
position: absolute;
left: 0;
right: 0;
top: 100%;
height: 40px;
background:
linear-gradient(to bottom left, rgba(0, 0, 0, 1) 50%, rgba(0, 0, 0, 0) 50%) no-repeat left top / 50% 100%,
linear-gradient(to bottom right, rgba(0, 0, 0, 1) 50%, rgba(0, 0, 0, 0) 50%) no-repeat right top / 50% 100%;
}
.bottom {
background-color: red;
height: 200px;
}
&#13;
<div class="top">
<div class="triangle"></div>
</div>
<div class="bottom"></div>
&#13;
Chrome不会产生平滑的结果,但预计将来会修复此问题。
答案 5 :(得分:1)
这适合吗?
users = db.users.find({'_id'> last_id}). limit(50)