Элемент CSS Center в элементе Angular Router

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

Элемент CSS Center в элементе Angular Router

router-outlet ~ * {
  position: absolute;
  height: 100%;
  width: 90%;
  display: block;
  margin: auto;
}

.main{
    margin: 20px;
}

Структура такая:

<mat-sidenav-content>
  <div class = "main">
    <router-outlet></router-outlet>
  </div>

почему вы использовали этот селектор? router-outlet ~ * ?

Mihai T 06.03.2019 09:52

Что именно ты пытаешься сделать? Вы пытаетесь выровнять «это», но что это «это»? Выровнять как и где?

Jeremy Thille 06.03.2019 09:52

Router-outlet не является настраиваемым элементом шаблона, вы можете добиться этого, используя другой слой после router-outlet. Но вы можете просто настроить свой основной класс. Я также рекомендую вам изучить эту тему SO, stackoverflow.com/a/34645811/5955138

rcanpahali 06.03.2019 10:37
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
855
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Используйте CSS Flex Box для выравнивания элементов по центру.

Вы не можете центрировать router-outlet, используя имя тега router-outlet в css, потому что router-outlet не является настраиваемым элементом шаблона. Вместо использования имени тега router-outlet попробуйте обернуть его div и применить стили flex box к классу div.

В приведенном ниже примере div-оболочка имеет класс с именем .main.

justify-content: center используется для выравнивания элементов по центру.

.main {
  display: flex;
  align-items: center;
  justify-content-center;
   width: 90%;
}

<mat-sidenav-content>
  <div class = "main">
    <router-outlet></router-outlet>
  </div>

Большое спасибо @Bear Nithi. Как вы узнали, что мы должны использовать выравнивание содержимого и выравнивание по ширине? Можно немного поподробнее! Спасибо еще раз :)

Harshil Shah 06.03.2019 10:26
css-tricks.com/snippets/css/a-guide-to-flexbox эта шпаргалка по flexbox научит большему, чем я могу объяснить. это хороший материал для flexbox.
Bear Nithi 06.03.2019 10:31

Подумайте об использовании атрибутов Bootstrap Flex, они сделают вашу жизнь намного проще и позволят веб-сайтам очень быстро реагировать на разрешение и разные размеры экрана.

Полезная ссылка - Bootstrap Flex

Пример того, как что-то центрировать -

<div class = "d-flex w-100>
  <div class = "d-flex align-items-centre justify-content-between">
    Hello World!
  </div>
</div>

Ваш вопрос описан немного расплывчато, я все равно постараюсь на него ответить. Пожалуйста, прокомментируйте, если я вас неправильно понял.

Насколько я понял, вы пытаетесь выровнять по горизонтали родственный контейнер router-outlet-тега.

Почему это не работает?
Розетка маршрутизатора не имеет определенного свойства display. Следовательно, его ширина и высота равны 0px, и вы не можете центрировать другой контейнер в соответствии с элементом ширины 0px.

Решение

router-outlet {
  display: block;
}

Это позволяет сделать следующее:

<div> <!-- some outer element -->
  <router-outlet>
  <div #center-me>CENTER ME</div>
</div>
router-outlet ~ #center-me {
  margin: auto; /*  example if center-me is a block-level element */
}

Это возможно, даже я бы не рекомендовал вам это делать. Стилизация в соответствии с элементом-оболочкой, возможно, была бы лучшим подходом.

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