Большинство элементов (таких как <h1>
и <p>
) имеют встроенные вертикальные поля по умолчанию.Это «общепринятые» рекомендации, и вам не нужно явно нуждаться в , чтобы перезаписать их.Однако вы можете , и если вы хотите установить свои собственные «общие» поля, которые можно использовать где угодно, лучшим подходом будет использование классов.Например:
.margin-top {
margin-top: 15px;
}
Любой элемент с этим классом (например, <h1 class="margin-top">
) будет перезаписывать это правило по умолчанию.Естественно, вы могли бы применить правило непосредственно к h1
,
Да, вы столкнетесь с ситуациями, когда верхний и нижний поля расположены рядом друг с другом, но вам нужно будет поработать, когда это произойдет.поведения приемлемо, а когда нет.Один из способов избежать этого - использовать смежные братские комбинаторы :
h1 + p {
margin-bottom: 0;
}
Поскольку вышеприведенное правило обладает большей специфичностью , чем универсальный селектор h1
,это будет иметь приоритет.
Да, будет сложно определить все возможные комбинации, с которыми вы можете столкнуться, и вам придется писать правила для каждого сценария.Но вы можете использовать описанный выше класс-ориентированный подход в сочетании с соседними одноуровневыми комбинаторами, чтобы значительно помочь устранить эту проблему:
.margin-top {
margin-top: 15px;
}
.margin-bottom + .margin-top {
margin-top: 0;
}
Это полностью предотвратит любой элемент с классом margin-top
от применения его поля только , если он следует классу с установленным margin-bottom
.
Обратите внимание, что уже существует много других подходов, и один такой подход делаетиспользовать аналогию Lego, чтобы предложить просто использовать padding
на каждом элементе, равном половине желоба:
$gutter: 20px;
.element {
padding: $gutter / 2;
}
, что иллюстрируется в полном примере кода для проверки концепции здесь .