TL;DR: 请参阅示例http://jsfiddle.net/97Yr6/ http://jsfiddle.net/97Yr6/
创建漏斗堆栈的一种方法是使用伪元素:使用这个基本标记
<ul>
<li>1,234,567,890 <span>Tooltip: 0</span></li>
<li>234,567,890 <span>Tooltip: 0</span></li>
<li>23,456,789</li>
<li>2,345,678 <span>Tooltip: 0</span></li>
<li>234,567</li>
<li>23,567 <span>Tooltip: 0</span></li>
<li>4,567<span>Tooltip: 0</span></li>
<li>789</li>
<li>23 <span>Tooltip: 0</span></li>
<li>4 <span>Tooltip: 0</span></li>
</ul>
我们可以使用边框创建漏斗,因此我们可以这样绘制一种梯形作为背景:
ul {
position: relative;
overflow: hidden;
font: 14px Arial;
margin: 0; padding: 0;
list-style: none;
text-align: center;
}
ul:before {
content: "";
position: absolute;
z-index: -1;
left: 50%;
margin-left: -120px;
width: 0;
border-top: 800px solid #ccc;
border-left: 120px solid #fff;
border-right: 120px solid #fff;
}
The <ul>
是 100% 宽,所以我们可以给它一个text-align: center
并且所有金额都正确居中
然后元素之间的空间也可以再次使用伪元素获得:
li:after,li:before {
content: "";
display: block;
height: 0.4em;
background: #fff;
width: 100%;
}
li:before { border-top: 1px dotted #ccc }
li:first-child:before { border: 0; }
而工具提示文本可以定位(<li>
需要有position: relative
定义),尝试适当调整两者left
and margin-left
属性(特别是对于较低的屏幕分辨率,但您可以使用媒体查询来实现此目的),例如
li span {
position: absolute;
left: 60%;
white-space: nowrap;
margin-left: 100px;
}
li:nth-child(2) span { left: 59%; }
li:nth-child(3) span { left: 58% }
li:nth-child(4) span { left: 57% }
li:nth-child(5) span { left: 56% }
li:nth-child(6) span { left: 55% }
li:nth-child(7) span { left: 54% }
li:nth-child(8) span { left: 53% }
li:nth-child(9) span { left: 52% }
li:nth-child(10) span { left: 51% }
基本上这个例子甚至可以工作IE8
如果你改变每一个:nth-child
使用邻接选择器(例如li + li + li + ... + span
)
希望它能有所帮助。