如何更改 link 中 div 的背景颜色

How can I change the background-color of a div inside a link

是否可以仅使用 :visited 伪 class 而不使用 Javascript 来更改 link 中 div 的背景颜色?

<!DOCTYPE html>
<html>
    <head>
      <style>
            a:hover {background-color:blue;}
            a:visited {background-color:green;}

           .smallbox {
            background-color: #666;
            height: 50px;
            width: 50px;
           }
           .smallbox:hover {background-color:blue;}
           .smallbox:visited {background-color:green;}
      </style>
    </head>
    <body>
        <a href="#"><div class="smallbox"></div></a>
    </body>
</html>

是的,我相信你能做到。请记住,访问的伪 class 属于 link,而不是 div。

a:hover .smallbox {background-color:blue;}
a:visited .smallbox {background-color:green;}
a:visited .smallbox:hover {background-color:blue;}

 .smallbox {
  display: block;
  background-color: #666;
  height: 50px;
  width: 50px;
 }
 
<a href="##"><span class="smallbox"></span></a>

正如 Dekel 在评论中指出的那样,锚元素内的 div 是无效的 HTML。您可以欺骗并在 link 内放置一个跨度,并将其显示 属性 设置为 "block",但这可能并不是更好。

如果您只需要一个表现得像块元素而不是内联元素的 link,请考虑将锚标记的显示 属性 切换为 block 并完全删除内部元素正如此 post 中所建议的:<div> within <a>

与其将它应用到 div,为什么不像你那样直接将它应用到“a”标签,然后删除 div?你为什么需要它? a: hover { background-color:blue; } 应该可以正常工作。您只需要在 a:hover 样式中添加一个 display:block

或者,如果您在页面上有多个 a 标签并且只想将其应用于其中一个,您可以使用一个 ID 并将其应用于该标签:

<a id="someId" href="#">My Link</a>

CSS:

#someId {
    background-color: blue;
    display: block;
}