如何使这个flexbox容器滚动而不是调整宽度?

时间:2017-11-29 08:19:16

标签: html css css3 flexbox overflow

我想让flexbox容器的宽度为100%并且有一个滚动条来查看溢出的内容。现在它似乎使内容适应窗口的宽度,并且它总是占用宽度的100%,而内容根本没有溢出。

https://codepen.io/UrsuGrizzly/pen/BmqPvm https://jsfiddle.net/duvq2e42/

<div id="topimg">
 <a href="#" id="st1"></a>
 <a href="#" id="second"></a>
 <a href="#" id="first"></a>
 <a href="#" id="third"></a>
 <a href="#" id="fourth"></a>
 <a href="#" id="fifth"></a>
 <a href="#" id="sixth"></a>
 <a href="#" id="nd2"></a>
 <a href="#" id="rd3"></a>
 <a href="#" id="th4"></a>
</div>

#topimg {
 display: flex;
 min-width:100%;
 overflow-x:scroll;
}

#topimg > * {
 margin: 0 4px 0 0;
 box-shadow: 0 1px 6px rgba(32, 33, 36, 0.28);
}

#topimg #st1 {
 background-color: yellow;
 width: 125px;
 height: 144px;
 display: block;
 background-size: cover;
 background-position: center;
}

#topimg #nd2 {
 background-color: orange;
 width: 100px;
 height: 144px;
 display: block;
 background-size: cover;
 background-position: center;
}

#topimg #rd3 {
 background-color: cyan;
 width: 100px;
 height: 144px;
 display: block;
 background-size: cover;
 background-position: center;
}

#topimg #th4 {
 background-color:green;
 width: 100px;
 height: 144px;
 display: block;
 background-size: cover;
 background-position: center;
}

#topimg #first {
 background-color: purple;
 width: 100px;
 height: 144px;
 display: block;
 background-size: cover;
 background-position: center;
}

#topimg #second {
 background-color: red;
 width: 250px;
 height: 144px;
 display: block;
 background-size: cover;
 background-position: center;
}

#topimg #third {
 background-color: blue;
 width: 200px;
 height: 144px;
 display: block;
 background-size: cover;
 background-position: top;
}

#topimg #fourth {
 background-color: fuchsia;
 width: 250px;
 height: 144px;
 display: block;
 background-size: cover;
 background-position: center;
}

#topimg #fifth {
 background-color: brown;
 width: 100px;
 height: 144px;
 display: block;
 background-size: cover;
 background-position: center;
}

#topimg #sixth {
 background-color: coral;
 width: 100px;
 height: 144px;
 display: block;
 background-size: cover;
 background-position: center;
}

1 个答案:

答案 0 :(得分:4)

由于弹性项目的flex-shrink默认为1,因此可以缩小,但确实如此,除非其内容阻止它这样做。

flex-shrink: 0;添加到您的#topimg > *规则

Stack snippet

&#13;
&#13;
    #topimg {
     display: flex;
     min-width:100%;
     overflow-x:scroll;
    }

    #topimg > * {
     margin: 0 4px 0 0;
     box-shadow: 0 1px 6px rgba(32, 33, 36, 0.28);
     flex-shrink: 0;                                    /*  added  */
    }

    #topimg #st1 {
     background-color: yellow;
     width: 125px;
     height: 144px;
     display: block;
     background-size: cover;
     background-position: center;
    }

    #topimg #nd2 {
     background-color: orange;
     width: 100px;
     height: 144px;
     display: block;
     background-size: cover;
     background-position: center;
    }

    #topimg #rd3 {
     background-color: cyan;
     width: 100px;
     height: 144px;
     display: block;
     background-size: cover;
     background-position: center;
    }

    #topimg #th4 {
     background-color:green;
     width: 100px;
     height: 144px;
     display: block;
     background-size: cover;
     background-position: center;
    }

    #topimg #first {
     background-color: purple;
     width: 100px;
     height: 144px;
     display: block;
     background-size: cover;
     background-position: center;
    }

    #topimg #second {
     background-color: red;
     width: 250px;
     height: 144px;
     display: block;
     background-size: cover;
     background-position: center;
    }

    #topimg #third {
     background-color: blue;
     width: 200px;
     height: 144px;
     display: block;
     background-size: cover;
     background-position: top;
    }

    #topimg #fourth {
     background-color: fuchsia;
     width: 250px;
     height: 144px;
     display: block;
     background-size: cover;
     background-position: center;
    }

    #topimg #fifth {
     background-color: brown;
     width: 100px;
     height: 144px;
     display: block;
     background-size: cover;
     background-position: center;
    }

    #topimg #sixth {
     background-color: coral;
     width: 100px;
     height: 144px;
     display: block;
     background-size: cover;
     background-position: center;
    }
