如何使用滚动条使列表适合父div

问题描述 投票:0回答:4

我无法使列表适合父div(定义为100vh)。该列表使div溢出。尝试使用flex和grid失败。我不想使用固定大小的像素,因为页面必须使用浏览器窗口调整大小。

以下代码笔显示问题。感谢您的帮助

https://codepen.io/iamkky/pen/ExavYer

<html>
<head>
</head>
<body>
  <div id="main">
    <div id="title">title<div>
    <div id="list">
      <ul>
        <li>name 1</li>
        <li>name 2</li>
        <li>name 3</li>
        <li>name 4</li>
        <li>name 5</li>
        <li>name 6</li>
        <li>name 7</li>
        <li>name 8</li>
        <li>name 9</li>
        <li>name 10</li>
        <li>name 11</li>
        <li>name 12</li>
        <li>name 13</li>
        <li>name 14</li>
        <li>name 15</li>
        <li>name 16</li>
        <li>name 17</li>
        <li>name 18</li>
        <li>name 19</li>
        <li>name 20</li>
        <li>name 21</li>
      </ul>  
    </div>
  <div>
</body>
</html>
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
        margin: 0;
        padding: 0;
        border: 0;
        font-size: 100%;
        font: inherit;
        vertical-align: baseline;
}

div {
        border: 1px solid #5050ff;
}

body {
  font-size: xxx-large;
}

#main{
  height: 100vh;        
}

#list {
}

ul {
}
html css
4个回答
0
投票
  <div class="containing-div">

     <div class="floating-div">
            <ul>
                <li>List Item One</li>
                <li>List Item Two</li>
                <li>List Item Three</li>
                <li>List Item Four</li>
            </ul>
        </div>
    <div class="floating-div">
        <ul>
            <li>List Item Five</li>
            <li>List Item Six</li>
            <li>List Item Seven</li>


              <li>List Item Eight</li>
            </ul>
        </div>
    <div class="clear"></div>

    </div>

css

  .containing-div {
      background-color: #d2b48c;
      display: block;
      height: auto;
    }
    .floating-div {
      float: left;
      width: 50%;
    }
    .floating-div ul {
      display: inline-block;
      height: auto;
    }
    /*Added*/.clear {
      clear: both;
    }

0
投票

我在ul中添加了一些规则,例如:

ul {
  overflow-y: scroll;
  height: calc(100vh - 4rem);
}

0
投票
<html>
<head>
</head>
<body>
  <div id="main">
    <div id="title">title<div> /* The lack of a slash */
    <div id="list">
      <ul>
        <li>name 1</li>
        <li>name 2</li>
        <li>name 3</li>
        <li>name 4</li>
        <li>name 5</li>
        <li>name 6</li>
        <li>name 7</li>
        <li>name 8</li>
        <li>name 9</li>
        <li>name 10</li>
        <li>name 11</li>
        <li>name 12</li>
        <li>name 13</li>
        <li>name 14</li>
        <li>name 15</li>
        <li>name 16</li>
        <li>name 17</li>
        <li>name 18</li>
        <li>name 19</li>
        <li>name 20</li>
        <li>name 21</li>
      </ul>  
    </div> /* The lack of a slash */
  <div>
</body>
</html>

#main{
  height: calc(100vh - 2px);/* The border is 2 pixels and needs to be subtracted */
  overflow: auto;
}

0
投票

我使用flexbox为您创建了一个演示。希望能对您有所帮助!

*{
  box-sizing:border-box;
}
html, body {
        margin: 0;
        padding: 0;
}

div {
        border: 1px solid #5050ff;
}

body {
  font-size: xxx-large;
}

#main{
  height: 100vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

#list {
  overflow: auto;
}

ul {
}
  <div id="main">
    <div id="title">title</div>
    <div id="list">
      <ul>
        <li>name 1</li>
        <li>name 2</li>
        <li>name 3</li>
        <li>name 4</li>
        <li>name 5</li>
        <li>name 6</li>
        <li>name 7</li>
        <li>name 8</li>
        <li>name 9</li>
        <li>name 10</li>
        <li>name 11</li>
        <li>name 12</li>
        <li>name 13</li>
        <li>name 14</li>
        <li>name 15</li>
        <li>name 16</li>
        <li>name 17</li>
        <li>name 18</li>
        <li>name 19</li>
        <li>name 20</li>
        <li>name 21</li>
      </ul>  
    </div>
  </div>
© www.soinside.com 2019 - 2024. All rights reserved.