Как переопределить стили css, когда @extend из другого класса в scss?

У меня есть код scss:

.a {
    height: 100px;
    width: 100px;
}

.b {
    @extend .a;
    height: 200px;
}

Скомпилированный css выглядит так:

.a, .b {
    height: 100px;
    width: 100px;
}

.b {
    height: 200px;
}

когда я применяю этот стиль, dom <div class = "a b"> будет иметь высоту 100px вместо 200px. Как я могу заставить CSS принимать высоту 200 пикселей в этом случае?

Не могли бы вы перефразировать свой вопрос? Похоже, что .b уже перекрывает высоту .a.

Ralph David Abernathy 15.05.2018 08:02
.b уже отменяет height. В чем конкретно заключалась ваша точка зрения?
Abin Thaha 15.05.2018 08:06

Тогда почему бы не изменить прямо в селекторе .a: .b {@extend .a; } и .a {height: 200px;}

Hanif 15.05.2018 08:21

извините за путаницу, я перефразировал свой вопрос

Joey Yi Zhao 15.05.2018 08:25

Затем, какой селектор в большей части ниже будет применять это общее правило для любого файла CSS.

Hanif 15.05.2018 08:27
Приемы 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 сценарий полностью изменился.
4
5
2 624
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Если я правильно понимаю ваш вопрос, его нельзя переопределить, например

.a, .b {
    height: 100px;
    width: 200px;
}

Поскольку он будет применять width: 200px; как к .a, так и к .b, вам нужно применить width: 200px; только к .b, верно? Таким образом, предоставленный вами код уже работает идеально.

Это уже делает именно то, что вы хотите.

У вас может быть .b выше вашего .a, .b, тогда победит последний стиль.

Читайте на каскадный порядок

Finally, sort by order specified: if two declarations have the same weight, origin and specificity, the latter specified wins. Declarations in imported style sheets are considered to be before any declarations in the style sheet itself.

.a, .b {
    height: 100px;
    width: 100px;
}

.b {
    height: 200px;
}

/* ignore */
div{
  background-color: red;
}
body{
  display: inline-flex;
}
<div class = "a"></div>
<span>|</span>
<div class = "b"></div>
<span>|</span>
<div class = "a b"></div>
Ответ принят как подходящий

Затем, какой селектор в большей части ниже будет применять это общее правило для любого файла CSS.

Высота будет <div class = "a b"> 200 пикселей;

.a {
    height: 100px;
    width: 100px;
    }   
.b {
    @extend .a;
    height: 200px;
}

Высота будет <div class = "a b"> 100 пикселей;

.b {
    @extend .a;
    height: 200px;
}
.a {
    height: 100px;
    width: 100px;
}

Всегда высота будет <div class = "a b"> 200px, доза заказа не имеет значения;

.a {
    height: 100px;
    width: 100px;
    &.b {
       height: 200px;
    }
}

вы можете использовать обертку

.a {
    height: 100px;
    width: 100px;
}

.b {
    @extend .a;
}

.wrapper .b {
    height: 200px;
}

HTML

<div class='wrapper'><div class='b'> XXX </div></div>

Вы также можете использовать !important.

.a {
    height: 100px;
    width: 100px;
}

.b {
    @extend .a;
    height: 200px !important;
}

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