【发布时间】:2019-03-06 19:09:06
【问题描述】:
(我是网页设计的新手)我有一个链接列表(当前页面上的部分),可以根据视口大小扩展到多行。链接由垂直线分隔(左边框):
我想避免为每行的第一个元素显示边框。我已经设法为第一个孩子避免了它,但我不知道如何为每行的第一个元素做这件事。比如:
请注意,每个页面的此列表可能不同。
问题:如何达到这样的效果? CSS? JavaScript?
.links a {
display: inline-block;
}
.links a:not(:first-child) {
border-left: 1px solid black;
padding-left: 15px;
}
.links a:not(:last-child) {
padding-right: 15px;
}
<div class="links">
<a href="#">Link number 1</a>
<a href="#">Link number 2</a>
<a href="#">Link number 3</a>
<a href="#">Link number 4</a>
<a href="#">Link number 567</a>
<a href="#">Link number 6</a>
<a href="#">Link number 7</a>
<a href="#">Link number 8</a>
<a href="#">Link number 9</a>
</div>
PS:display: inline-block 只是为了避免在行之间换行。我想避免更改 HTML 结构,因为许多页面都会受到影响。此类链接始终嵌套在 <div class="links"></div> 中,如示例所示。
【问题讨论】:
-
您需要媒体查询。没有办法用 CSS 动态地做到这一点。它不知道物品何时包装。
-
哦...那么,如果页面有不同的链接集怎么办?每个都有一个特定的 CSS?我会更新问题以明确它......可能是一些JS?
-
这可能是唯一的方法。
-
您的动态列表是一个单词列表,所以我认为从性能角度来看最佳的唯一方法是获取符号(数字、字母)的平均宽度和在 CSS 中根据这些尺寸计算
@media queries -
@Paulie_D “没有办法用 CSS 动态地做到这一点。” 虽然“动态”部分成立,但 OP 的特定请求只能通过 CSS 实现。虽然我的回答可以被认为是一种解决方法,但我想。
标签: javascript html css responsive-design