Как применить дополнение из оболочки класса div, но не к заголовку

#html #css

#HTML #css

Вопрос:

У меня есть этот стиль для обертки div

css

 .wrapper {
   padding-left: 2rem;
   padding-right: 2rem;
   width: 960px;
}
header {
  width: 100%; //that means it inherits the paddings
  background-color: red; 
}
  

но я не хочу применять его к заголовку

HTML

 <div class="wrapper">
  <header>
    -Link
    -Link
    -Link
  </header>
</div>
  

Есть ли лучший способ? Я попробовал первый дочерний элемент и псевдокласс not, он не работает. Я пытаюсь распространить заголовок на 100% от оболочки, чтобы применяемый цвет на 100% соответствовал его родительскому элементу, в данном случае оболочке.

редактировать: исправлена демонстрация

Спасибо!

Комментарии:

1. Просто примените цвет bg к элементу оболочки.

2. Но я хочу, чтобы цвет bg отображался только в заголовке, где находится моя навигация.

Ответ №1:

Вы можете отменить заполнение, установив отрицательные поля таким образом:

 .wrapper {
    padding-left: 2rem;
    padding-right: 2rem;
    width: 960px;
}
.header {
    margin-left: -2rem;
    margin-right: -2rem;
    padding-left: 2rem;
    padding-right: 2rem;
    background-color: red; 
}
  

Ответ №2:

Вы можете установить заголовок position: absolute . Также header класс не существует.

 .wrapper {
   padding-left: 2rem;
   padding-right: 2rem;
   width: 960px;
   position: relative;
}

header {
  width: 100%;
  background-color: red;
  position: absolute;
  left: 0;
}
  

Комментарии:

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

2. Это действительно зависит от того, какие проблемы может вызвать каждое решение, есть много способов подойти к этому.

3. Да, я решил это, добавив классы там, где это необходимо. Просто потому, что мне нужно было быстрое решение.

Ответ №3:

Вы можете просто рассмотреть box-shadow для окрашивания внешней части:

 .wrapper {
  padding:10px 2rem;
  border:2px solid green;
  background:#f2f2f2;
}

header {
  background-color: red;
  box-shadow:
     -2rem 0 0 0 red,
     2rem 0 0 0 red;
}  
 <div class="wrapper">
  <header>
    -Link -Link -Link
  </header>
</div>  

Ответ №4:

Первый метод

Лучшее решение — Relative позиционирование заголовка

Добавьте относительное позиционирование в заголовок

 header {
  background-color: red;
  position:relative;
  left:-2rem;
  right:-2rem;
  padding: 0 2rem;
  width: 100%;
}
  

 body{
  margin:0;
}
.wrapper{
   padding-left: 2rem;
   padding-right: 2rem;
   width: 960px;
}
header {
  background-color: red;
  position:relative;
  left:-2rem;
  right:-2rem;
  padding: 0 2rem;
  width: 100%;
}  
 <div class="wrapper">
  <header>
    -Link
    -Link
    -Link
  </header>
  Wrapper
</div>  

Второй метод — добавить отрицательный margin

Вместо добавления отрицательного отступа вы можете использовать отрицательный запас

 header {
  background-color: red;
  margin:0 -2rem;
}
  

рабочая демонстрация

 body{
  margin:0;
}
.wrapper{
   padding-left: 2rem;
   padding-right: 2rem;
   width: 960px;
}
header {
  background-color: red;
  margin:0 -2rem;
}  
 <div class="wrapper">
  <header>
    -Link
    -Link
    -Link
  </header>
  Wrapper
</div>  

Комментарии:

1. вы хотите вот так 🙂

2. Так что да… Обычно мне не нравится добавлять поля по всему коду, я использую только отступы, потому что это нарушает код. Я добавил класс заполнения везде, где это необходимо. Но должно быть более чистое решение.

3. Вы можете выбрать первый метод более гибким @Becky Beck?

4. Спасибо, но это портит мой заголовок.