Испытание: первая раскладка [9/20]

Задание легкое, но если у кого сложности, вот решение:

html, body {
    margin: 0;
    padding: 0;
    font-family: "Arial", sans-serif;
}

body {
    min-width: 550px;
    min-height: 250px;
    padding: 10px;
}

.cards {
    width: 500px;
}

.cards li::before {
    font-family: "Courier", monospace;
}

.cards li:not(:nth-of-type(4)):not(:first-of-type) {
    margin-left: -15px;
}

.cards li:not(:nth-of-type(4)) {
    width: 36px;
    height: 54px;
}

.cards li:nth-of-type(4) {
    margin-right: 30px;
    margin-left: 15px;
}

.cards:first-of-type li:last-of-type,
.cards:nth-of-type(2) li:nth-of-type(3),
.cards:nth-of-type(2) li:nth-of-type(5),
.cards:nth-last-of-type(2) li:first-of-type,
.cards:nth-last-of-type(2) li:nth-last-of-type(3) {
    background: #0099ff;
}

.cards:first-of-type li:nth-of-type(2),
.cards:nth-last-of-type(2) li:nth-of-type(2),
.cards:last-of-type li:nth-of-type(2) {
    background: #ff3300;
}

.cards:last-of-type li:nth-of-type(3),
.cards:last-of-type li:nth-last-of-type(1),
.cards:last-of-type li:nth-last-of-type(4) {
    background: #339933;
}
2 лайка

Ты слишком много кода написал, тупо перечислениями каждой карты. Смотри код попроще:

html,
body {
margin: 0;
padding: 0;
font-family: “Arial”, sans-serif;
}

body {
min-width: 550px;
min-height: 250px;
padding: 10px;
}

.cards {
width: 500px;
}

.cards li::before {
font-family: “Courier”, monospace;
}

li:not(:nth-of-type(4)):not(:first-of-type){
margin-left: -15px;
}

li:not(:nth-of-type(4)) {
width: 36px;
height: 54px;
}

li:nth-of-type(4){
margin-right: 30px;
margin-left: 15px;
}

.diamond:nth-child(2n){
background-color: #0099ff;
}

ul:not(:nth-of-type(2)) li:nth-of-type(2){
background-color: #ff3300;
}

ul:last-of-type li:nth-of-type(3n){
background-color: #339933;
}

7 лайков

Первая половина:
cards li:not(:nth-of-type(4)) - все “ли кроме червертых в каждой строке”

Вторая половина:
:not(:first-of-type) - кроме первых ГДЕ??? :sweat:

Прошу опишите этот диапазон словами. Очень хочется понять… ))

1 лайк

Это продолжение первого, “кроме первых в каждой строке”.

Задача, конечно, выполнена, но не покидает ощущение, что я сделала большую часть методом подстановки. Некоторые решения уже сейчас объяснить не могу. Кто-нибудь знает упражнения или тесты где цель обратная?

li:nth-child(n+3) {
    margin-left: -15px;
}

li:nth-child(n):not(:nth-of-type(4)) {
    width: 36px;
    height: 54px;
}

li:nth-of-type(4) {
    margin-right: 30px;
    margin-left: 15px;
}

.diamond:not(:nth-of-type(even)) {
    background-color: #0099ff;
}

.seven:not(.club) {
    background-color: #ff3300;
}

ul:last-of-type li:nth-of-type(3n+3) {
    background-color: #339933;
}
4 лайка

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

