Правило № 1: CSS-файлы обрабатываются сверху вниз
Именно поэтому он называется «Каскадная таблица стилей».Каскадирование сверху вниз - это естественный порядок.Поскольку вы включаете файлы bootstrap , за которыми следуют ваши пользовательские файлы, ваши пользовательские стили победят.
Например:
// Bootstrap declaration
.pt-0 {
padding-top: 0 !important;
}
// Your custom styles
.pt-10 {
padding-top: 10rem !important;
}
Они оба применяются к свойству padding-top
и они оба имеют !important
.Таким образом, более поздние загруженные стили выиграют!
Просто хочу уточнить: следующее работает только по той же причине: .pt-lg-0
определяется позже в файле, чем .pt-5
.
<div class="pt-5 pt-lg-0">...</div>
.pt-5
определяется в строке 8185, а .pt-lg-0
определяется в строке 9157 в файле bootstrap.css.
Правило № 2: селектор свыигрывает более высокая специфичность
Если к одному и тому же свойству элемента применяется несколько селекторов, выигрывает тот, у которого более высокая специфичность.
Например, если ваш макет выглядит следующим образом:
<div id="test-container" class="container">
<div class="pt-10 pt-lg-0">
...
</div>
</div>
и у вас есть такие стили:
.container#test-container .pt-10 {
padding-top: 0rem !important;
}
.container .pt-10 {
padding-top: 5rem !important;
}
.pt-10 {
padding-top: 10rem !important;
}
Тогда, независимо от порядка загрузки стилей, вершина заполнения будет 0rem, поскольку селектор идентификатора имеет более высокую специфичность.
Правило № 3: медиазапросы не имеют специфичности!
Вы думали, что верхний отступ отступа будет равен 0, потому что вы можете подумать, что bootstrap имеет это padding-top: 0rem !imporant
на большой точке останова?Не будетФактически, правила внутри медиазапросов не имеют приоритета над другими правилами стилей в той же таблице стилей.
Следовательно, ваш .pt-10
имеет приоритет над классом .pt-lg-0
все время, из-за Правило № 1 .
Решение
Чтобы получить то, что вы хотите, просто удалите !important
из своего пользовательского класса:
.pt-10 {
padding-top: 10rem;
}
Это будет работать, потому что:
- Ваш стиль загружается после bootstrap , и для этого же элемента не определено
padding-top
, поэтому заполнение 10remtop будет применяться! - На большой точке останова, поскольку
.pt-lg-0
из bootstrap имеет !important
, что имеет более высокий приоритет и, следовательно, будет переопределять ваш стиль топа заполнения 10rem!Если вы добавите !important
в свой стиль заполнения 10rem, они будут иметь ту же специфичность.Следовательно, кто бы ни определил позже, побеждает.
демо: https://jsfiddle.net/davidliang2008/9sqn4xch/16/