【问题标题】:Hidden content running into footer隐藏的内容进入页脚
【发布时间】:2014-07-17 06:37:38
【问题描述】:

使用 jquery show/hide 显示我的 display:none; 隐藏内容时遇到问题。当我显示隐藏内容时,它会进入我的页脚,因为我的 position:relative;.wrapper 不知道 position:absolute;#learninfo #promoteinfo``#networkinfo #performinfo 的高度。当屏幕显示较大时(如 macbook pro 的正常窗口大小),这没问题,但屏幕越小,进入我的页脚的文本越多,如果文本超过<footer>,甚至在下面。我正在使用的代码是(我确实使用了一些基础 + SASS

HTML

<ul class="idm-mission">
        <h2>
        <li id="learn">LEARN</li>
        <li> | </li>
        <li id="promote">PROMOTE</li>
        <li> | </li>
        <li id="network">NETWORK</li>
        <li> | </li>
        <li id="perform">PERFORM</li>
        </h2>
      </ul>
    <div class="wrapper">
      <div id="learninfo">
        <div class="row">
          <div class="large-12 columns">
            <p></p>
          </div>
        </div>
      </div>
      <div id="promoteinfo">
        <div class="row">
          <div class="large-12 columns">
            <p></p>
          </div>
        </div>
      </div>
      <div id="networkinfo">
        <div class="row">
          <div class="large-12 columns">
            <p></p>
          </div>
        </div>
      </div>
      <div id="performinfo">
        <div class="row">
          <div class="large-12 columns">
            <p></p>
          </div>
        </div>
      </div>
    </div>
  <!-- End of content -->
<!-- footer html below -->
<footer>
</footer>

CSS

.wrapper {
    position: relative;
    padding-bottom: 50px;
}
#learninfo,#promoteinfo,#networkinfo,#performinfo {
    display: none;
    position: absolute;
    color: #fcb702;
    width: 100%;
}
#learn:hover,#promote:hover,#network:hover,#perform:hover {
    color: $primary-color;
}
footer {
    color: #fff;
    padding: 10px 0;
    margin-top: rem-calc(100px);
    text-align: left;
}

jQuerY

// Learn information display 
$("#learn").hover(function (e) {
//This funciton defines what happens on mouse-in or ho
$("#learninfo").show();



}, function (e) {
//This function defines what happens on mouse-out or when the hover is over.
$("#learninfo").hide();

});



// Promote information display 
$("#promote").hover(function (e) {
//This funciton defines what happens on mouse-in or ho
$("#promoteinfo").show();


}, function (e) {
//This function defines what happens on mouse-out or when the hover is over.

$("#promoteinfo").hide();

});



// Network information display 
$("#network").hover(function (e) {
//This funciton defines what happens on mouse-in or ho
$("#networkinfo").show();


}, function (e) {
//This function defines what happens on mouse-out or when the hover is over.

$("#networkinfo").hide();

});



// Perform information display 
$("#perform").hover(function (e) {
//This funciton defines what happens on mouse-in or ho
$("#performinfo").show();


}, function (e) {
//This function defines what happens on mouse-out or when the hover is over.

$("#performinfo").hide();

});

【问题讨论】:

  • 您能否将问题的工作示例放入jsfiddle.net。任何像这样的 UI 问题都很难在没有看到问题的情况下诊断出来。
  • 您也可以使用.toggle('selector') 使元素显示/隐藏
  • jsfiddle.net/YqBbm 虽然我不知道如何准备好 jQuerY 文档,因为我总是使用 $.foundation 这是同一件事,但它在 jfiddle 中不起作用,因为基础不是现在,如果您告诉我如何编辑 $.ready 以使其正常工作,我会这样做,以便您可以看到我的工作方式。
  • 学习了如何在基础之外正确添加 ready 语句,以便您可以看到问题所在。jsfiddle.net/YqBbm/1

标签: javascript jquery html css zurb-foundation


【解决方案1】:

发生这种情况是因为您在 wrapper 的子 div 中指定了新的位置规则。让子 div 继承 wrapper div 的位置

.wrapper {
    position: relative;
    padding-bottom: 50px;
}
#learninfo,#promoteinfo,#networkinfo,#performinfo {
    display: none;
    position: inherit;
    color: #fcb702;
    width: 100%;
}

【讨论】:

  • 它绝对位于相对父级内部,用于 jquery 显示/隐藏目的,所以这对我不起作用。
  • 我刚刚用同样的东西运行了你的代码,它运行良好:)
  • 我刚刚用同样的东西运行了你的代码,它运行良好:
  • 它只是在 jsfiddle 上看起来像我先这样尝试过,然后想到了同样的事情,但由于某种原因不适用于 jquery 显示/隐藏。让它在真实环境中变得不稳定并弄乱我的页脚。我阅读了文档并有几本 jquery 书籍解释了如何解决这个问题,这就是我拥有父相对子绝对值的原因。有意义吗?
【解决方案2】:

替换这部分 CSS 就可以了:

#learninfo,#promoteinfo,#networkinfo,#performinfo {
    visibility:hidden;
    position: relative;
    color: #fcb702;
    width: 100%;
}

发生这种情况的原因:

绝对定位的元素不会被考虑到父relative内容的高度计算中,因此最好使用position:relative;将其纳入计算。

display:none; 从字面上隐藏了代码中的元素,因此它不能计算到父元素的高度,所以使用visibility:hidden; 只是让它对用户不可见并且仍然在计算中被考虑。

附:当您使用它时,请替换 jQuery 的这些部分:

$("#learninfo").show();

与:

$("#learninfo").css('visibility','visible');

$("#learninfo").hide();

与:

$("#learninfo").css('visibility','hidden');

对于其他 show()hide() 函数也是如此。

更新:

如果你不想显示空间,那么你只需要将位置更改为相对,参见工作示例 => http://jsfiddle.net/G64Bs/1/

如果您明确想要使用absolute 位置,那么您需要使用 jQuery 控制父 div 的高度,您必须在此处提出另一个问题,或者查看网上的其他示例。

【讨论】:

  • 如果我使用visibility:hidden;,那么即使它不可见,它也会占用空间我正在尝试使用display:none,这样它就不会在不可见时占用空间。
  • 现在尝试它有几个问题也许你可以帮助我实现这些更改jsfiddle.net/YqBbm/1(在你的小提琴中你使用display:none而不是visibility:hidden我真的不介意我使用哪一个但我不希望它在隐藏时占用空间。
  • 在实时环境中不起作用 idk 为什么它在小提琴中起作用,但它使一切变得跳跃/断断续续。这就是为什么我首先做了这样的定位,因为有人提到它在发生时是一个修复。如何让visibility:hidden; div 不占用空间?
  • 为了让它“不跳动”,你需要给 show()hide() 函数一些持续时间以使它有点动画 ==> jsfiddle.net/YqBbm/4
  • 仍然弄乱了我的页脚并且变得波涛汹涌我实际上已经尝试了大部分这些东西。这让我只想把包含元素的文件夹发送给你,这样你就可以看到我在说什么。这样可以吗?它不是很大,只是一个 html 页面。
【解决方案3】:

你应该试试下面的代码(用于此目的的 jQuery 代码)

 $("SelectelementByIDClassOrOTHER").css("display","inline");//first select your require element and set css as inline or block according to your need.
     $("SelectelementByIDClassOrOTHER").css("display","block");//

【讨论】:

    猜你喜欢
    • 2012-12-02
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    相关资源
    最近更新 更多