Bootstrap 4 添加更多尺寸间距

Posted

技术标签:

【中文标题】Bootstrap 4 添加更多尺寸间距【英文标题】:Bootstrap 4 add more sizes spacing 【发布时间】:2018-02-17 13:14:26 【问题描述】:

我正在进行一个网络项目,其中部分之间的空间为 80 像素。 我想在引导间隔中再创建一个选项。

目前我在 sass 代码中:

section 
    padding: 0 80px;

引导垫片的范围从 0.25em 到 3em (.p-5 = 40px)

我想创建一个包含 5em (80px) 的 .p-6

理想的情况是:

<section class="py-5 py-md-6">

我通过 CDN 链接的引导程序。我无法想象如何用变量创建它,以某种方式将它集成到 boostrap css 中。你能给我一些线索吗?

【问题讨论】:

混合引导边距和填充我猜会得到 80px (p-5 m-5)。这会与其他样式的应用(bg,边框,...)兼容吗? 我无法像他们所说的那样应用更改,经过大量头脑风暴后,我看到在我进行更改的文件中,有一个来自引导实用程序的导入。我将此导入移至更改 sn-p 后,它运行良好。我用 Regavan 的 【参考方案1】:

如果您使用的是 scss,则可以在编译引导程序之前简单地向 $spacers 变量添加另一个条目......就像

$spacers: (
  0: 0,
  1: ($spacer * .25),
  2: ($spacer * .5),
  3: $spacer,
  4: ($spacer * 1.5),
  5: ($spacer * 3),
  6: ($spacer * 5)
)

以上取自https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss#L100修改

由于听起来您只使用 CSS,您可以按照他们所做的模式定义自己的,因此在您自己的 CSS 中添加一组类(见下文,取自 https://github.com/twbs/bootstrap/blob/v4-dev/dist/css/bootstrap.css#L6937 并修改):

.pt-6,
.py-6 
  padding-top: 5rem !important;


.pr-6,
.px-6 
  padding-right: 5rem !important;


.pb-6,
.py-6 
  padding-bottom: 5rem !important;


.pl-6,
.px-6 
  padding-left: 5rem !important;

如果你特别想要中等断点,你可以这样做

@media (min-width: 768px) 
    .pt-md-6,
    .py-md-6 
      padding-top: 5rem !important;
    

    .pr-md-6,
    .px-md-6 
      padding-right: 5rem !important;
    

    .pb-md-6,
    .py-md-6 
      padding-bottom: 5rem !important;
    

    .pl-md-6,
    .px-md-6 
      padding-left: 5rem !important;
    

【讨论】:

我正在使用 React-Bootstrap,并将最后一个代码 sn-p 添加到组件 CSS 对我有用。谢谢kball。【参考方案2】:

如果您使用的是 scss,这就是我对间隔的基本扩展(引导程序 4 - 默认字体大小:16px)

     $spacer: 1rem !default;
     $spacers: () !default;
     // stylelint-disable-next-line scss/dollar-variable-default
     $spacers: map-merge(
       (
         0: 0,
         1: ($spacer * .25),    //4px
         2: ($spacer * .5),     //8px
         3: $spacer,            //16px
         4: ($spacer * 1.5),    //24px
         5: ($spacer * 3),      //48px
         6: ($spacer * 4),      //64px
         7: ($spacer * 5),      //80px
         8: ($spacer * 6.25),   //100px
         9: ($spacer * 7.5),    //120px
         10: ($spacer * 9.375)  //150px
       ),
       $spacers
     );

【讨论】:

这段代码只是来自 Bootstrap 的 _variables.scss 的复制粘贴。完全替换$spacers 条目的官方方法是什么?就像当您需要添加一个 .125 乘数作为第一项并转移所有其他项时一样。 嗨,Alexander,这段代码是通过官方方式回答“我想在引导间隔中再创建一个选项”这个问题的一个范围。基本引导上升到 5。同样的逻辑也适用于您的问题。更改所有值并从 .125 开始 1,从 0.25 开始 2 等 好吧 :) 我的意思是,当使用这个 sn-p 时,我们可能不想复制那些 !defaults。 AFAIK,我们应该在将 BS 内容复制粘贴到我们的 SCSS 时删除它们。 您不能简单地将 Bootstrap 变量复制/粘贴到您自己的代码中。这是覆盖 Bootstrap 默认变量值的官方方法:getbootstrap.com/docs/4.4/getting-started/theming/…。在这种情况下,您可以将 $spacers 重新定义为您喜欢的任何间隔尺寸组合。【参考方案3】:

也许这也会有所帮助。假设您使用带有 SCSS 的 Bootstrap 4 及更高版本。然后你可以添加以下内容。默认 1 rem - 16px。

$spacer: 1rem;
$spacers: ( 0:0);
@for $i from 1 through 150 
  $spacers: map-merge($spacers, (
  $i: ($i * $spacer)
  ));

 注意:有趣的是 $i 将循环最多 150 个并创建最多 150 个类。

示例:如果您将mt-10 放在您的任何html 标记中。 &lt;div class="mt-10"&gt; 将立即生效。 mt-10 表示 10 * 16 = 160px :)

【讨论】:

感谢循环。我不想计算我可能需要多少垫片:) 这实际上就是我想要的!谢谢。 喜欢这个答案,虽然我更喜欢从 0.5rem 开始我的 $spacer【参考方案4】:

有一个解决方法。在你的元素中添加另一个 wrapper,并给它更多的填充类。

如果你想要一个 p-6,那么你可以给父容器 p-5 和包装器 p-1。

【讨论】:

是的,类似于
【参考方案5】:

我喜欢这种保留小数分隔符的解决方案,并为每个类名设置一个有意义的数字(数字 = 乘数):

$spacer: 1rem;
$spacers: (
  0: 0,
  '025': (
    $spacer * 0.25,
  ),
  '05': (
    $spacer * 0.5,
  ),
);
@for $i from 1 through 5 
  $spacers: map-merge(
    $spacers,
    (
      $i: (
        $i * $spacer,
      ),
    )
  );

【讨论】:

【参考方案6】:

这个问题困扰了我一个下午,直到我找到了详细的解释。很久以前就提出了问题,但无论如何都在这里:

如果你使用 SCSS,你有你自己的自定义 scss 文件,并且你想添加你提到的选项,就让它看起来像这样:

@import "../bootstrap/scss/functions";
@import "../bootstrap/scss/variables";

$spacers: (
    // The rest of numbers you need to use...
    6: ($spacer * 5)
);

@import "../bootstrap/scss/bootstrap";

该方法是Bootstrap Documentation中解释的方法。我不得不说这对新手来说有点晦涩,但据我了解,它基本上包括导入您要修改的部分,添加您需要的值,最后导入整个内容,以便稍后使用您的添加创建您的 CSS 文件.

当然,您可能必须更改引导文件的路径并将它们本地获取到您的驱动器上。不确定这是否可以从在线存储库导入。另请注意,顺序很重要。 functions.scss 必须在 variables.scss 之前导入,否则会失败。

【讨论】:

这应该是公认的答案,其他人重新创建现有的间隔并添加一些,这个答案只添加了所要求的内容。

以上是关于Bootstrap 4 添加更多尺寸间距的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 4中是不是有间距混合?

键盘尺寸更大

Bootstrap 4 间距实用程序的 antd 等效项是啥?

bootstrap怎么控制组件的间距

Bootstrap 4.5 如何更改容器网格间距宽度

学习 Bootstrap 5 之 Sizing 和 Spacing