Twitter bootstrap 如何使用CDN在bootstrap 4中创建新断点?

Twitter bootstrap 如何使用CDN在bootstrap 4中创建新断点?,twitter-bootstrap,sass,media-queries,frontend,bootstrap-4,Twitter Bootstrap,Sass,Media Queries,Frontend,Bootstrap 4,我使用BootstrapCDN。其他风格用sass书写,由gulp构建。我需要创建自己的breakpionts。如果我使用CDN,是否可以制作它们?我不知道怎么做。我必须创建以下断点: --breakpoint-xxxs: 0; --breakpoint-xxs: 320px; --breakpoint-xs: 568px; --breakpoint-sm: 667px; --breakpoint-md: 768px; --breakpoint-lg: 992px; --breakpoint-x

我使用BootstrapCDN。其他风格用sass书写,由gulp构建。我需要创建自己的breakpionts。如果我使用CDN,是否可以制作它们?我不知道怎么做。我必须创建以下断点:

--breakpoint-xxxs: 0;
--breakpoint-xxs: 320px;
--breakpoint-xs: 568px;
--breakpoint-sm: 667px;
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
--breakpoint-xxl: 1440px;
--breakpoint-xxxl: 1600px;
我想得到这样的东西:


文本

根据Github的说法,您似乎在这里遇到了一个“bug”。请看这里:

也就是说,您必须像这样在一行中编写变量定义

$grid-breakpoints: (xxxs: 0, xxs: 320px, xs: 568px, sm: 667px, md: 768px, lg: 992px, xl: 1200px, xxl: 1440px, xxxl: 1600px) !default

我很惊讶没有开发人员能够回答我的问题!就连一天也没人敢想

事实上,一切都很简单

是的,使用CDN我们得到编译的
css
文件。引导中的样式是使用sass编写的。此外,这些风格是分开书写和模块化的。因此,这意味着我不需要将整个引导加载到服务器。我想要交付引导编译CSS的缓存版本,我只需要添加断点。幸运的是,有一个特定的引导文件负责网格。它是引导网格。scss:

/*!
 * Bootstrap Grid v4.0.0 (https://getbootstrap.com)
 * Copyright 2011-2018 The Bootstrap Authors
 * Copyright 2011-2018 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */

@at-root {
  @-ms-viewport { width: device-width; } // stylelint-disable-line at-rule-no-vendor-prefix
}

html {
  box-sizing: border-box;
  -ms-overflow-style: scrollbar;
}

*,
*::before,
*::after {
  box-sizing: inherit;
}

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

@import "mixins/breakpoints";
@import "mixins/grid-framework";
@import "mixins/grid";

@import "grid";
@import "utilities/display";
@import "utilities/flex";

现在我只需要按顺序添加上面添加断点的文件中的代码。不需要添加非网格代码。例如,负责颜色的代码

不能完全从CDN完成。要使用SASS正确自定义/覆盖,您需要在
custom.scss
中@import必要的引导scss文件。要覆盖网格断点,至少需要
函数
变量
。然后根据需要设置变量,最后@import bootstrap。请注意默认值是如何设置的!已作为正确的自定义方法删除

/* import what we need to override */
@import "bootstrap/functions";
@import "bootstrap/variables";

/* set the overriding variables */
$grid-breakpoints: (
  xxxs: 0,
  xxs: 320px,
  xs: 568px,
  sm: 667px,
  md: 768px,
  lg: 992px,
  xl: 1200px,
  xxl: 1440px,
  xxxl: 1600px
);
$container-max-widths: (
  xxxs: 0,
  xxs: 320px,
  xs: 568px,
  sm: 667px,
  md: 768px,
  lg: 992px,
  xl: 1200px,
  xxl: 1440px,
  xxxl: 1600px
);

/* override the !default vars with the values we set above */
@import "bootstrap";
通过这种方法,我们添加了新的网格断点,并确保这些新断点在引导中的任何地方都能工作,包括网格、用于间距、显示、flexbox、对齐、定位等的响应实用程序

另请参见:


如果您只需要调整CDN引导的某些部分,而不想重新编译,则只能添加相关的媒体边界。如果添加的断点高于-xl-(加载bootstrap.css后加载.css更新)或低于xs(加载bootstrap前加载.css更新),则更容易。在中间插入断点有点复杂。p> 查看我在哪里为840-992px添加了-xxl-,从1550px开始添加-mde-,通过复制所需的引导媒体css,纯粹在.css中添加

