使用 CSS ::before 在列表链接之前添加一个小图标

Posted

技术标签:

【中文标题】使用 CSS ::before 在列表链接之前添加一个小图标【英文标题】:Using CSS ::before to add a small icon before list links 【发布时间】:2014-12-14 00:04:06 【问题描述】:

这个问题很好地解释了它,但我有列表项,我想在它们之前放置一个简单的菱形图标,但是当我尝试使用 ::before 时,它​​最终将图像放在上面而不是同一行,我不能似乎真的知道如何将它放在同一行的列表图标之前。

就像我说的那样,图像只是一个小钻石,它是 5px x 5px

.list-menu::before 
	content: url('../images/menu-icons/image-before.png');
<div class="sb-slidebar sb-left sb-style-push">
	<nav>
		<ul>
			<li class="list-menu"><a href="#">Home</a></li>
		</ul>
	</nav>
</div>

【问题讨论】:

改变&lt;li&gt;图标本身怎么样.. 【参考方案1】:

这里根本不需要使用::before 伪元素。您可以只使用背景图片:

.list-menu 
  background-image: url('http://placehold.it/16x16');
  background-position: left center;
  background-repeat: no-repeat;
  padding-left: 20px; /* Adjust according to image size to push text across. */
<div class="sb-slidebar sb-left sb-style-push">
	<nav>
		<ul>
			<li class="list-menu"><a href="#">Home</a></li>
		</ul>
	</nav>
</div>

【讨论】:

谢谢!你能解释一下我什么时候应该使用 :before 和 :after 吗? @Bob :before:after 是 CSS 引入 Generated Content 时创建的两个伪元素。本规范记录了此类内容的确切用途,但简而言之,这些内容用于不向 DOM 树公开某些信息,同时仍使内容在页面上可见。 但是如果你想在不同的元素上这样做呢?说,一个

@TheRealChx101 您可以使用相同的方法。 @JamesDonnelly 谢谢。我已经想通了。我没看过那么好。【参考方案2】:

好吧,list-style-image 就是为此而生的。

自 IE 4.0 起受支持。我猜应该够了。

ul 
  list-style-image: url('http://placehold.it/12x12');
<ul>
  <li> Text content </li>
  <li> Text content </li>
  <li> Text content </li>
</ul>

【讨论】:

以上是关于使用 CSS ::before 在列表链接之前添加一个小图标的主要内容,如果未能解决你的问题,请参考以下文章

css 使用:: before伪选择器在显示tel-number之前添加unicode phone字符

CSS ::before 和 ::after 伪元素用法

[HTML CSS JS]阻止用户使用before元素更改值

如何避免CSS中“:之前”之后的换行符

CSS * *:before, *:after

text 带有CSS BEFORE列表点的彩色列表标记