元素上的悬停效果在 CSS 中不起作用 [重复]

Posted

技术标签:

【中文标题】元素上的悬停效果在 CSS 中不起作用 [重复]【英文标题】:Hover effect on element is not working in CSS [duplicate] 【发布时间】:2021-01-18 19:18:19 【问题描述】:

当我将鼠标悬停在 box1 上时,我试图更改 box2 的颜色,但它不起作用。请帮助我为什么这不起作用。

body 
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;


.box1,
.box2 
  width: 100px;
  height: 100px;


.box1 
  background-color: teal;
  /*   position:relative; */


.box2 
  background-color: tomato;
  position: relative;
  left: -50px;


.box1:hover .box2 
  background-color: green;
<div class="box1"></div>
<div class="box2"></div>

【问题讨论】:

【参考方案1】:

.box1:hover .box2 将鼠标悬停在 box1 上时,会针对 within box1 的所有元素。

但是,您希望将元素 next 定位到 box1。所以你可以改用+ 符号!

+ 符号指向第一个元素之后的元素。

所以请改成.box1:hover + box2

body 
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;


.box1,
.box2 
  width: 100px;
  height: 100px;


.box1 
  background-color: teal;
  /*   position:relative; */


.box2 
  background-color: tomato;
  position: relative;
  left: -50px;


.box1:hover + .box2 
  background-color: green;
<div class="box1"></div>
<div class="box2"></div>

【讨论】:

【参考方案2】:

您只需在hover 之后添加~

.box1:hover ~ .box2 
        background-color: green;
      

【讨论】:

【参考方案3】:

.box1:hover .box2 表示.box2 选择器,悬停时包含在.box1 中。所以没有选择器。

在您的情况下,您应该使用.box1:hover ~ .box2,它表示.box2 选择器旁边的.box1 选择器。

body 
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;


.box1, .box2
  width: 100px;
  height: 100px;

.box1 
  background-color: teal;
/*   position:relative; */

.box2 
  background-color: tomato;
  position: relative;
  left: -50px;


.box1:hover ~ .box2
  background-color: green;
<div class="box1"></div>
<div class="box2"></div>

【讨论】:

【参考方案4】:

您需要使用 + 选择器来访问同级。您的代码正在寻找 box2 作为子元素

body 
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;


.box1,
.box2 
  width: 100px;
  height: 100px;


.box1 
  background-color: teal;
  /*   position:relative; */


.box2 
  background-color: tomato;
  position: relative;
  left: -50px;


.box1:hover + .box2 
  background-color: green;
<div class="box1"></div>
<div class="box2"></div>

【讨论】:

以上是关于元素上的悬停效果在 CSS 中不起作用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

背景图像过渡在CSS中不起作用[重复]

由于“display: inline;”,CSS 悬停效果在 Firefox 中不起作用

CSS列表悬停在Google Chrome中不起作用[重复]

CSS3 过渡/悬停效果在 Firefox 中不起作用; Firefox 错误?

选择另一个元素时CSS悬停不起作用[重复]

悬停在引导模式图像中不起作用