Bootstrap 5网格,如何在不同的断点处自定义网格排水沟(不使用实用程序类)?

Posted

技术标签:

【中文标题】Bootstrap 5网格,如何在不同的断点处自定义网格排水沟(不使用实用程序类)?【英文标题】:Bootstrap 5 grid, how to customize the grid gutters at different breakpoints (not using utility classes)? 【发布时间】:2021-09-29 02:27:20 【问题描述】:

如何自定义 Bootstrap 5 以在不同的断点处设置不同的网格间距?我不想使用网格间距实用程序类,因为它们会在标记中到处都是硬编码并且很难更改。

看起来 Bootstrap 5 有这个变量作为默认的装订线宽度:

$grid-gutter-width: 1.5rem;

我想要的是这样的(这些值只是为了说明这个想法):

$grid-gutter-width-sm: 1rem;
$grid-gutter-width-md: 1.5rem;
$grid-gutter-width-lg: 2rem;
$grid-gutter-width-xl: 2.5rem;

【问题讨论】:

根据官方文档,排水沟类确实有响应断点,所以你应该能够使用,比如说g-0 g-lg-2,直到中等,然后 g-2 (0.75rem) 从大。 我认为这些装订线类是“网格间距实用程序类”的一部分,他们希望全局更改每个断点的装订线宽度。 【参考方案1】:

这很棘手,因为排水沟用于构建所有 container*rowcol*。您可以使用每个断点的装订线宽度制作自定义地图,然后迭代地图以在每个断点处重新构建网格:

@import "functions";
@import "variables";
@import "mixins";

$custom-gutter-widths: (
  sm: 1rem,
  md: 1.5rem,
  lg: 2rem,
  xl: 2.5rem,
  xxl: 3rem,
);

@import "bootstrap";

@each $breakpoint, $gutterwidth in $custom-gutter-widths 
    $container-padding-x: $gutterwidth*.5;
    $grid-gutter-width: $gutterwidth;
    @include media-breakpoint-up($breakpoint, $grid-breakpoints) 
        .container,
        .container-fluid 
            @include make-container();
        
        
        .row 
            @include make-row();
            
            > * 
              @include make-col-ready();
            
        
        @include make-grid-columns();
        
    

Bootstrap SASS on Codeply

注意:这会产生大量额外的 CSS!

【讨论】:

以上是关于Bootstrap 5网格,如何在不同的断点处自定义网格排水沟(不使用实用程序类)?的主要内容,如果未能解决你的问题,请参考以下文章

Twitter 的 Bootstrap 3 网格,更改断点和删除填充

scss 修复Bootstrap 4的网格系统没有实际的大屏幕尺寸断点

如何创建响应式(可变列数)Angular-Material 卡片网格

如何在 Bootstrap 4 中添加新的大断点(仅限 CSS)

Bootstrap 5 如何在行上设置断点

网格选项