在无序列表中的每个列表项中,我有 2 个内联块元素和一个锚文本,它们都彼此相邻。所以每个<li>
都有2个图标和一个文本。
我制作这两个图标的原因display:inline-block
是因为它们具有不同的高度,并且它们旁边的锚文本有时会变成多行,并且我可以按照vertical-align
规则将它们居中到第一行。
无论如何,这个锚标签有一个:hover
样式,基本上是background-color:gray
. 由于某种原因,我无法通过任何通用解决方案成功阻止此锚元素。
我做了一些工作,但我不能依赖这个解决方案,因为我使用硬编码的<ul>
和<a>
宽度,当列表需要滚动条时,这些宽度需要减去条形宽度。以下是我目前的解决方案,如果这对某人有所启发。
我尝试给锚文本一个 margin-left 并将其设置为display:absolut
,但无济于事。我也尝试过给出百分比,但又一次......最终我尝试浮动元素,但这可能是这里最错误的解决方案,因为文本的多行可能性并将每个元素居中于文本第一行的垂直中心。我的下一个猜测是在每个列表项中使用一个表格,但这可能是最肮脏的解决方案,除非我必须这样做,否则我不想使用它。
你会怎么做?如果您需要更多详细信息,请告诉我。
CSS
ul {
overflow:auto;
height:6em;
width:320px;
}
li .icon1 {
display:inline-block;
width:13px;
height:12px;
vertical-align:top;
background:url(image.jpg) left top no-repeat;
}
li .icon2 {
display:inline-block;
width:9px;
height:10px;
margin-right:2px;
background:url(image.jpg) left -12px no-repeat;
}
li a {
display:inline-block;
padding-left:4px;
vertical-align:top;
width:270px;
}
li a:hover {
background-color:lightgray;
}
HTML
<ul>
<li>
<div class="icon1"></div>
<div class="icon2"></div>
<a href="#">Some anchor text</a>
</li>
<!-- many other li items in here -->
</ul>
这是一张图片来说明我想要实现的目标:
提前致谢。