问题:
我如何获得NAV
不浮动之后的结果?
前言:
我正在整理一个可重复使用的进度跟踪器模块,以插入一些正在构建的工具中,以供我们防火墙内的内部使用。
虽然跨浏览器兼容性很好,但我们只需要针对 Chrome 和 FireFox 编写代码。这些是我们技术团队正式支持的唯一浏览器。
此外,始终欢迎任何和所有改进建议。
挑战:漂浮!!
为了使箭头正确显示并直观地表现,我必须正确浮动li
's.
(通过“有”,我的意思是“想不出更好的方法” :)
为了防止整体nav
向右浮动,我不得不让那个浮动。
现在,导航之后出现的任何内容都与它一致。
注意:
您还可以在 jsFiddle 上查看和使用代码。
代码:
HTML:
<nav id="progress_tracker">
<ul>
<li><a href='#'>Grab a beer</a></li>
<li><a href='#'>Work a little more</a></li>
<li><a href='#' class="current">Take a Nap</a></li>
<li><a href='#' class="complete">Work like a dog</a></li>
<li><a href='#' class="complete">Grab a coffee</a></li>
</ul>
</nav>
CSS:
nav {
float: left;
}
nav#progress_tracker {
padding: 0.25em;
background-color: #1a3340;
border-radius: 1.75em;
}
nav ul li:last-child{ /* Remember. We are floating right, so last is furthest left */
margin-left: -1.7em;
}
nav ul{
list-style-type: none;
}
nav ul li{
display: inline-block;
float: right;
position: relative;
padding: 0;
margin: 0;
}
nav ul li a{
display: inline-block;
vertical-align: middle;
color: #777;
background-color: DDD;
padding-top: 0.75em; /* top/btm padding need to be half of line-height */
padding-bottom: 0.75em; /* top/btm padding need to be half of line-height */
padding-left: 2em; /* left padding */
padding-right: 1em; /* right padding is (left-padding - depth-of-arrow (see below) */
line-height: 1.5em; /* line-height needs to be double top/btm padding */
}
nav ul li a:after{
width: 0;
height: 0;
position: absolute;
top: 0;
right: -1em; /* depth of offset (equal to depth of arrow) */
border-left: 1em solid #d9d9d9; /* depth of arrow (equal to depth of offset) */
border-top: 1.5em inset transparent; /* border thickness needs to match line-height */
border-bottom: 1.5em inset transparent; /* border thickness needs to match line-height */
content: ""; /* required to make all of this work */
}
nav ul li a:visited{
color: #888888;
}
nav ul li a.current{
font-weight: bold;
color: #777;
background-color: #FFBB00;
}
nav ul li a.current:after{
border-left: 1em solid #FFBF00; /* depth of arrow (equal to depth of offset) */
}
nav ul li a.complete{
color: #666;
background-color: #FFFFEE;
}
nav ul li a.complete:after{
border-left: 1em solid #FFFFEF; /* depth of arrow (equal to depth of offset) */
}
nav ul li:last-child a{ /* Remember. We are floating right, so last is furthest left */
border-top-left-radius: 1.45em;
border-bottom-left-radius: 1.45em;
}
nav ul li:first-child a{ /* Remember. We are floating right, so first is furthest rt */
border-top-right-radius: 1.45em;
border-bottom-right-radius: 1.45em;
}
nav ul li:first-child a:after{
border: none;
}
非常感谢。