@media (min-width: 840px) and (max-width: 992px) {
 ...
 .col-mde-1 {
 -ms-flex: 0 0 8.333333%;
 flex: 0 0 8.333333%;
 max-width: 8.333333%;
 }
 .col-mde-2 {
   -ms-flex: 0 0 16.666667%;
   flex: 0 0 16.666667%;
   max-width: 16.666667%;
 }
 ...
 .col-mde-12 {
  -ms-flex: 0 0 100%;
  flex: 0 0 100%;
  max-width: 100%;
 }
}

@media (min-width: 1550px) {
 .col-xxl-1 {
   -ms-flex: 0 0 8.333333%;
   flex: 0 0 8.333333%;
   max-width: 8.333333%;
 }
...
}

由于对插入的元素使用最小宽度和最大宽度,我需要为-lg-(最小宽度:992px)指定正式的引导维度,以确保设计不会在该断点后中断。

正如我们现在所做的那样-使用CDN我们得到编译的
.css

面对同样的问题,做了一些CSS扩展

对于在原始引导4 CDN
.css
文件之后加载的.css样式表中的每个附加断点(以覆盖容器最大宽度),在下面添加一个代码:

/* BS4 Grid XXL breakpoint */

/* adding col-xxl */
.col-xxl, .col-xxl-1, .col-xxl-2, .col-xxl-3, .col-xxl-4, .col-xxl-5, .col-xxl-6, .col-xxl-7, .col-xxl-8, .col-xxl-9, .col-xxl-10, .col-xxl-11, .col-xxl-12, .col-xxl-auto {position: relative; width: 100%; padding-right: 15px; padding-left: 15px;}

