Добавление контрольной точки в бутстрап 4 [дубликат]

В C ++ объект всегда имеет фиксированный тип и размер, известные во время компиляции, и (если он может и имеет свой адрес) всегда существует по фиксированному адресу в течение всего срока его службы. Это функции, унаследованные от C, которые помогают сделать оба языка подходящими для программирования на низком уровне. (Все это подчиняется правилу as-if, хотя: соответствующий компилятор может делать все, что угодно, с кодом, если это может быть доказано, что он не обнаруживает никакого влияния на какое-либо поведение соответствующей программы, которая гарантирована по стандарту.)

Функция virtual в C ++ определена (более или менее, без необходимости использования экстремальной языковой адвокации) как выполняемая на основе типа времени выполнения объекта; при вызове непосредственно на объект это всегда будет тип времени компиляции объекта, поэтому нет полиморфизма, когда функция virtual вызывается таким образом.

Обратите внимание, что это необязательно в том числе: типы объектов с функциями virtual обычно реализуются в C ++ с указателем на объект для таблицы функций virtual, которая уникальна для каждого типа. Если это так, компилятор для некоторого гипотетического варианта C ++ может реализовать назначение объектов (например, Base b; b = Derived()) как копирование как содержимого объекта, так и указателя таблицы virtual вместе с ним, что легко сработает, если оба Base и Derived были одинакового размера. В случае, если два не были одинакового размера, компилятор мог даже вставить код, который приостанавливает программу на какое-то время, чтобы переупорядочить память в программе и обновить все возможные ссылки на эту память таким образом, чтобы это могло быть доказал, что не имеет заметного влияния на семантику программы, заканчивая программу, если такая перестановка не может быть найдена: это было бы очень неэффективно, хотя и не могло быть гарантировано когда-либо остановить, очевидно, нежелательные функции для оператора присваивания имеют.

Таким образом, вместо вышеописанного полиморфизм в C ++ выполняется, позволяя ссылаться на ссылки и указатели на объекты и указывать на объекты их объявленных типов времени компиляции и любые их подтипы. Когда функция virtual вызывается посредством ссылки или указателя, и компилятор не может доказать, что объект, на который ссылается или указал, имеет тип времени выполнения с определенной известной реализацией этой функции virtual, компилятор вставляет код, который ищет правильную функцию virtual для вызова времени выполнения. Это не должно было быть так: ссылки и указатели могли быть определены как неполиморфные (запрещающие их ссылаться или указывать на подтипы их объявленных типов) и заставляя программиста придумать альтернативные способы реализации полиморфизма , Последнее очевидно, так как оно все время выполняется в C, но в этот момент нет оснований для того, чтобы иметь новый язык вообще.

В сумме семантика C ++ разработана таким образом чтобы позволить абстракцию высокого уровня и инкапсуляцию объектно-ориентированного полиморфизма, сохраняя при этом все возможности (такие как низкоуровневый доступ и явное управление памятью), которые позволяют ему быть подходящим для разработки на низком уровне. Вы могли бы легко создать язык, который имел бы какую-то другую семантику, но это был бы не C ++ и имел бы разные преимущества и недостатки.

4
задан kizoso 22 February 2018 в 13:32
поделиться

3 ответа

Я очень удивлен, что не было разработчика, способного ответить на мой вопрос! githab никто не осмелился об этом думать!

На самом деле все оказалось очень простым!

Да, используя CDN, мы получить скомпилированный файл css. Стили в бутстрапе написаны с использованием sass. Кроме того, стили написаны разделяющими и модульными. Это значит, что мне не нужно загружать всю загрузочную ленту на мой сервер. Я хочу доставить кешированную версию скомпилированного CSS-кода Bootstrap, и мне нужно только добавить мои точки останова. К счастью, есть определенный файл начальной загрузки, который отвечает за Grid. Это bootstrap-grid.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";

Теперь мне просто нужно последовательно добавить код из файлов выше, добавляя мои точки останова. Добавить не-Grid-код не требуется. Например, код, отвечающий за цвет. Вот мой mcve на codepen .

1
ответ дан kizoso 17 August 2018 в 12:02
поделиться
  • 1
    Вы проводили исследования по этому поводу, хотя я думал, что ваш вопрос буквально звучит из CDN, а не SASS. Это решение, использующее SASS (не полностью из CDN). Это неправильный способ настройки Bootstrap, поскольку он изменяет значения точки останова по умолчанию. Правильный метод заключается в @import bootstrap, а затем переопределяет переменные / карты в вашем собственном custom.scss, который уже объяснен в этом ответе – Themes.guide 25 February 2018 в 17:07
  • 2
    Вы найдете, что самая маленькая точка останова не работает, и ни один из вспомогательных классов грида (отображение, интервал, flexbox и т. Д.) Не будет работать при настройке этого способа. – Themes.guide 25 February 2018 в 18:09
  • 3
    @ZimSystem, В самом начале статьи я написал, что использую sass – kizoso 26 February 2018 в 04:45
  • 4
    @ZimSystem, вы правы в классе .xxxs. Потому что в myxin наименьший размер удаляет префикс. Я исправил его, html вместо col-xxxs-1, я написал col-1. – kizoso 26 February 2018 в 04:50

По словам Гитхуба, похоже, вы столкнулись с «ошибкой» здесь. См. Здесь: https://github.com/sass/sass/issues/1166

. Говоря, что вам нужно написать определение переменной в одной строке, как это.

$grid-breakpoints: (xxxs: 0, xxs: 320px, xs: 568px, sm: 667px, md: 768px, lg: 992px, xl: 1200px, xxl: 1440px, xxxl: 1600px) !default
1
ответ дан Aer0 17 August 2018 в 12:02
поделиться
  • 1
    Спасибо! это исправление ошибки, но не решает мою проблему – kizoso 22 February 2018 в 11:41

Это невозможно сделать полностью из CDN. Правильно настраивать / переопределять с помощью SASS, вам необходимо @import необходимые файлы scstss Bootstrap в вашем custom.scss. Чтобы переопределить контрольные точки сетки, вам, как минимум, нужны functions и variables. Затем установите переменные по мере необходимости и, наконец, @import bootstrap. Обратите внимание, как по умолчанию! был удален как , объясненный в docs как правильный метод настройки.

/* 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";

С помощью этого метода мы добавили новые контрольные точки сетки и обеспечили работу этих новых точек останова везде в Bootstrap, включая сетку, отзывчивые утилиты для интервала, отображения, flexbox, выравнивания, позиционирования и т. д. ...

https://www.codeply.com / go / BIgmm1XGc2

Также см .: Как продлить / изменить (настроить) Bootstrap 4 с помощью SASS Twitter Bootstrap: добавить медиа-запросы для точки xxs breakpoint

5
ответ дан Themes.guide 17 August 2018 в 12:02
поделиться
  • 1
    Спасибо за ответ! Но я не могу загрузить весь загрузочный лоток на работу. Он обязательно должен быть загружен через CDN. «Клиент всегда прав». Хотя это может быть полезно кому-то другому – kizoso 26 February 2018 в 04:54
Другие вопросы по тегам:

Похожие вопросы: