【问题标题】:CSS display property not workingCSS显示属性不起作用
【发布时间】:2015-01-20 15:11:47
【问题描述】:

我有一个 div。最初,该 div 上会显示一个数字。当我悬停 div 时,数字隐藏并显示一个段落。当我悬停时,该段落隐藏并且数字再次显示。

我尝试使用 css(显示:无和显示:块)和 jquery(显示()和隐藏())来实现这一点。两者都有效,但并非总是如此。有时,数字和段落都会消失,我必须刷新页面才能将它们恢复。它在 Chrome 上的效果比其他浏览器更好,但即使在 Chrome 中也并不总是有效。

页面在线here,大家可以自己试试。

代码如下所示:

div h2 {
   display: block;
}

div:hover h2 {
   display: none;
}

div p {
    display: none;
}

div:hover p {
    display: block;
}

有人知道我该如何解决这个问题吗?

【问题讨论】:

  • 尝试为 .temp*、h2 和 p 定义 z-index。我看不出它不应该工作的任何其他原因。它适用于 Firefox 和 Chrome。
  • 谢谢@MelanciaUK。我添加了一些代码。
  • 仍然不起作用@RadekPech。在某些浏览器中,它大部分时间都完全消失了......

标签: javascript jquery html css show-hide


【解决方案1】:

简单程序:

<div id="testDiv">
    <p class="num">1</p>
    <p class="para" class="invisible">Lorem Ipsum</p>
</div>

<style>
  .invisible {
    display: none;
  }
</style>

<script>
 $(function() {
    $('#testDiv').on('mouseover', function() {
      if($(this).find(".para").hasClass("invisible")) {
          $(this).find(".para").removeClass("invisible");
          $(this).find(".num").addClass("invisible");
      }
      else {
          $(this).find(".para").addClass("invisible");
          $(this).find(".num").removeClass("invisible");
      }
    });
  });
</script>

【讨论】:

  • JS在这里不好,因为它可能无法执行,CSS解决方案更好。
  • ^ 为什么会执行失败? o.O
  • "...它可能无法在您认为应该执行的时间执行。"因为浏览器不需要在特定时间执行JS代码,可能会推迟执行,可能会导致意想不到的结果。
  • 如果您阅读 jQuery 文档 (api.jquery.com/mouseover),您会发现 mouseover 事件并不能很好地准确告诉用户在做什么。无论如何,您的代码并没有做预期的事情。如果您查看实际的 Gonçalo 页面,已经有比您的更好的 JS 代码(参见 main.js 第 120 行)。
  • 这只是一个简单的解释,以获得他想要的东西。 @RadekPech
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 2020-02-16
  • 2020-10-08
  • 1970-01-01
  • 2016-08-02
  • 2014-05-22
  • 2012-01-06
相关资源
最近更新 更多