当前位置: 首页 > 面试题库 >

在孩子悬停时,更改父容器的背景颜色(仅CSS)

令狐高洁
2023-03-14
问题内容

这是一个常见的问题。它几乎总是被关闭,作为以下问题的重复项:是否有CSS父选择器?

重复项很好地指出了CSS不能定位父html" target="_blank">元素。但是,它对于原始问题几乎没有提供任何指导,而原始问题可能会在XY问题中陷入困境。

在这种情况下…

悬停孩子时如何更改父母的背景颜色?

…至少有一种CSS解决方案可以解决该问题。

<div>

  <a href="#">Anchor Text</a>

</div>

问题答案:

尽管无法使用CSS选择父元素,但是您可以使用另一种方法来完成任务。

您希望在悬停孩子时更改父母的背景颜色。

考虑使用CSS 属性的spread-radius值。box-shadow

通过创建巨大的展开半径,您可以更改周围区域的颜色(在视觉上与父元素没有什么不同)。

div {

    overflow: hidden;              /* 1 */

}



a:hover {

    box-shadow: 0 0 0 1000px red;  /* 2 */

}



/* non-essential decorative styles */

div {

  height: 150px;

  width: 150px;

  border: 1px dashed black;

  display: flex;

  justify-content: center;

  align-items: center;

}


<div>

  <a href="http://www.stackoverflow.com/">Anchor Text</a>

</div>

笔记:

  1. overflow: hidden 限制孩子的盒子阴影
  2. box-shadow值如下所示:

<box-shadow> : <offset-x> <offset-y> <blur-radius> <spread-radius> <color>

  • 偏移量x〜距元素的水平距离
  • 偏移y〜距元素的垂直距离
  • blur-radius 〜使阴影越来越大且透明
  • spread-radius 〜使阴影扩大(不褪色)

在这种情况下,前三个值无关紧要。

您需要的是spread-radius使它增长很多,然后用修剪容器overflow: hidden

如果容器中还有其他元素怎么办?

<div>
  <h2>Hello</h2>
  <a href="http://www.google.com">Anchor Text</a>
</div>



div {

    overflow: hidden;

}

a:hover {

    box-shadow: 0 0 0 1000px red;

}

div {

  height: 150px;

  width: 150px;

  border: 1px dashed black;

  display: flex;

  flex-direction: column;

  justify-content: center;

  align-items: center;

}


<div>

  <h2>Hello</h2>

  <a href="http://www.stackoverflow.com/">Anchor Text</a>

</div>

您可以将a z-index应用于同级。

h2 { z-index: 1; }

而且,由于该元素恰好是在这个例子中Flex容器,它们不需要被定位为z-index来工作。

h2 { z-index: 1; }



div {

    overflow: hidden;

}

a:hover {

    box-shadow: 0 0 0 1000px red;

}

div {

  height: 150px;

  width: 150px;

  border: 1px dashed black;

  display: flex;

  flex-direction: column;

  justify-content: center;

  align-items: center;

}


<div>

  <h2>Hello</h2>

  <a href="http://www.stackoverflow.com/">Anchor Text</a>

</div>


 类似资料:
  • 问题内容: 我正在尝试将 鼠标悬停在div的背景颜色上 。 div {background:white;} div a:hover {background:grey; 宽度:100%; 显示:块; 文字修饰:无;} 只有 div内的 链接 获得背景色 。 如何使 整个div获得该背景色? 谢谢 编辑: 如何使整个div充当链接-当您单击该div上的任意位置时,将您带到某个地址。 问题答案: 当鼠标

  • 问题内容: 我有一组标签,这些标签的rgba背景颜色不同,但alpha相同。是否可以编写单个CSS样式来仅更改rgba属性的不透明度? 代码的简单示例: 和样式 我想做的是编写一种样式,当将鼠标悬停在其上时会更改不透明度,同时保持颜色不变。 就像是 问题答案: 现在可以使用自定义属性: 如果自定义属性不是一个选项,请参见下面的原始答案。 不幸的是,不,您必须为每个单独的类再次指定红色,绿色和蓝色值

  • 因为我使用可变颜色的按钮,我需要添加内联css。悬停颜色是其他变量。我不能在内联css上添加悬停选择器,所以我必须使用js。我试着用. hover()来做,但是当我悬停按钮时,两种颜色都消失了。 代码: HTML:

  • 我需要一些帮助我想改变工具提示基于按钮主色。 例如:如果按钮具有“主色”,则工具提示也应为“主色”。。。 超文本标记语言: jQuery: 实例:https://codepen.io/themes4all/pen/NWabvad

  • 我正在尝试将按钮的背景色从蓝色淡入白色,并将字体颜色从白色淡入蓝色。我查了其他帖子。 这是我的小提琴:http://jsfiddle.net/t533wbuy/1/ 我用这把小提琴作为参考:http://jsfiddle.net/visualdecree/SvjHx/ 我的问题是: 我希望它是一个按钮,而不是一个按钮 Css html 点击这里申请 jQuery

  • 只是尝试在CSS中练习悬停和下拉。在下面的代码中,我希望每当下拉子div(带有Home1文本的绿色div)悬停在上面时,的背景色(红色)应该更改为蓝色。 会很感激你的帮助。 null null