CSS для принудительного заполнения поля и отступа до 0 всех делений, кроме тех, которые находятся внутри <header>и <footer> - PullRequest
0 голосов
/ 21 апреля 2020

Я пытался написать спецификацию c CSS, которая заставит все элементы div в документе не иметь полей и отступов.

Есть идеи, как мне этого добиться?

Я пробовал:

body > div:not(header) {
     margin: 0 ;
     padding: 0 ;
}


div:not(header){
     margin:0 !important;
     padding:0 !important;
 }

Эти примеры либо не будут работать, либо все равно также изменят div внутри заголовка и / или нижнего колонтитула

В некотором контексте я создаю собственный шаблон wordpress, который поставляется с плагином, в котором мне нужно, чтобы все элементы не имели полей и отступов, кроме глобальных элементов верхнего и нижнего колонтитула, поскольку я не хочу их менять.

1 Ответ

1 голос
/ 22 апреля 2020

Использование :not() «свободно» в цепочке селекторов редко имеет смысл, соответственно. не приведет к желаемому результату - потому что если разрешен любой произвольный уровень элементов между ними, обычно есть тот, который не соответствует селектору :not(), и поэтому снова делает весь селектор соответствующим.

Это больше полезно в ситуациях, когда вы можете «пригвоздить» его к определенной позиции c - как, например,

body > :not(header) div

Это затронет все div, которые находятся внутри элемента контейнера это само по себе прямое потомство тела, а не типа header.

Но тогда вы не можете go с body > :not(header) div, body > :not(footer) div снова - потому что все div тоже не будут в header, или не в footer (не может быть в обоих одновременно.)

Таким образом, вам придется применять два «ограничения» одновременно:

body > :not(header):not(footer) div

Это влияет на все div, которые являются потомками тела ребенка, , если , что сам ребенок не является header и не footer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...