html - 如何在 HTML 链接标签中添加::after

标签 html css pseudo-element

::after 元素有一个 CSS 效果。例如:

.wrapper a:hover:after, footer.main-footer a:hover:after {
   background:#ff0000;
}

在 Chrome 开发者控制台中,我注意到有一些链接标签有 ::after 里面,这将显示效果

<a href="test.com" data-term="event">Event::after</a>

有些人没有

<a class="back-to-portfolio" href="test2.com">All</a>

该元素不显示效果。问题是,如何将 ::after 添加到链接标记中,或者 ::after 将在什么条件下显示?

最佳答案

基本上,要让 :after 元素起作用或出现,整个选择器都应该匹配。在下面的代码片段中,您可以看到只有 a 元素是 .wrapper 元素的后代或 footer.main-footer 的后代element 获取 :after 元素。在 div.wrapperfooter.main-footer 之外的另一个 a 没有得到 :after 元素。

另一件需要注意的事情是 pseudo-elements are generated only if content property is specified .因此,在下面的代码片段中,:after 元素仅在 a 悬停时生成。

.wrapper a:hover:after,
footer.main-footer a:hover:after {
  background: #ff0000;
}
/* just for demo */

.wrapper,
footer {
  position: relative;
  height: 40px;
}
.wrapper a:hover:after,
footer.main-footer a:hover:after {
  position: absolute;
  content: ''; /* this is important */
  height: 100%;
  width: 100%;
  left: 0px;
  top: 0px;
  z-index: -1;
}
<div class='wrapper'>
  <a href="test.com" data-term="event">Event::after</a>
</div>
<footer class='main-footer'>
  <a href="test.com" data-term="event">Event::after</a>
</footer>

<a class="back-to-portfolio" href="test2.com">All</a>

另一方面,在下面的代码片段中,即使 a 没有悬停,:after 也会出现。

.wrapper a:after,
footer.main-footer a:after {
  background: #ff0000;
}
/* just for demo */

.wrapper,
footer {
  position: relative;
  height: 40px;
}
.wrapper a:after,
footer.main-footer a:after {
  position: absolute;
  content: ''; /* this is important */
  height: 100%;
  width: 100%;
  left: 0px;
  top: 0px;
  z-index: -1;
}
<div class='wrapper'>
  <a href="test.com" data-term="event">Event::after</a>
</div>
<footer class='main-footer'>
  <a href="test.com" data-term="event">Event::after</a>
</footer>

<a class="back-to-portfolio" href="test2.com">All</a>


关于为什么有些 anchor /链接标签有 :after 而其他一些没有的问题,原因应该是因为 anchor /链接标签没有 :after 元素与设置 content 属性的选择器不匹配。

(我假设 content 属性必须在您页面的某处设置,因为您提到它显示在某些元素上。)

关于html - 如何在 HTML 链接标签中添加::after,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37562057/

相关文章:

css - 在::after或::before伪元素内容中添加换行符

javascript - 如何切换组列表中突出显示的选定项目

javascript - 将 DIV 转换为 base64

javascript - 飘动的 JS 菜单问题

javascript - 当滚动到达一个元素时如何执行一个函数?

css - 网络蜘蛛如何爬取::before 中的内容?

html - 当页面宽度为768px时如何替换按钮的内容?

css - 列宽小于 minmax

css - 在 CSS 中有多个媒体查询是不是很好,因为这种浏览器渲染会受到影响?

html - 由伪元素创建的内容