&#13;
<div id="topimg">
          <a href="#" id="st1"></a>
          <a href="#" id="second"></a>
          <a href="#" id="first"></a>
          <a href="#" id="third"></a>
          <a href="#" id="fourth"></a>
          <a href="#" id="fifth"></a>
          <a href="#" id="sixth"></a>
          <a href="#" id="nd2"></a>
          <a href="#" id="rd3"></a>
          <a href="#" id="th4"></a>
</div>
&#13;
&#13;
&#13;

作为比较,如果链接是包含的内容,它将按原样运行。

Stack snippet

&#13;
&#13;
#topimg {
  display: flex;
  min-width: 100%;
  overflow-x: scroll;
}

#topimg > * {
  margin: 0 4px 0 0;
  box-shadow: 0 1px 6px rgba(32, 33, 36, 0.28);
}

#topimg #st1 {
  background-color: yellow;
  width: 125px;
  height: 144px;
  display: block;
  background-size: cover;
  background-position: center;
}

#topimg #nd2 {
  background-color: orange;
  width: 100px;
  height: 144px;
  display: block;
  background-size: cover;
  background-position: center;
}

#topimg #rd3 {
  background-color: cyan;
  width: 100px;
  height: 144px;
  display: block;
  background-size: cover;
  background-position: center;
}

#topimg #th4 {
  background-color: green;
  width: 100px;
  height: 144px;
  display: block;
  background-size: cover;
  background-position: center;
}

#topimg #first {
  background-color: purple;
  width: 100px;
  height: 144px;
  display: block;
  background-size: cover;
  background-position: center;
}

#topimg #second {
  background-color: red;
  width: 250px;
  height: 144px;
  display: block;
  background-size: cover;
  background-position: center;
}

#topimg #third {
  background-color: blue;
  width: 200px;
  height: 144px;
  display: block;
  background-size: cover;
  background-position: top;
}

#topimg #fourth {
  background-color: fuchsia;
  width: 250px;
  height: 144px;
  display: block;
  background-size: cover;
  background-position: center;
}

#topimg #fifth {
  background-color: brown;
  width: 100px;
  height: 144px;
  display: block;
  background-size: cover;
  background-position: center;
}

#topimg #sixth {
  background-color: coral;
  width: 100px;
  height: 144px;
  display: block;
  background-size: cover;
  background-position: center;
}
&#13;
<div id="topimg">
  <span>
    <a href="#" id="st1"></a>
  </span>
  <span>
    <a href="#" id="second"></a>
  </span>
  <span>
    <a href="#" id="first"></a>
  </span>
  <span>
    <a href="#" id="third"></a>
  </span>
  <span>
    <a href="#" id="fourth"></a>
  </span>
  <span>
    <a href="#" id="fifth"></a>
  </span>
  <span>
    <a href="#" id="sixth"></a>
  </span>
  <span>
    <a href="#" id="nd2"></a>
  </span>
  <span>
    <a href="#" id="rd3"></a>
  </span>
  <span>
    <a href="#" id="th4"></a>
  </span>
</div>
&#13;
&#13;
&#13;