Div内容溢出

时间:2016-03-23 09:11:31

标签: html css flexbox

如果内容超出父div宽度,我希望水平显示链接列表(大约30个链接)而不使用新行。如果链接溢出,将显示滚动以允许用户查看其余链接。 问题是,如果内容超过父div,则父div(包含链接的div)将溢出。 这是代码: HTML

<div class="container">
    <div  class="pageContent">
        <br />
        <div class="links">
            <a href='#1'>link1 </a>
            <a href='#1'>link2 </a>
            <a href='#1'>link3 </a>
            <a href='#1'>link4 </a>
            <a href='#1'>link5 </a>
            <a href='#1'>link6 </a>
            <a href='#1'>link7 </a>
            <a href='#1'>link8 </a>
            <a href='#1'>link9 </a>
            <a href='#1'>link1 </a>
            <a href='#1'>link2 </a>
            <a href='#1'>link3 </a>
            <a href='#1'>link4 </a>
            <a href='#1'>link5 </a>
            <a href='#1'>link6 </a>
            <a href='#1'>link7 </a>
            <a href='#1'>link8 </a>
            <a href='#1'>link9 </a>
            <a href='#1'>link1 </a>
            <a href='#1'>link2 </a>
            <a href='#1'>link3 </a>
            <a href='#1'>link4 </a>
            <a href='#1'>link5 </a>
            <a href='#1'>link6 </a>
            <a href='#1'>link7 </a>
            <a href='#1'>link8 </a>
            <a href='#1'>link9 </a>
            <a href='#1'>link1 </a>
            <a href='#1'>link2 </a>
            <a href='#1'>link3 </a>
            <a href='#1'>link4 </a>
            <a href='#1'>link5 </a>
            <a href='#1'>link6 </a>
            <a href='#1'>link7 </a>
            <a href='#1'>link8 </a>
            <a href='#1'>link9 </a>
            <a href='#1'>link1 </a>
            <a href='#1'>link2 </a>
            <a href='#1'>link3 </a>
            <a href='#1'>link4 </a>
            <a href='#1'>link5 </a>
            <a href='#1'>link6 </a>
            <a href='#1'>link7 </a>
            <a href='#1'>link8 </a>
            <a href='#1'>link9 </a>
            <a href='#1'>link1 </a>
            <a href='#1'>link2 </a>
            <a href='#1'>link3 </a>
            <a href='#1'>link4 </a>
            <a href='#1'>link5 </a>
            <a href='#1'>link6 </a>
            <a href='#1'>link7 </a>
            <a href='#1'>link8 </a>
            <a href='#1'>link9 </a>
        </div>
        <br />
    </div>
    <div class="side">
        side here
    </div>
</div>

CSS:

.container {
    display: flex;
    flex-direction: row;
    justify-content: space-around;
}
a {
    padding: 5px;
}
.pageContent {
    order: 2;
    flex-grow: 4;
    background: #ecf0f1;
}
.side {
    background: #3498db;
    flex-grow: 1;
    order: 1;
}
.links {
    white-space: nowrap;
    overflow-x: scroll;
    width: 100%;
}

这是一个演示 https://github.com/wicketstuff/core/pull/476

我的问题是:如何将div.links的宽度设置为等于父级的宽度而没有溢出?

如果可能,我想要纯粹的CSS解决方案。

我尝试设置.link {width:500px}并且它可以工作,但我需要使用动态值来满足所有浏览器

2 个答案:

答案 0 :(得分:2)

请从.links

中删除以下css
.links {
  /*overflow-x: scroll;
  white-space: nowrap;*/
  width: 100%;
}

答案 1 :(得分:2)

以下是解决该问题的一种方法

&#13;
&#13;
.container {
  display: flex;
  flex-direction: row;
  justify-content: space-around;

}
a {
  padding:5px;
}
.pageContent {

  order:2;

  flex-grow: 4;
  background:#ecf0f1;

}

.side {
  background:#3498db;
  flex-grow: 1;
  order: 1;


}
.links {
  white-space: nowrap;
  width:100%;
  height: 40px;
  position: relative;
}
.links-scroll {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 100%;
  overflow: auto;
}
&#13;
<div class="container">


  <div  class="pageContent">
    <br />

    <div class="links">
      <div class="links-scroll">
        <a href='#1'>link1 </a>
        <a href='#1'>link2 </a>
        <a href='#1'>link3 </a>
        <a href='#1'>link4 </a>
        <a href='#1'>link5 </a>
        <a href='#1'>link6 </a>
        <a href='#1'>link7 </a>
        <a href='#1'>link8 </a>
        <a href='#1'>link9 </a>
        <a href='#1'>link1 </a>
        <a href='#1'>link2 </a>
        <a href='#1'>link3 </a>
        <a href='#1'>link4 </a>
        <a href='#1'>link5 </a>
        <a href='#1'>link6 </a>
        <a href='#1'>link7 </a>
        <a href='#1'>link8 </a>
        <a href='#1'>link9 </a>
        <a href='#1'>link1 </a>
        <a href='#1'>link2 </a>
        <a href='#1'>link3 </a>
        <a href='#1'>link4 </a>
        <a href='#1'>link5 </a>
        <a href='#1'>link6 </a>
        <a href='#1'>link7 </a>
        <a href='#1'>link8 </a>
        <a href='#1'>link9 </a>
        <a href='#1'>link1 </a>
        <a href='#1'>link2 </a>
        <a href='#1'>link3 </a>
        <a href='#1'>link4 </a>
        <a href='#1'>link5 </a>
        <a href='#1'>link6 </a>
        <a href='#1'>link7 </a>
        <a href='#1'>link8 </a>
        <a href='#1'>link9 </a>
        <a href='#1'>link1 </a>
        <a href='#1'>link2 </a>
        <a href='#1'>link3 </a>
        <a href='#1'>link4 </a>
        <a href='#1'>link5 </a>
        <a href='#1'>link6 </a>
        <a href='#1'>link7 </a>
        <a href='#1'>link8 </a>
        <a href='#1'>link9 </a>
        <a href='#1'>link1 </a>
        <a href='#1'>link2 </a>
        <a href='#1'>link3 </a>
        <a href='#1'>link4 </a>
        <a href='#1'>link5 </a>
        <a href='#1'>link6 </a>
        <a href='#1'>link7 </a>
        <a href='#1'>link8 </a>
        <a href='#1'>link9 </a>

      </div>

    </div>
    <br />

  </div>
  <div class="side">
    side here

  </div>

</div>
&#13;
&#13;
&#13;