TL;DR:请参阅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;
}
<ul>
是 100% 宽的,所以我们可以给它 a并且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
和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
希望它会有所帮助。