не могу понять эту часть кода, у меня стояло просто .cards li и был небольшой сдвиг без которого не пропускало дальше, заменила на эту часть и 100%, хотя абсолютно не пойму почему так((

.cards li:not:nth-of-type(4) - это же все кроме четвертого столбца
.cards li:not(:first-of-type)- все кроме первого столбца,
получается перегруз

можно же просто выбрать .cards li:not(:first-of-type)

правильно ли я понимаю

??

Добрый вечер! Очень красивый код! Вроде бы, разобрался в нём. Единственное, чего не могу понять: как работает правило .diamond:nth-child(2n). Ведь бубны стоят в большинстве своём на НЕчётных местах, да и не все, что стоят на чётных, должны покраситься… Пожалуйста, поясните, если не сложно.

2 лайка

li:not(:nth-child(5)) {
width: 36px;
height: 54px;
Тоже работает

Или так
li:not(:nth-of-type(4)) {
width: 36px;
height: 54px;
}
Но код красивый! Автору respect!

html,
body {
margin: 0;
padding: 0;
font-family: "Arial", sans-serif;
}

body {
min-width: 550px;
min-height: 250px;
padding: 10px;
}

.cards {
width: 500px;
}

.cards li::before {
font-family: "Courier", monospace;
}

li:not(.nine):not(:first-of-type) {
margin-left: -15px;
}

li:not(.nine) {
width: 36px;
height: 54px;
}

li.nine {
margin-right: 30px;
margin-left: 15px;
}

.diamond:nth-of-type(2n+1) {
background-color: #0099ff;
}

.seven:not(.club) {
background-color: #ff3300;
}

ul:last-of-type li:nth-of-type(3n) {
background-color: #339933;
}
3 лайка

А это на случай, если не хотите использовать классы, а действовать только селекторами.
p.s. шутка, конечно же я просто о классах карт забыл.
html,
body {
margin: 0;
padding: 0;
font-family: “Arial”, sans-serif;
}

body {
min-width: 550px;
min-height: 250px;
padding: 10px;
}

.cards {
width: 500px;
}

.cards li::before {
font-family: “Courier”, monospace;
}

.cards li:not(:nth-child(5)):not(:first-of-type){
margin-left: -15px;
}

.cards li:not(:nth-child(5)) {
width: 36px;
height: 54px;
}

.cards li:nth-child(5){
margin-right: 30px;
margin-left: 15px;
}

.cards:first-of-type li:last-of-type, .cards:nth-of-type(2) li:nth-of-type(2n+3):not(:nth-of-type(n+6)), .cards:nth-of-type(3) li:first-of-type, .cards:nth-of-type(3) li:nth-last-of-type(3){
background-color: #0099ff;
}

.cards:not(:nth-child(3)) li:nth-of-type(2) {
background-color: #ff3300;
}

.cards:last-of-type li:nth-of-type(3),.cards:last-of-type li:nth-of-type(6),.cards:last-of-type li:nth-of-type(9) {
background-color: #339933;
}
p.s. 100% - они и после такого 100%.

Что сказать - оригинально)
Но разве нельзя немного сократить селектор, хотя бы последний, использовав формулу типа 3n например?

Можно конечно, но я ведь это не специально делал, хотел побыстрее закончить и пойти на форум проверять решение. В последнем селекторе как раз скопировал просто 3 раза одно и то же, что по времени быстрее вышло.
Уже на форуме знатно удивился, но переделывать всё-таки не стал.

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

html,

body {
margin: 0;
padding: 0;
font-family: “Arial”, sans-serif;
}

body {
min-width: 550px;
min-height: 250px;
padding: 10px;
}

.cards {
width: 500px;
}

.cards li::before {
font-family: “Courier”, monospace;
}

li:nth-of-type(n+2):nth-of-type(-n+3),
li:nth-last-of-type(n+1):nth-last-of-type(-n+5){
margin-left: -15px;
}

li:nth-of-type(n+1):nth-of-type(-n+3),
li:nth-last-of-type(n+1):nth-last-of-type(-n+5){
width: 36px;
height: 54px;
}

ul li:nth-of-type(4){
margin-right: 30px;
margin-left: 15px;
}

ul:first-of-type li:last-of-type,
ul:nth-of-type(2) li:nth-of-type(odd):not(:first-of-type):not(:last-of-type):not(.queen),
ul:nth-of-type(3) li:first-of-type,
ul:nth-of-type(3) li:nth-last-of-type(3)
{
background-color: #0099ff; /* blue */
}

ul:first-of-type li:nth-of-type(2),
ul:nth-of-type(n+3):nth-of-type(-n+4) li:nth-of-type(2){
background-color: #ff3300; /* red */
}

ul:last-of-type li:nth-of-type(3),
ul:last-of-type li:nth-last-of-type(4),
ul:last-of-type li:last-of-type{
background-color: #339933; /* green */
}

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

вот,представим,реальные условия , в веб-разработке.(на что я и нацелен)
кто обычно выдвигает сроки ?
заказчик или согласовывается вместе с отделом веб-разработки(веб-разработчиком) ?
перспективней,

  • выполнять быстро задачу ? ( в данном случае , не обращать внимания на классы карт)
  • или все таки,максимально стараться оптимизировать код ?

или все по ситуации?
я представляю,что пример этого пасьянса,вероятно не применим к данному вопросу,но вот,предположим , что так?
p.s.
я выявил закономерности , по вашему совету и заметил,что я не придавал столько внимания классам(на какой то момент,даже вообще забыл,что это карты :slight_smile: ),как автор , на мой взгляд - идеального кода,в третьем посте.
выглядит и читается - просто супер,я в восторге.

НАчнем с того что это тут лишнее

:not(:nth-of-type(4))

мне кажется такое решение в целях обучения интересней )

   li:not(:nth-of-type(1)):nth-of-type(-n+3),
   li:nth-of-type(n+4)
{
       margin-left: -15px;    
}
1 лайк

А не проще идти от того, что нужно выбрать один элемент, который НЕ таких размеров, как все остальные?

1 лайк

Короткий вариант :blush:

html,
body {
margin: 0;
padding: 0;
font-family: “Arial”, sans-serif;
}

body {
min-width: 550px;
min-height: 250px;
padding: 10px;
}

.cards {
width: 500px;
}

.cards li::before {
font-family: “Courier”, monospace;
}

li:not(.nine):not(:first-of-type) {
margin-left: -15px;
}

li:not(.nine) {
width: 36px;
height: 54px;
}

li.nine {
margin-right: 30px;
margin-left: 15px;
}

ul:not(:last-of-type) li:not(.nine).diamond {
background-color: #0099ff;
}

ul:not(:nth-of-type(2)) li.seven {
background-color: #ff3300;
}
ul:last-of-type li:nth-of-type(3n) {
background-color: #339933;
}

Кто-нибудь может объяснить почему добавление части
:not(:first-of-type)
в правило
li:not(:nth-of-type(4)):not(:first-of-type) {
margin-left: -15px;
}

сдвигает в право все карты а не только первые карты в каждом столбце?

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