@media (min-width: 1570px){
  /* expanding BS4 max-width */
  .container {max-width: 1540px;}

  /* grid columns xxl */
  .col-xxl {-ms-flex-preferred-size: 0; flex-basis: 0; -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; max-width: 100%;}
  .col-xxl-auto {-webkit-box-flex: 0; -ms-flex: 0 0 auto; flex: 0 0 auto; width: auto; max-width: none;}  
  .col-xxl-1 {-webkit-box-flex: 0; -ms-flex: 0 0 8.333333%; flex: 0 0 8.333333%; max-width: 8.333333%;}
  .col-xxl-2 {-webkit-box-flex: 0; -ms-flex: 0 0 16.666667%; flex: 0 0 16.666667%; max-width: 16.666667%;}
  .col-xxl-3 {-webkit-box-flex: 0; -ms-flex: 0 0 25%; flex: 0 0 25%; max-width: 25%;}
  .col-xxl-4 {-webkit-box-flex: 0; -ms-flex: 0 0 33.333333%; flex: 0 0 33.333333%; max-width: 33.333333%;}
  .col-xxl-5 {-webkit-box-flex: 0; -ms-flex: 0 0 41.666667%; flex: 0 0 41.666667%; max-width: 41.666667%;}
  .col-xxl-6 {-webkit-box-flex: 0; -ms-flex: 0 0 50%; flex: 0 0 50%; max-width: 50%;}
  .col-xxl-7 {-webkit-box-flex: 0; -ms-flex: 0 0 58.333333%; flex: 0 0 58.333333%; max-width: 58.333333%;}
  .col-xxl-8 {-webkit-box-flex: 0; -ms-flex: 0 0 66.666667%; flex: 0 0 66.666667%; max-width: 66.666667%;}
  .col-xxl-9 {-webkit-box-flex: 0; -ms-flex: 0 0 75%; flex: 0 0 75%; max-width: 75%;}
  .col-xxl-10 {-webkit-box-flex: 0; -ms-flex: 0 0 16.666667%; flex: 0 0 16.666667%; max-width: 16.666667%;}
  .col-xxl-11 {-webkit-box-flex: 0; -ms-flex: 0 0 16.666667%; flex: 0 0 16.666667%; max-width: 16.666667%;}
  .col-xxl-12 {-webkit-box-flex: 0; -ms-flex: 0 0 16.666667%; flex: 0 0 16.666667%; max-width: 16.666667%;}

  /* order xxl */
  .order-xxl-0 {-webkit-box-ordinal-group: 1; -ms-flex-order: 0; order: 0;}
  .order-xxl-1 {-webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1;}
  .order-xxl-2 {-webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2;}
  .order-xxl-3 {-webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3;}
  .order-xxl-4 {-webkit-box-ordinal-group: 5; -ms-flex-order: 4; order: 4;}
  .order-xxl-5 {-webkit-box-ordinal-group: 6; -ms-flex-order: 5; order: 5;}
  .order-xxl-6 {-webkit-box-ordinal-group: 7; -ms-flex-order: 6; order: 6;}
  .order-xxl-7 {-webkit-box-ordinal-group: 8; -ms-flex-order: 7; order: 7;}
  .order-xxl-8 {-webkit-box-ordinal-group: 9; -ms-flex-order: 8; order: 8;}
  .order-xxl-9 {-webkit-box-ordinal-group: 10; -ms-flex-order: 9; order: 9;}
  .order-xxl-10 {-webkit-box-ordinal-group: 11; -ms-flex-order: 10; order: 10;}
  .order-xxl-11 {-webkit-box-ordinal-group: 12; -ms-flex-order: 11; order: 11;}
  .order-xxl-12 {-webkit-box-ordinal-group: 13; -ms-flex-order: 12; order: 12;}

  /* text-align xxl */
  .text-xxl-center {text-align: center!important;}
  .text-xxl-left {text-align: left!important;}
  .text-xxl-right {text-align: right!important;}  

  /* float xxl */
  .float-xxl-left {float: left!important;}
  .float-xxl-right {float: right!important;}
  .float-xxl-none {float: none!important;}

  /* display xxl */
  .d-xxl-none {display: none!important;}
  .d-xxl-inline {display: inline!important;}
  .d-xxl-inline-block {display: inline-block!important;}
  .d-xxl-block {display: block!important;}
  .d-xxl-table {display: table!important;}
  .d-xxl-table-cell {display: table-cell!important;}
  .d-xxl-table-row {display: table-row!important;}
  .d-xxl-flex {display: flex!important;}
  .d-xxl-inline-flex {display: inline-flex!important;}

  /* offsets xxl */
  .offset-xxl-1 {margin-left: 8.333333%;}
  .offset-xxl-2 {margin-left: 16.666667%;}
  .offset-xxl-3 {margin-left: 25%;}
  .offset-xxl-4 {margin-left: 33.333333%;}
  .offset-xxl-5 {margin-left: 41.666667%;}
  .offset-xxl-6 {margin-left: 50%;}
  .offset-xxl-7 {margin-left: 58.333333%;}
  .offset-xxl-8 {margin-left: 66.666667%;}
  .offset-xxl-9 {margin-left: 75%;}
  .offset-xxl-10 {margin-left: 83.333333%;}
  .offset-xxl-11 {margin-left: 91.666667%;}

  /* spacing xxl */
  .m-xxl-0{margin:0!important}.mt-xxl-0,.my-xxl-0{margin-top:0!important}.mr-xxl-0,.mx-xxl-0{margin-right:0!important}.mb-xxl-0,.my-xxl-0{margin-bottom:0!important}.ml-xxl-0,.mx-xxl-0{margin-left:0!important}.m-xxl-1{margin:.25rem!important}.mt-xxl-1,.my-xxl-1{margin-top:.25rem!important}.mr-xxl-1,.mx-xxl-1{margin-right:.25rem!important}.mb-xxl-1,.my-xxl-1{margin-bottom:.25rem!important}.ml-xxl-1,.mx-xxl-1{margin-left:.25rem!important}.m-xxl-2{margin:.5rem!important}.mt-xxl-2,.my-xxl-2{margin-top:.5rem!important}.mr-xxl-2,.mx-xxl-2{margin-right:.5rem!important}.mb-xxl-2,.my-xxl-2{margin-bottom:.5rem!important}.ml-xxl-2,.mx-xxl-2{margin-left:.5rem!important}.m-xxl-3{margin:1rem!important}.mt-xxl-3,.my-xxl-3{margin-top:1rem!important}.mr-xxl-3,.mx-xxl-3{margin-right:1rem!important}.mb-xxl-3,.my-xxl-3{margin-bottom:1rem!important}.ml-xxl-3,.mx-xxl-3{margin-left:1rem!important}.m-xxl-4{margin:1.5rem!important}.mt-xxl-4,.my-xxl-4{margin-top:1.5rem!important}.mr-xxl-4,.mx-xxl-4{margin-right:1.5rem!important}.mb-xxl-4,.my-xxl-4{margin-bottom:1.5rem!important}.ml-xxl-4,.mx-xxl-4{margin-left:1.5rem!important}.m-xxl-5{margin:3rem!important}.mt-xxl-5,.my-xxl-5{margin-top:3rem!important}.mr-xxl-5,.mx-xxl-5{margin-right:3rem!important}.mb-xxl-5,.my-xxl-5{margin-bottom:3rem!important}.ml-xxl-5,.mx-xxl-5{margin-left:3rem!important}
  .p-xxl-0{padding:0!important}.pt-xxl-0,.py-xxl-0{padding-top:0!important}.pr-xxl-0,.px-xxl-0{padding-right:0!important}.pb-xxl-0,.py-xxl-0{padding-bottom:0!important}.pl-xxl-0,.px-xxl-0{padding-left:0!important}.p-xxl-1{padding:.25rem!important}.pt-xxl-1,.py-xxl-1{padding-top:.25rem!important}.pr-xxl-1,.px-xxl-1{padding-right:.25rem!important}.pb-xxl-1,.py-xxl-1{padding-bottom:.25rem!important}.pl-xxl-1,.px-xxl-1{padding-left:.25rem!important}.p-xxl-2{padding:.5rem!important}.pt-xxl-2,.py-xxl-2{padding-top:.5rem!important}.pr-xxl-2,.px-xxl-2{padding-right:.5rem!important}.pb-xxl-2,.py-xxl-2{padding-bottom:.5rem!important}.pl-xxl-2,.px-xxl-2{padding-left:.5rem!important}.p-xxl-3{padding:1rem!important}.pt-xxl-3,.py-xxl-3{padding-top:1rem!important}.pr-xxl-3,.px-xxl-3{padding-right:1rem!important}.pb-xxl-3,.py-xxl-3{padding-bottom:1rem!important}.pl-xxl-3,.px-xxl-3{padding-left:1rem!important}.p-xxl-4{padding:1.5rem!important}.pt-xxl-4,.py-xxl-4{padding-top:1.5rem!important}.pr-xxl-4,.px-xxl-4{padding-right:1.5rem!important}.pb-xxl-4,.py-xxl-4{padding-bottom:1.5rem!important}.pl-xxl-4,.px-xxl-4{padding-left:1.5rem!important}.p-xxl-5{padding:3rem!important}.pt-xxl-5,.py-xxl-5{padding-top:3rem!important}.pr-xxl-5,.px-xxl-5{padding-right:3rem!important}.pb-xxl-5,.py-xxl-5{padding-bottom:3rem!important}.pl-xxl-5,.px-xxl-5{padding-left:3rem!important}
  .m-xxl-auto{margin:auto!important}.mt-xxl-auto,.my-xxl-auto{margin-top:auto!important}.mr-xxl-auto,.mx-xxl-auto{margin-right:auto!important}.mb-xxl-auto,.my-xxl-auto{margin-bottom:auto!important}.ml-xxl-auto,.mx-xxl-auto{margin-left:auto!important}

}

