CSS悬停调整文本不透明度并没有达到预期效果,尽可能简化

问题描述 投票:0回答:1

我想创建一个 div,如果你将鼠标悬停在一侧,相反的文本就会消失。当悬停左侧文本时,它工作得很好,右侧文本按预期消失,但反之则不起作用。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>choose</title>
  <style>
    .right:hover~.left p {
      opacity: 0;
    }
    
    .left:hover~.right p {
      opacity: 0;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="left">
      <p>This is left text.</p>
    </div>
    <div class="right">
      <p>This is right text.</p>
    </div>
  </div>
</body>
</html>

这是尽可能简化的代码。悬停一侧应该使另一文本的不透明度为零,但它不适用于两侧。我尝试了很多不同的方法都没有效果。

有什么解释可以解释为什么会发生这种情况吗?我认为它可能是 .js 或其他可能会产生干扰的 css 属性,但它简化到了这一点,但它仍然对我不起作用。

html css text hover opacity
1个回答
0
投票

~
相对选择器只能向前工作,不能反向工作。您想要的可能是
:has()
伪类

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>choose</title>
  <style>
    .container:has(.left:hover) .right {
      opacity: 0;
    }
    
    .container:has(.right:hover) .left {
      opacity: 0;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="left">
      <p>This is left text.</p>
    </div>
    <div class="right">
      <p>This is right text.</p>
    </div>
  </div>
</body>
</html>

© www.soinside.com 2019 - 2024. All rights reserved.