javascript - 让一个 div 在悬停时替换另一个

标签 javascript html css

<分区>

我有 2 个不同大小的 div,D1 和 D2。当悬停在 D1 上时,我希望 D2 变得可见,并且当用户离开时 D1 回来。因此,当用户悬停时,D2 应该替换 D1。

如果您尝试 jsFiddle ,你会看到问题。 block 闪烁,D2 永远不可见。

.wrapper {
    position: relative;
}
    
#inBack {
    position: absolute;
    top: 0;
    right: 0;
}
    
#inFront :hover {
    display:none;
}
    
#inBack :hover {
    display:block;
}
<div class="wrapper" >
    <div id="inFront"  style="background-color:red;" class="navi">
        <h2>
          header of item in front
        </h2>
        <text>
          <p>body of item in front</p>
          <p>body of item in front</p>
        </text>
    </div>
      
    <div id="inBack"  style="background-color:green; display:none;" >
        <h2>
          header of item in back
        </h2>
        <text>
          <p>body of item in back</p>
          <p>body of item in back</p>
          <p>body of item in back</p>
          <p>body of item in back</p>
          <p>body of item in back</p>
          <p>body of item in back</p>
        </text>
    </div>
</div>
    
<div style="background-color:cyan;">
    <p>
    This part should be pushed down to make way for the larger text
    </p>
   
</div>

我需要 javascript 吗?

最佳答案

如果你可以将后/前元素包裹在一个 div 中,那么显示/隐藏就会简单得多。但是如果后面小于前面,你会得到弹跳效果。

.wrapper2:hover #inFront {
  display: none;
}

.wrapper2:hover #inBack {
  display: block;
}

#inFront {
  background-color: red;
}

#inBack {
  background-color: yellow;
  display: none;
}
<div class="wrapper">
  <div class="wrapper2">
    <div id="inFront" style="background-color:red;" class="navi">
      <h2>
        header of item in front
      </h2>
      <text>
      <p>body of item in front</p>
      <p>body of item in front</p>
    </text>
    </div>

    <div id="inBack">
      <h2>
        header of item in back
      </h2>
      <text>
      <p>body of item in back</p>
      <p>body of item in back</p>
      <p>body of item in back</p>
      <p>body of item in back</p>
      <p>body of item in back</p>
      <p>body of item in back</p>
    </text>
    </div>
  </div>
</div>

<div style="background-color:cyan;">
  <p>
    This part should be pushed down to make way for the larger text
  </p>

</div>

关于javascript - 让一个 div 在悬停时替换另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53014157/

上一篇:html - 使用相对位置时如何获取引导卡下方的内容

下一篇:html - 输入字段的两个组件对齐(标签+字段)

相关文章:

javascript - AJAX 即发即弃,寻找服务器发送事件的对立面

javascript - 如何防止提交表单后模式关闭

html - 如何让我的 CSS 代码更有效率?

html - 将元素放在包装的 div 中(自定义位置)

css - 标题链接的不同 CSS

javascript - 使用 JavaScript/jQuery 预加载图像的最佳方式是什么?

javascript - socket.io 将套接字与登录用户链接

javascript - 来自跨域的图像在 HTML 中显示正常,但 ajax 调用同一图像从浏览器控制台失败

html - 背景图片不覆盖且文本垂直对齐底部

html - 伪元素破坏 justify-content : space-between in flexbox layout