Проблема со спецификой CSS

У меня есть вложенный div, как это

<div class = "myDiv">
   <div class = "myOtherDiv">

В моем CSS я хочу myOtherDiv иметь margin: 0 auto; but not myDiv

если я напишу

.myDiv{
   margin: 0 auto;
}

Это относится к обоим со спецификой 0,1,0

Но

 .myDiv .myOtherDiv{
   margin:0 auto;
}

Ничего не произошло. Что странно, визуальный код сообщает, что специфичность этого значения равна 0,2,0, что выше, так что не следует ли это применять?

Проверив это, CSS в порядке - .myDiv { применяется только к myDiv, а .myDiv .myOtherDiv { применяется только к myOtherDiv, поэтому я не уверен, в чем ваша проблема. Попробуйте это с чем-то другим, кроме margin: 0 auto; (например, с текстом color или background-color) и посмотрите, что и где применимо.

DKyleo 13.03.2019 17:39

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

Asons 13.03.2019 17:55
Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
1
2
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

.myDiv .myOtherDiv {} или просто .myOtherDiv {} должны подойти для таргетинга на myOtherDiv.

Вы дали div ширину? Элементы уровня блока, такие как div, по умолчанию имеют ширину 100% от их родителя. Поэтому вам нужно установить определенную меньшую ширину или использовать display: table;, чтобы содержимое определяло ширину. Смотри ниже:

.myDiv{
  background: blue;
}
.myOtherDiv{
  margin: 0 auto;
  display: table;
  background: red;
}
<div class = "myDiv">
   <div class = "myOtherDiv">content
   </div>
 </div>
Ответ принят как подходящий

Поскольку вы не предоставили весь код CSS, трудно сказать. Однако,

Проблемы с margin: 0 auto; вы обычно являетесь результатом того, что элемент не является элементом блокировать или содержит ширина.

Поскольку div, естественно, является блочным элементом, он занимает всю доступную ширину, даже если у вас есть только 1 буква внутри этого div (например, <div>A</div>

Вы должны объявить ширину перед центрированием элементов div.

Так, например:

.myDiv {
width: 50%;
margin: 0 auto;
}

Я приветствую специфичность,

Если родитель<div> не назначен ширинаmargin:0 auto, ничего не будет делать. Однако, если вы назначите ширину, то блок не будет занимать все пространство страницы, и тогда сам блок будет центрирован, но элементы дочернего блока не будут центрированы или затронуты.

Если вы назначите и дочерний, и родительский div margin:0 auto без установленного ширина, это приведет к нулевому эффекту, не влияя на позиционирование вообще, потому что каждый блок просто занимает все возможное пространство на странице.

Если вы хотите, чтобы дочерний блок div располагался по центру, назначьте ширину дочернему div и оставьте родительский div в покое. Поскольку родитель занимает все пространство ширины страницы, дочерний элемент div будет центрирован на странице с помощью margin:0 auto; и назначенной вами ширины.

Возможно, я пропустил объяснение «ширины». Однако мой ответ более читабелен. Так что, по крайней мере, ради удобочитаемости и понимания мой ответ не заслуживает отрицательного голоса.

Ernie 13.03.2019 18:26

На самом деле, если вы достаточно работали с CSS, вы должны знать, что без установки ширины блочный элемент не может быть центрирован, если только это не просто текст, который в этом случае вы используете text-align: center. Что касается конкретики, вы правы - я не смог решить эту проблему и сделаю это сейчас.

Ernie 13.03.2019 18:52

Если вы посмотрите мой профиль, то увидите, что я много знаю о CSS. Если вопрос касается указания ширины div для работы автоматического поля, вопрос является дубликатом, и снова на него не следует отвечать, вместо этого следует использовать встроенный «голосовать / отмечать закрытие как дубликат», поэтому, что бы ни было правдой, ответ не должен быть опубликован.

Asons 13.03.2019 18:56

@LGSon У тебя больше опыта в SO, чем у меня. Я здесь только для того, чтобы помочь людям, полагаю, я немного наверстаю упущенное в отношении действующей системы и ее правил и процессов. Так что, даже если у нас был короткий обмен мнениями, я уважаю ваше мнение и точку зрения на этот вопрос.

Ernie 13.03.2019 19:17

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