使无序列表可滚动

时间:2015-04-22 09:26:04

标签: html css twitter-bootstrap

我有一个无序列表,它位于div标签内,最初列表为空。当项目被添加到它上面时,它会展开,我希望它一旦列表的长度超过网页的长度就可以滚动,即我不希望网页滚动,我只想要无序列表滚动。但是目前,我的无序列表的滚动条没有出现。

我的HTML代码是:

<div style="width: 25%; float: right; " class="online_users">
  <div class="panel panel-primary">
    <div class="panel-heading">
      <span class="glyphicon glyphicon-comment"></span> Online Users
        <ul id="ListOfOnlineUsers" style="overflow: auto;height:100%; word-wrap: break-word;" class="list-group">  
        </ul>
    </div>
  </div>
</div>

我的CSS代码是

html{
    height: 100%
}

{
  margin: 0;
  padding: 0;
}
body {
  padding: 50px;
  font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
  height: 100%;

}

a {
  color: #00B7FF;
}

.chat
{
    list-style: none;
    margin: 0;
    padding: 0;
}

.chat li
{
    margin-bottom: 10px;
    padding-bottom: 5px;
    border-bottom: 1px dotted #B3A9A9;
}

.chat li.left .chat-body
{
    /*margin-left: 60px;*/
}

.chat li.right .chat-body
{
    /*()margin-right: 60px;*/
}


.chat li .chat-body p
{
    margin: 0;
    color: #777777;
    word-wrap: break-word;
}

.panel .slidedown .glyphicon, .chat .glyphicon
{
    /*margin-right: 5px;*/
}

.panel-body
{
    overflow-y: scroll;
    top: 1em;
    left: 1em;
    height: 250px;
}

::-webkit-scrollbar-track
{
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
    background-color: #F5F5F5;
}

::-webkit-scrollbar
{
    width: 12px;
    background-color: #F5F5F5;
}

::-webkit-scrollbar-thumb
{
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
    background-color: #555;
}


/* CSS used here will be applied after bootstrap.css */
body, html {
    height: 100%;
    background-repeat: no-repeat;
    background-image: linear-gradient(rgb(154, 145, 162), rgb(12, 97, 33));
}

.card-container.card {
    width: 350px;
    padding: 40px 40px;
}
.card {
    background-color: #F7F7F7;
    /* just in case there no content*/
    padding: 20px 25px 30px;
    margin: 0 auto 25px;
    margin-top: 50px;
    /* shadows and rounded borders */
    -moz-border-radius: 2px;
    -webkit-border-radius: 2px;
    border-radius: 2px;
    -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
    -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
    box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
}
.btn {
    font-weight: 700;
    height: 36px;
    -moz-user-select: none;
    -webkit-user-select: none;
    user-select: none;
    cursor: default;
}

.form-signin input[type=text],
.form-signin button {
    width: 100%;
    display: block;
    margin-bottom: 10px;
    z-index: 1;
    position: relative;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

.btn.btn-signin:hover,
.btn.btn-signin:active,
.btn.btn-signin:focus {
    background-color: rgb(12, 97, 33);
}

7 个答案:

答案 0 :(得分:9)

将列表的max-height设置为其父级的高度(或任何您需要的高度),然后将其overflow属性设置为auto

这是一个简单的例子:

div{
  border:1px solid #000;
  font-family:arial;
  height:100px;
  width:200px;
}
ul{
  list-style:none;
  max-height:100px;
  margin:0;
  overflow:auto;
  padding:0;
  text-indent:10px;
}
li{
  line-height:25px;
}
li:nth-child(even){
  background:#ccc;
}
<div>
  <ul>
    <li>text</li>
    <li>text</li>
    <li>text</li>
    <li>text</li>
    <li>text</li>
    <li>text</li>
  </ul>
</div>

答案 1 :(得分:0)

您可以将ul的高度更改为max-height: 100vh,这样ul将始终具有视口的大小。

对于浏览器支持,请检查:http://caniuse.com/#search=vh

如果您想要在没有视口高度的div内,请关注@Shaggy answer。

答案 2 :(得分:0)

尝试添加包装器并将max-height设置为包装器

<强> HTML

<div class="listWrapper">
    <ul>
        <li>content</li>
        <li>content</li>
        <li>content</li>
        <li>content</li>
        <li>content</li>
        <li>content</li>
        <li>content</li>
        <li>content</li>
        <li>content</li>
        <li>content</li>
        <li>content</li>
    </ul>
</div>

<强>的CSS

ul, li {
    list-style:none;
    padding:0;
    margin:0;
}
.listWrapper {
    max-height:100px;
    overflow-y:auto;
}

Fiddle Demo

答案 3 :(得分:0)

您为类.panel-body定义了正确的CSS属性,但尚未在HTML中使用它。将<ul>移动到具有班级.panel-body的单独div中。这应该是诀窍:

<div style="width: 25%; float: right; " class="online_users">
  <div class="panel panel-primary">
    <div class="panel-heading">
      <span class="glyphicon glyphicon-comment"></span> Online Users
    </div>
    <div class="panel-body">
      <ul id="ListOfOnlineUsers" style="height:100%; word-wrap: break-word;" class="list-group">  
      </ul>
    </div>
  </div>
</div>

修改:您应该从overflow: auto中删除<ul>,否则您会获得双滚动条

Edit2:又一次优化:为margin: 0设置<ul>并将.panel-body更改为overflow: auto,因此div的滚动条仅在需要时才可见。见my fiddle

答案 4 :(得分:0)

如果高度设置为100%,则容器将不会显示滚动条。

https://developer.mozilla.org/en-US/docs/Web/CSS/overflow

&#13;
&#13;
.panel {
  width: 200px;
}
.list-group {
  overflow: auto;
  height: 200px;
}
&#13;
<div class="online_users">
  <div class="panel panel-primary">
    <div class="panel-heading">
      <span class="glyphicon glyphicon-comment"></span> Online Users
      <ul id="ListOfOnlineUsers" class="list-group">
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
        <li>some item</li>
      </ul>
    </div>
  </div>
</div>
&#13;
&#13;
&#13;

答案 5 :(得分:0)

只需设置 <ul 的高度并给它一个 overflow: scroll;

应该可以。

答案 6 :(得分:0)

试试这个 >>>

<div class = "list"></div>

和 css 属性 >>>

/* Hide scrollbar for Chrome, Safari and Opera */
.list::-webkit-scrollbar {
  display: none;
}

/* Hide scrollbar for IE, Edge and Firefox */
.list {
  -ms-overflow-style: none; /* IE and Edge */
  scrollbar-width: none; /* Firefox */
}