Удаление радиуса границы из хлебных крошек Bootstrap 4 — Sass

В Bootstrap 4 есть переменная Sass под названием $enable-rounded, которая

"Enables predefined border-radius styles on various components."

(https://getbootstrap.com/docs/4.1/getting-started/theming/#sass-options)

У меня есть требование удалить закругленные углы на Компонент хлебной крошки, но я не хочу удалять их с каких-либо других компонентов. Поэтому я не могу использовать $enable-rounded, чтобы делать то, что мне нужно.

Однако я не знаю, какой оптимальный способ сделать это.

Sass для _breadcrumb.scss содержит это:

.breadcrumb {
    display: flex;
    flex-wrap: wrap;
    padding: $breadcrumb-padding-y $breadcrumb-padding-x;
    margin-bottom: $breadcrumb-margin-bottom;
    list-style: none;
    background-color: $breadcrumb-bg;

    @include border-radius($border-radius);
}

Как переопределить @include border-radius($border-radius); без изменения _breadcrumb.scss?

Весь CSS для моего приложения сжат в 1 файл (app.css), который создан из файла Sass (app.scss), который сначала включает соответствующие файлы Bootstrap 4 Sass. Итак, я мог бы сделать что-то вроде этого:

// app.scss
@import breadcrumb;
@import // other_bootstrap_sass_files


// CSS specific to my app
.breadcrumb {
    border-radius: 0;
}

Это кажется слишком похожим на Bootstrap 3, где вам приходилось переопределять то, что вам не нужно.

Есть ли более разумный способ сделать это с помощью Sass для Bootstrap 4?

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
0
852
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я думаю, что для вашего конкретного случая, когда вам нужны только панировочные сухари без радиуса границы, а все остальные компоненты все еще имеют его, ваше единственное решение - это то, что вы упомянули в своем вопросе:

.breadcrumb { border-radius: 0; }

This seems a bit too similar to Bootstrap 3 where you had to override what you didn't want.

Лично я другого решения не вижу, только потому что не хочется редактировать оригинал _breadcrumb.scss

Спасибо. Я не хочу редактировать _breadcrumb.scss, потому что, если я обновлю Bootstrap, мои изменения будут перезаписаны. Вот собственно к чему вопрос.

Andy 07.06.2019 11:50

Если вы посмотрите на файл _variables.scss, вы увидите все переменные, установленные с помощью !default — думайте об этом как о файле настроек. Когда SCSS компилируется, ваши новые значения заменяются значениями по умолчанию без необходимости перезаписывать CSS.

Похоже, $breadcrumb-border-radius: $border-radius !default; это то, что вы хотите.

Два способа сброса этого значения:

1) Сделать копию файла _variables.scss и поместите его в каталог вашего проекта (мне нравится изменить имя, скажем, на _myvariables.scss ), найдите эту переменную, удалите !default и измените ее на $breadcrumb-border-radius: 0;ИЛИ 2) Создайте файл, скажем, _myvariables.scss, который содержит $breadcrumb-border-radius: 0; (и любые другие значения по умолчанию, которые вы хотите изменить позже).

Затем импортируйте этот новый файл ДО в ваш bootstrap scss. В вашем примере это будет ваш файл app.scss:

// app.scss
@import myvariables.scss;  //no underscore because it's a partial
@import // other_bootstrap_sass_files including the breadcrumb component

Теперь, когда SCSS скомпилирован, радиус хлебных крошек будет установлен на 0 без каких-либо изменений или перезаписи css.

Другие вопросы по теме