当前位置: 首页 > 面试题库 >

如何使用Flexbox中的媒体查询控制每行的项目数?

夹谷晋
2023-03-14
问题内容

因此,假设我有以下 标记

<div class="container">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
</div>

和以下 样式 (SASS)

@mixin max-width($width) {
    @media screen and (max-width: $width) {
        @content;
    }
}

.container {
    display: flex;

    @include max-width(992px) {
        number: 4; //Hypothetical property that is supposed to control number per row
    }

    @include max-width(640px) {
        number: 2; //Hypothetical property that is supposed to control number per row
    }
}
.item {
    background-color: tomato;
    padding: 20px;
    margin-right: 20px;
    flex: 1;
}

是否有真正的Flexbox CSS替代我的假设number属性,可以控制每行显示多少项?

浮动式格栅是方便,因为你可以无限适合.items每一个.rowwidth。但是使用flexbox时,我必须使用许多.row类的变通方法来控制不同宽度的项目的布局和数量。到目前为止,我很幸运,但是某些类型的布局将因这种方法而失败。


问题答案:

我必须摆脱块周围的空白,因为很难将百分比宽度清楚地应用于具有空白的元素,但是您可以看到更改:

@mixin max-width($width) {
    @media screen and (max-width: $width) {
        @content;
    }
}

.container {
    position: relative;
    display: flex;
    flex-flow: row wrap;
}
.item {
    background-color: tomato;
    box-sizing: border-box;
    padding: 20px;
    outline: 2px solid blue;
    flex: 1;
}

@include max-width(992px) {
    .item {
        flex-basis: 25%;
        background-color: red;
    }
}

@include max-width(640px) {
    .item {
        flex-basis: 50%;
        background-color: green;
    }
}

这里的重要部分是:

  • flex-flow: row wrap它允许flexbox出现在多行中(默认为nowrap

  • flex-basis``width在这种情况下等于

  • position: relative 这使得宽度相对于容器而不是主体(这会弄乱舍入)



 类似资料:
  • 问题内容: 我非常热衷于在CSS中使用媒体查询,但是我对如何使用它感到困惑。我有立场 我的查询要求是 如果屏幕宽度是100到480,那么会出现不同的样式, 如果屏幕宽度从481到600,那么会出现不同的样式, 如果屏幕宽度为601到800,那么会出现不同的样式, 如果屏幕宽度为801,则默认CSS应该有效。 问题答案:

  • 问题内容: 我正在使用一个伸缩框来显示8个项目,这些项目将随我的页面动态调整大小。如何强制将项目分成两行?(每行4个)? 这是一个相关的片段: 问题答案: 您已经在容器上了。很好,因为它会覆盖默认值source。这是在某些情况下项目无法包装形成网格的原因。 在这种情况下,主要问题在于伸缩项目。 该属性实际上并没有设置弹性项目的大小。它的任务是在容器源中分配可用空间。因此,无论屏幕尺寸有多小,每一项

  • 我正在使用一个flex框显示8个项目,这些项目将动态调整我的页面大小。如何强制它将项目拆分为两行?(每行4个)? 以下是相关片段: (或者如果您更喜欢jsfiddle-http://jsfidle.net/vivmaha/oq6prk1p/2/) null null

  • 想象一下我有后续标记 和样式 由于某些原因,我无法更改的宽度,我是否可以通过对父容器进行样式化、使用flexbox或任何其他方式在每行中排列两个项目?

  • 问题内容: 我正在使用Bootstrap 3构建响应式布局,在该布局中我想根据屏幕尺寸调整一些字体大小。我如何使用媒体查询来进行这种逻辑? 问题答案: 如果要保持一致,以下是BS3中使用的选择器: 注意:仅供参考,这可能对调试有用: 引导程序4 这是BS4中使用的选择器。 BS4中没有“最低”设置,因为“超小”是默认设置。 也就是说,您首先要编码XS大小,然后再覆盖这些媒体。 更新2019-02-

  • 问题内容: 我现在有这个: 我想做的是在flexbox中每行有5个项目。目前,它们没有显示是因为它们没有设置宽度/高度,这使我想到了下一个问题。是否可以自动调整项目的大小,以便每行容纳5个项目? 我该怎么做? 谢谢! 问题答案: 您给出的a是正确的,但是您必须调整每个 flex项目 上的4px边距以使其正确 包装 。 最后一行的等宽Flex项目 用途-这表示商品的宽度不会超过宽度的20%(调整边距