Почему селектор прямого потомка CSS не применяется к компоненту Angular

У нас есть этот простой main.html

<app>
   <sidebar></sidebar>
   <main-content>
      <router-outlet></router-outlet>
   </main-content>
</app>

Когда мы загружаем простой компонент через маршрутизацию (изменение URL), HTML становится следующим:

<app>
   <sidebar></sidebar>
   <main-content>
      <router-outlet></router-outlet>
      <component></component>
   </main-content>
</app>

Первый вопрос: почему <component> не встраивается внутри <router-outlet>, а становится родным братом.

Однако этот CSS не применяется к тегу <component>:

app sidebar main-content > * {
   background: red;
}

Когда мы проверяем, <router-outlet> имеет этот стиль, но <component>, который является прямым потомком <main-content>, не имеет этого стиля.

Что здесь не так?

Все потомки прямые, символ > - это дочерний комбинатор (ранее известный как дочерний селектор до разделения селекторов и комбинаторов)

Quentin 02.05.2018 12:59

Откройте в браузере инструменты разработчика. Посмотрите на панель «Элементы». Посмотрите на элемент <component>. Посмотрите на вкладку "Стили". Применяется ли стиль в соответствии с этим? Это что-то отменяется? Он применяется, но не виден (например, потому что нет высоты, на которой он должен быть виден)? Действительно ли <component> является потомком <main-content>?

Quentin 02.05.2018 13:00

для стиля, который вы должны использовать: host / deep /, чтобы применить стиль к вложенному компоненту

Fateh Mohamed 02.05.2018 13:05

Стиль не применяется.

Sajad Sedghizadeh 02.05.2018 13:10
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
4
606
1

Ответы 1

На основе вашего указанного кода:

<app>
   <sidebar></sidebar>
   <main-content>
      <router-outlet></router-outlet>
      <component></component>
   </main-content>
</app>

это

app sidebar main-content > * {
   background: red;
}

не будет работать, потому что main-content не является дочерним по отношению к sidebar, а является брат или сестра.

Я предлагаю вам попробовать

app sidebar + main-content > * {
   background: red;
}

или даже

app main-content > * {
   background: red;
}

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