6

杰宾。单击左侧的按钮。第一个是不需要滚动的覆盖示例(因此它可以完美运行),第二个按钮什么也不做,第三个按钮是我正在描述的问题。请注意,我在 css 选项卡中的主要样式之前复制/粘贴了 ZenPen 样式。

我正在使用 Bootstrap 3.0 和ZenPen。这个想法是我在屏幕左侧有一个菜单,您可以在其中单击一个按钮来隐藏和显示不同的“应用程序”或覆盖。这些叠加层正在使用position: fixed,但我不能为 ZenPen 叠加层执行此操作,否则我将无法在其中滚动。

如果我#wordInner { position: fixed;改为#wordInner { position: absolute;改为,它将能够滚动,但它不会占据整个页面(而是像普通container类一样居中在屏幕中间。在 JsBin 中,它处于打开状态position: absolute,但将其更改为查看我正在谈论的问题。

我的代码背后的逻辑是我使用col-lg-12, 并设置同一个 div 的样式,以便它占据整个页面(因为 awidth: 100%显然不起作用。)

主要的CSS:

#wrap {
    position: relative;
}
#main {
    position: relative;
}

ZenPen 的 css(默认ZenPen css的链接):

#word {
    overflow: hidden;
    text-shadow: none;
}

#word b, #word strong {
    color: #000;
}

#wordInner {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;

    padding: 5px;
    /* because nav is about 100 px, zenpen's icon menu is about 65px */
    padding-left: 165px;
}

#word {
    overflow-y: scroll;

-webkit-transition: all 600ms;
-moz-transition: all 600ms;
-ms-transition: all 600ms;
-o-transition: all 600ms;
    transition: all 600ms;
}

#word section {
    height: 100%;
    margin: auto;
}

以及相关的html(ZenPen html的链接:ZenPen html):

 <div class="container" id="wrap">
      <div class="container" id="main">
      <!-- snip irrelevant html -->
      </div>
  </div>

<div class="container" id="apps">
    <div class="row">
       <div class="col-lg-12"  id="appsInner">
         <div><a href="#" id="close_apps">Close</a></div>
         <input type="text" class="form-control" placeholder="Search here" />
       </div>
    </div>
</div>

  <div class="container" id="word">
    <div class="row">
    <div class="col-lg-12 yin" id="wordInner" >
    <div><a href="#" id="close_word">Close</a></div>
    <!-- snip zenpen html -->
    </div>
    </div>
    </div>
  </div>
  </div>

    <nav>
    <ul>
        <li><a href="#" class="btn light"  id="open_apps"><span class="entypo-search"></span></a><span class='button-text'>Apps</span></li>
        <li><a href="#" class="btn red"  id="home"><span class="entypo-home"></span></a><span class='button-text'>Home</span></li>
        <li><a href="#" class="btn green"  id="open_word"><span class="entypo-leaf"></span></a><span class='button-text'>Word</span></li>
    </ul>
  </nav>
4

1 回答 1

14

您可以将溢出设置html, bodyoverflow: hidden然后设置#wordInner { position: fixed; overflow: auto;。这将确保页面右侧只有一个可见滚动条,并且仅在需要时。如果您需要为其他页面overflow设置为visible,则可以在打开和关闭应用程序时使用 jQuery 进行设置(因为您已经在使用它了)#word

选项 1(仅使用 CSS):jsBin

html, body
{
  overflow: hidden;
}

#wordInner {  
  position: fixed;
  overflow: auto;
  ...
}

选项 2(使用 CSS 和 jQuery):jsBin

CSS

#wordInner {  
  position: fixed;
  overflow: auto;
  ...
}

jQuery

$("#open_word").click(function(event) {
  event.preventDefault();   
  $("html, body").css("overflow", "hidden");
  $("#word").show();
});

$("#close_word").click(function(event) {
  event.preventDefault();
  $("html, body").css("overflow", "visible");
  $("#word").hide();
});
于 2013-09-13T08:14:13.957 回答