我不确定如何构建一个看起来像这样的水平列表:
以下是规则:
- 列表中的项目数没有限制。
- 每个项目应该在一行上,不要换行到第二行。
- 如果有空间,多个项目可以在一行上。
- 如果多个项目在同一行上,它们应该由分隔符分开。
- 分隔符看起来像一个圆点,但它也可以是一个图像。
- 需要在现代浏览器以及IE8+中正常工作。
我不确定如何使圆点仅出现在项目之间,而不是在每一行项目之前或之后。
我不确定如何构建一个看起来像这样的水平列表:
以下是规则:
我不确定如何使圆点仅出现在项目之间,而不是在每一行项目之前或之后。
对于那些不必担心IE8的人,这很简单:
ul li { list-style: none; display: inline; }
ul li:after { content: " \00b7"; }
ul li:last-child:after { content: none; }
ul li:not(:last-child):after { content: " \00b7"; }
(确实会在换行的行末添加一个圆点符号) - Tom Robinsoncontent: " \2022";
- mlissnerul {
display: inline-block;
padding: 0;
margin: .5rem;
text-align: center;
background-color: #fff;
}
li { display: inline; }
li a { white-space: nowrap; }
li:after {
content: " ";
letter-spacing: 1em;
background: center center no-repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwAAADsABataJCQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAAAnSURBVBhXY/Dz89MA4sNA/B9Ka4AEYQIwfBgkiCwAxjhVopnppwEApxQqhnyQ+VkAAAAASUVORK5CYII=);
}
body { background-color: #D3D3D3; }
<div id="d">
<ul>
<li><a>Profile Image</a></li>
<li><a>Name</a></li>
<li><a>Activity Information</a></li>
<li><a>Distance</a></li>
<li><a>Pace</a></li>
<li><a>Points Earned</a></li>
</ul>
</div>
<div style="width: 20rem"><script>document.write(d.innerHTML)</script></div>
<div style="width: 10rem"><script>document.write(d.innerHTML)</script></div>
</a>
标签后有换行符,这会阻止项目符号显示。如果你删除换行符,它就可以正常工作了。 - wicketyjarjar对于几乎所有浏览器,您可以使用CSS3选择器last-child
代替JavaScript:
ul li { display: inline; white-space: pre; }
ul li:after { content: " \00b7 "; }
ul li:last-child:after { content: ""; }
white-space: pre
可以停止列表项内部的换行(因为通常希望在列表项之间进行换行),它是一种技巧,可以通过在第二行添加空格来增加列表项之间的空间。
u00b7
⋅ (MIDDLE DOT
)是插点号的标准Unicode字符,但您也可以使用 u2022
•(BULLET
) ,u2b24
⬤(BLACK LARGE CIRCLE
) ,U+2043
⁃(HYPHEN BULLET
)或任何其他您选择的Unicode字符。
请注意,某些字符可能不受所有系统支持。
这是进一步改进的版本。在某些页面宽度下,我一直遇到不一致的问题,会缺少两个项目符号而不仅仅是最后一个。即:
链接1 · 链接2 · 链接3 链接4
链接5 · 链接6
我认为问题在于如果页面宽度恰好合适,则删除最后一个项目符号本身可能会影响文本流。新脚本通过添加和删除文字换行符来锁定原始文本流。
我有同样的脚本在每次调整屏幕大小时运行,因此您不会遇到尴尬的断行。
<style>
ul { width: 700px; text-align : center }
ul li { display: inline; white-space: nowrap; }
ul li:after { content: " \00b7"; }
ul li.nobullet:after { content: none; }
</style>
<body onresize="processBullets()" onload="processBullets()">
<ul>
<li><a href="http://google.com">Harvard Medical School</a></li>
<li><a href="http://google.com">Harvard College</a></li>
<li><a href="http://google.com">Harvard Medical School</a></li>
<li><a href="http://google.com">Harvard College</a></li>
<li><a href="http://google.com">Harvard Medical School</a></li>
<li><a href="http://google.com">Harvard College</a></li>
<li><a href="http://google.com">Harvard Medical School</a></li>
<li><a href="http://google.com">Harvard College</a></li>
</ul>
<body>
<script>
function processBullets() {
var lastElement = false;
$("br").remove(".tempbreak");
$("ul li").each(function() {
$(this).removeClass("nobullet");
if (lastElement && lastElement.offset().top != $(this).offset().top) {
$(lastElement).addClass("nobullet");
$(lastElement).append('<br class="tempbreak" />');
}
lastElement = $(this);
}).last().addClass("nobullet");
}
</script>
PNG
图像(作为分隔符或其他分隔符),那么您可以在列表项之间使用自然空格,并将其绘制为背景。当列表项换行到下一行时,该空格及其背景将不会呈现。ul { max-width: 700px; padding: 0; text-align: center; }
ul li { display: inline; white-space: nowrap; }
ul .separator {
word-spacing: 1.1em;
background-repeat: no-repeat;
background-position: 50% 60%;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAOElEQVQI113M0Q3AIBRC0aM76P7jmHSmSj/6mibyc4EQkEEWuYtDmU1SXO1d6H7tjgupIl8+P+cD22cff9U1wbsAAAAASUVORK5CYII=);
}
HTML:
<ul>
<li><a href="http://google.com">Harvard Medical School</a></li><span class='separator'>
</span><li><a href="http://google.com">Harvard College</a></li><span class='separator'>
</span><li><a href="http://google.com">Harvard Medical School</a></li><span class='separator'>
</span><li><a href="http://google.com">Harvard College</a></li><span class='separator'>
</span><li><a href="http://google.com">Harvard Medical School</a></li><span class='separator'>
</span><li><a href="http://google.com">Harvard College</a></li><span class='separator'>
</span><li><a href="http://google.com">Harvard Medical School</a></li><span class='separator'>
</span><li><a href="http://google.com">Harvard College</a></li>
</ul>
ul { max-width: 700px; padding: 0; text-align: center; }
ul li { display: inline; white-space: nowrap; }
ul li:after {
content: " ";
word-spacing: 2em;
background-repeat: no-repeat;
background-position: 50% 60%;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAOElEQVQI113M0Q3AIBRC0aM76P7jmHSmSj/6mibyc4EQkEEWuYtDmU1SXO1d6H7tjgupIl8+P+cD22cff9U1wbsAAAAASUVORK5CYII=);
}
我刚刚使用了text-indent成功地为一个带有项目符号的列表进行了样式设置,如下所示:
HTML:
<ul class="horizontal">
<li>Payment</li>
<li>Check</li>
<li>Direct Deposit</li>
</ul>
ul.horizontal li {
list-style-type:disc;
float: left;
text-indent:-4px;
margin-right:16px;
}
text-align: center
在ul
上和display: inline-block
在li
上。
如果您希望使用图像作为分隔符,则可以利用:after
伪类在li
上。
这里有一个示例。 ul li {
display: inline;
text-align: center
}
.separator {
display: inline-block;
background-color: black;
width: 5px;
height: 5px;
border-radius: 45px;
vertical-align: middle;
}
<ul>
<li>item 1</li> <div class='separator'></div>
<li>item 2</li> <div class='separator'></div>
<li>item 3</li> <div class='separator'></div>
<li>item 4</li> <div class='separator'></div>
<li>item 5</li>
</ul>
你也可以使用循环和连接新的li来构建JavaScript中的此列表,但由于你的帖子没有提到动态生成的列表,所以我现在就把它保留为这样。
http://jsfiddle.net/caramba/tSnnP/
<div>
<ul>
<li><span class="icon bull"></span>xxx</li>
<li><span class="icon bull"></span>xxx</li>
<li><span class="icon bull"></span>xxx</li>
</ul>
<ul>
<li><span class="icon bull"></span>xxx</li>
<li><span class="icon bull"></span>xxx</li>
<li><span class="icon bull"></span>xxx</li>
<li><span class="icon bull"></span>xxx</li>
<li><span class="icon bull"></span>xxx</li>
</ul>
</div>
<style type="text/css">
div {
white-space: nowrap;
width: 100%;
}
span {
display:inline-block;
margin:0 5px;
}
ul {
text-align:center;
}
ul li {
display:inline;
margin:20px;
}
.hide {
display:none;
}
.icon {
position:relative;
display:inline-block;
background-position:-1000px -1000px;
background-image:url(http://www.alexander-bown.com/wp-content/uploads/2011/05/big-black-dot.jpg);
background-repeat:no-repeat;
background-size:5px 5px;
width:5px;
height:5px;
}
.icon {
background-position:0px 0px;
top:-2px;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('ul li:first-child').children('span').addClass("hide");
});
</script>