现在您将获得完全支持的XXL断点。我知道这不是最清晰的解决方案,因为我们只是覆盖Sass编译代码。如果你有能力使用Sass-do-it,这种方法更正确。但是使用CDN,就像quic修复一样,可以使用我的解决方案

谢谢大家!!它正在修复这个bug,但并没有解决我的问题您对此进行了研究,尽管我认为您的问题是从CDN中直接提出的,而不是使用SASS。这是一个使用SASS(不完全来自CDN)的解决方案。这不是自定义引导的正确方法,因为它正在更改默认断点值。正确的方法是@import bootstrap,然后在您自己的custom.scs中重写变量/maps,您会发现最小的断点不起作用,并且当以这种方式进行自定义时,任何支持的网格实用程序类(display、spacing、flexbox等)都不起作用。@ZimSystem,在本文的开头,我写了我用的sass@ZimSystem,关于.xxxs类,您是对的。因为在myxin中,最小的大小会删除前缀。我修正了它,用html代替col-xxxs-1,我写了col-1。谢谢你的回答!但我无法在作业中加载整个引导程序。必须通过CDN下载。“顾客永远是对的”。虽然这对其他人可能有用您必须在0处启动网格断点,但我建议删除
xxxs
的容器最大宽度,否则它会不必要地破坏0和319px之间的布局。重要的是要知道,使用此方法可以免除链接到原始bootstrap.css的需要。基本上是@import“引导”;拉入原始bootstrap.css并将其附加到css文件中执行import.thx的任何自定义代码之前。col-xxl-10、11、12处有一个小错误,它缺少一些容器内容:.container xxl{width:100%;padding right:15px;padding left:15px;margin right:auto;margin left:auto;}@media(最小宽度:1570px){.container、.container sm、.container md、.container lg、.container xl、.container xxl{最大宽度:1540px;}