Non-wrapping CSS 固定宽度的 Flex
Non-wrapping CSS Flex with fixed widths
我正在构建一个 Carousel-type 组件,但在使其工作时遇到了一些困难 恰到好处。
我的基本方法是 div(包装器),其中包含许多其他 divs(项目)。我想在任何时候在轮播上显示 4 个项目。这些项目有不同的内容高度,但项目的高度应该相等(达到最大要求)。
我无法计算出 CSS 组合,我需要让它正常工作。
使用 this setup(HTML + post 底部的 CSS),每个 item-container
上的 width: 25%;
将被忽略。
如果我在 .item
中添加一个 fixed with,则 25% 开始生效,但项目宽度未知 -- 这取决于浏览器的大小。将其设置为 1000px 意味着您会丢失该项目的内容。将它设置为 ~210px 是可行的,但是当你开始缩小你的浏览器时,你会丢失内容。在大型浏览器上,间距过大。
奇怪的是,如果我将 flex-wrap: wrap
添加到 CSS,则会正确应用 25% 的宽度——但我不能那样做,因为那样它就不是轮播了! Example
场景很简单:
div 和 overflow: auto
中的未知数量的项目应显示为等高,并且屏幕上同时显示 children div 中的 4 个。
我的HTML结构如下:
<div id="container">
<div id="wrapper">
<div class="item-container">
<div class="item">
<p>
Carousel Item #1 with some quite long text.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #2.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #3.
</p>
</div>
</div>
...
</div>
</div>
我的CSS:
#container {
width: 100%;
background: #0f0;
overflow: auto;
}
#wrapper {
display: flex;
}
.item-container {
border: 1px solid #f00;
width: 25%;
}
注意,这是我的MCVE。在我的真实组件上,我有左右滚动的按钮,内容明显更复杂,诸如此类。
您只需将 flex: 0 0 auto
添加到 .item-container
个元素即可。
* {
box-sizing: border-box;
}
#container {
width: 100%;
background: #0f0;
overflow: auto;
}
#wrapper {
display: flex;
}
.item-container {
border: 1px solid #f00;
flex: 0 0 auto;
width: 25%;
}
<div id="container">
<div id="wrapper">
<div class="item-container">
<div class="item">
<p>
Carousel Item #1 with some quite long text.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #2.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #3.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #4.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #5.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #6.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #7.
</p>
</div>
</div>
</div>
</div>
我正在构建一个 Carousel-type 组件,但在使其工作时遇到了一些困难 恰到好处。
我的基本方法是 div(包装器),其中包含许多其他 divs(项目)。我想在任何时候在轮播上显示 4 个项目。这些项目有不同的内容高度,但项目的高度应该相等(达到最大要求)。
我无法计算出 CSS 组合,我需要让它正常工作。
使用 this setup(HTML + post 底部的 CSS),每个 item-container
上的 width: 25%;
将被忽略。
如果我在 .item
中添加一个 fixed with,则 25% 开始生效,但项目宽度未知 -- 这取决于浏览器的大小。将其设置为 1000px 意味着您会丢失该项目的内容。将它设置为 ~210px 是可行的,但是当你开始缩小你的浏览器时,你会丢失内容。在大型浏览器上,间距过大。
奇怪的是,如果我将 flex-wrap: wrap
添加到 CSS,则会正确应用 25% 的宽度——但我不能那样做,因为那样它就不是轮播了! Example
场景很简单:
div 和 overflow: auto
中的未知数量的项目应显示为等高,并且屏幕上同时显示 children div 中的 4 个。
我的HTML结构如下:
<div id="container">
<div id="wrapper">
<div class="item-container">
<div class="item">
<p>
Carousel Item #1 with some quite long text.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #2.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #3.
</p>
</div>
</div>
...
</div>
</div>
我的CSS:
#container {
width: 100%;
background: #0f0;
overflow: auto;
}
#wrapper {
display: flex;
}
.item-container {
border: 1px solid #f00;
width: 25%;
}
注意,这是我的MCVE。在我的真实组件上,我有左右滚动的按钮,内容明显更复杂,诸如此类。
您只需将 flex: 0 0 auto
添加到 .item-container
个元素即可。
* {
box-sizing: border-box;
}
#container {
width: 100%;
background: #0f0;
overflow: auto;
}
#wrapper {
display: flex;
}
.item-container {
border: 1px solid #f00;
flex: 0 0 auto;
width: 25%;
}
<div id="container">
<div id="wrapper">
<div class="item-container">
<div class="item">
<p>
Carousel Item #1 with some quite long text.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #2.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #3.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #4.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #5.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #6.
</p>
</div>
</div>
<div class="item-container">
<div class="item">
<p>
Carousel Item #7.
</p>
</div>
</div>
</div>
</div>