将鼠标悬停在 div 更新上,按点显示或间歇性显示

hover over div updates display in spots or intermittently

提问人:Rip 提问时间:2/22/2022 最后编辑:isherwoodRip 更新时间:2/22/2022 访问量:33

问:

我正在尝试实现悬停以显示标题的效果。我已将 :hover 选择器分配给宽度为 99% 且高度为 10vh 的 div,该 div 应该与标题相邻。当我将鼠标悬停在 div 的中心时,悬停上的显示会一致执行,当我将鼠标悬停在 div 的右侧时会间歇性地执行,当我将鼠标悬停在 div 的左侧时,则从不执行。我添加了一个边框,使 :hover div 的边界可见。

当我将悬停在 div 上的任何地方时,悬停不应该处于活动状态吗?

这个设置我做错了什么?

https://codepen.io/ripmurdock/pen/RwjyoqB?editors=1000

* {
  margin: 0;
  padding: 0;
}

body {
  background-color: #121212;
}

.cc_vert_c1-1 {
  width: 5vw;
  height: 83vh;
  left: 2vw;
  top: 16vh;
  position: absolute;
  overflow: hidden;
}

.cc_hdr_cl-1 {
  position: absolute;
  height: 10vh;
  border-style: dotted;
  border-color: white;
  display: none;
}

.cc_hover {
  position: absolute;
  height: 10vh;
  width: 99%;
  border-style: dotted;
  border-color: white;
}

.cc_hover:hover+#cc_hdr-1 {
  display: block;
}

.cc_hdr_logo_cl-1 {
  width: 40vw;
  max-height: 99.5vh;
  padding-left: 2vw;
  padding-top: 3vh;
}

.cc_horiz_c1-1 {
  width: 48.3vw;
  height: 10vh;
  left: 50vw;
  top: 3vh;
  position: absolute;
}
<div class="cc_vert_c1-1">
  <svg width="100" height="100vh">
    <rect width="100" height="100vh" fill="#fff" />
  </svg>
</div>

<div class="cc_hover"></div>

<div class="cc_hdr_cl-1" id="cc_hdr-1">
  <svg class="cc_hdr_logo_cl-1">
            <rect width="100" height="7vh" fill="#fff" />
    </svg>

  <svg class="cc_horiz_c1-1">
      <rect width="600" height="7vh" fill="#fff" />
    </svg>
</div>

html css svg 悬停

评论


答:

0赞 isherwood 2/22/2022 #1

悬停规则设置同级元素的 display 属性,该属性将其放置在原始元素上。然后,这会中断原始元素上的悬停事件。如果同级元素是元素,它仍然有效,因为悬停事件会传播。请看这里。

请注意,这可能会增加悬停区域的大小,因为父元素会被子元素拉伸。

我没有更具体的解决方案,因为我不知道你的目标。

* {
  margin: 0;
  padding: 0;
}

body {
  background-color: #121212;
}

.cc_vert_c1-1 {
  width: 5vw;
  height: 83vh;
  left: 2vw;
  top: 16vh;
  position: absolute;
  overflow: hidden;
}

.cc_hdr_cl-1 {
  position: absolute;
  height: 10vh;
  border-style: dotted;
  border-color: white;
  display: none;
}

.cc_hover {
  position: absolute;
  height: 10vh;
  width: 99%;
  border-style: dotted;
  border-color: white;
}

.cc_hover:hover #cc_hdr-1 {
  display: block;
  background: pink;
}

.cc_hdr_logo_cl-1 {
  width: 40vw;
  max-height: 99.5vh;
  padding-left: 2vw;
  padding-top: 3vh;
}

.cc_horiz_c1-1 {
  width: 48.3vw;
  height: 10vh;
  left: 50vw;
  top: 3vh;
  position: absolute;
}
<div class="cc_vert_c1-1">
  <svg width="100" height="100vh">
    <rect width="100" height="100vh" fill="#fff" />
  </svg>
</div>

<div class="cc_hover">
  <div class="cc_hdr_cl-1" id="cc_hdr-1">
    <svg class="cc_hdr_logo_cl-1">
            <rect width="100" height="7vh" fill="#fff" />
    </svg>

    <svg class="cc_horiz_c1-1">
      <rect width="600" height="7vh" fill="#fff" />
    </svg>
  </div>
</div>