Как все определили вот этот селектор, я сколько ни игрался, дальше .cards li не продвинулся. По какой логике все вычислили именно эти исключения? .cards li:not(.six):not(.nine) { margin-left: -15px; }
?
Почему самый простой селектор li:last-child у меня не сработал? ( li:last-child { background-color: #339933; } ) Он там не нужен, но по самому факту не работает
?
Код для простоты:
html,
body {
margin: 0;
padding: 0;
font-family: “Arial”, sans-serif;
}
body {
min-width: 550px;
min-height: 250px;
padding: 10px;
}
Все карты, кроме 6 и 9 должны сместиться левее. Поэтому исключаем 6 и 9.
Если удалить <div></div> то у последней карты будет ваш фон. Поэтому в данном испытании используется of-type.
Разница между last-child и last-of-type в этом примере есть.
У меня first-of-type не работает, не достигается нужный результат. Видимо я просто логику смещений не понял, буду уповать на это) Не понял что нужно 6 и 9 смещать
Что разница есть - я догадываюсь. Только логику не понимаю, у меня есть группа “li”, ничто не может мне помешать применить к ним fist-child или last-child, независимо во что они обернуты. Однако тут это не так почему то(
Неправда! В коде так НЕ было. Было ТАК: <ul> <div></div> <li></li> <li></li> <li></li> <div></div> </ul>
Т.е. li не вкладывались в div-ы. И насчёт li:first-child - причём здесь есть у него ребёнки или нет? Чтобы селектор работал, li должен быть САМ ребёнком в каком-либо родителе. Поэтому я бы писал вложенность:
ul li:first-child. Тогда понятно, что свойства нужно применить к li, который является первым ребёнком ul. И тогда ясно, почему не работает этот селектор в случае, когда сверху и снизу над li идут div-ы: потому что первым ребёнком у ul тогда будет div. И чтобы он заработал, нужно заменить :first-child на first-of-type: “первый среди подобных li”