Селекторы, часть 1 / Испытание. Дуэль. [18/18] Подробное объяснение решения. 100%

Cпасибо, большое! Я уже хотел все бросать…))

Спасибо БОльшое, сильно помогли!

Я тоже наступил на эти грабли. Суть в том, что nth:child и вообще все селекторы про дочерние элементы, работают именно с дочерними, а не с потомками.
У нас есть родительский .target, а в нем дочерние li.
В вашем варианте вы пытаетесь указать отображение потомку .lever
Плюс попадание отрисовывается двумя элементами: span и .lever, а .hitbox трогать не надо.
Получается, что если хотим отключить белую крышку и рычаг у второго стрелка в первой мишени, то пишем:
.shooter-2 li:nth-child(1) .lever {
display: none;
}

“Display:none на все элементы .lever (и их содержимое) в элементе li первом по счёту, которые лежат в элементе shooter-2”

1 лайк

Спасибо человеку выложившему это объяснение я на 90% сделал, но кстати вообще по своей дурацкой логике. Всё больше казалось что нужно сразу создавать соединения сложных селекторов)). А теперь всё ясно как в божий день. Вот это по человечески! Большое вам спасибо!

3 лайка

Блин,у меня вообще фигня.
Мишень улетела кудато далеко-далкео…
body {
width: 280px;
margin: 0;
padding: 0;
}

.shooter-1 {
padding: 55px 0 55px 0;
border-bottom: 1px dashed #cccccc;
background: #fcf8e3;
}

.shooter-2 {
padding: 55px 0 55px 0;
background: #d9edf7;
}

.target {
display: flex;
justify-content: space-between;
width: 200px;
height: 25px;
margin: 0 auto;
padding: 10px 15px 10px 15px;
border-radius: 2px;
background: white;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
overflow: hidden;
list-style: none;
}

.li {
position: relative;
width: 22px;
height: 22px;
border: 1px solid black;
border-radius: 50%;
background: #333333;
font-size: 0;
}

.hitbox {
width: 10px;
height: 10px;
margin: 6px auto;
border-radius: 50%;
background: #999999;
}

.lever {
position: absolute;
top: -2px;
left: -2px;
width: 26px;
height: 26px;
border-radius: 50%;
background: #f5f5f5;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
}

span {
position: absolute;
top: 12px;
left: 11px;
width: 5px;
height: 25px;
background: #f5f5f5;
box-shadow:
-1px 15px 2px rgba(0, 0,0 , 0.3),
1px 15px 2px rgba(0, 0, 0, 0.3);
}

.miss .lever {
display: none;
}

.shooter-2 li:first-child .lever {
display: none;
}

.shooter-2 li:nth-child(4) .lever {
display: none;
}

.shooter-2 li:nth-child(5) .lever {
display: none;
}

У Вас написан селектор li с точкой. Однако это селектор по тегу, а не по классу… Может, в этом дело?

1 лайк

вам место в раю обеспечено. я потратил три часа, что бы получить это http://prntscr.com/gjda2r
CSS код сего
`body {
width: 280px;
margin: 0;
padding: 0;
}

.shooter-1 {
padding: 55px 0 55px 0;
border-bottom: 1px dashed #cccccc;
background: #fcf8e3;
}

.shooter-2 {
padding: 55px 0 55px 0;
background: #d9edf7;

}

.target {
display: flex;
justify-content: space-between;
width: 200px;
height: 25px;
margin: 0 auto;
padding: 10px 15px 10px 15px;
border-radius: 2px;
background: white;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
overflow: hidden;
list-style: none;
}

li {
position: relative;
width: 22px;
height: 22px;
border: 1px solid black;
border-radius: 50%;
background: #333333;
font-size: 0;
}

.hitbox {
width: 10px;
height: 10px;
margin: 6px auto;
border-radius: 50%;
background: #999999;
}

.lever {
position: absolute;
top: -2px;
left: -2px;
width: 26px;
height: 26px;
border-radius: 50%;
background: #f5f5f5;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
}

.span {
position: absolute;
top: 12px;
left: 11px;
width: 5px;
height: 25px;
background: #f5f5f5;
box-shadow:
-1px 15px 2px rgba(0, 0,0 , 0.3),
1px 15px 2px rgba(0, 0, 0, 0.3);
}

selector {
display: none;
}

selector {
display: none;
}

selector {
display: none;
}

selector {
display: none;
}`, а дальше тупик. Спасибо за подсказку

А я пол вечера потратил и недопер )))
Спасибо! ))

Программирование изучал давно, в начале 2000-х. Решил потренироваться в вёрстке. Курс в принципе не плохой, но не достаточно теории. Нет простого и понятного взгляда на общую концепцию CSS. Тогда бы всем было бы проще. 18 задание, для новичка будет совершенно простым, да и вообще любое, если понять общую структуру построения правил. В начале прописываются правила отрисовки - li , .hitbox, .lever , span - нарисовали все элементы, теперь ненужное запрещаем - .miss .lever, .shooter-2 li:first-child .lever и т.д. Весь CSS на этом стоит. Короче нужно видеть общую концепцию построения, и когда это понимание придёт, вёрстка будет отлетать как семечки.

5 лайков

Спасибо тебе.
Не долго думая решил сразу заглянуть на форум.

У меня так сработало. Селектор с diplay none не использовался. Толком даже не разъяснялось что такое display. Почему его в контрольную работу вставили?

body {
width: 280px;
margin: 0;
padding: 0;
}

.shooter-1 {
padding: 55px 0 55px 0;
border-bottom: 1px dashed #cccccc;
background: #fcf8e3;
}

.shooter-2 {
padding: 55px 0 55px 0;
background: #d9edf7;
}

.target {
display: flex;
justify-content: space-between;
width: 200px;
height: 25px;
margin: 0 auto;
padding: 10px 15px 10px 15px;
border-radius: 2px;
background: white;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
overflow: hidden;
list-style: none;
}

li {
position: relative;
width: 22px;
height: 22px;
border: 1px solid black;
border-radius: 50%;
background: #333333;
font-size: 0;
}

.miss .hitbox,
.shooter-2 li:nth-child(1) .hitbox,
.shooter-2 li:nth-child(4) .hitbox,
.shooter-2 li:nth-child(5) .hitbox {
width: 10px;
height: 10px;
margin: 6px auto;
border-radius: 50%;
background: #999999;
}

.shooter-1 li:first-child .lever,
.shooter-1 li:nth-child(4) .lever,
.shooter-2 li:nth-child(2) .lever,
.shooter-2 li:nth-child(3) .lever{
position: absolute;
top: -2px;
left: -2px;
width: 26px;
height: 26px;
border-radius: 50%;
background: #f5f5f5;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
}

.shooter-1 li:first-child span,
.shooter-1 li:nth-child(4) span,
.shooter-2 li:nth-child(2) span,
.shooter-2 li:nth-child(3) span{
position: absolute;
top: 12px;
left: 11px;
width: 5px;
height: 25px;
background: #f5f5f5;
box-shadow:
-1px 15px 2px rgba(0, 0,0 , 0.3),
1px 15px 2px rgba(0, 0, 0, 0.3);
}
selector {
display: none;
}
selector {
display: none;
}
selector {
display: none;
}
selector {
display: none;
}

2 лайка

Огромное спасибо за подробное раз.яснение!))

Кто может объяснить, почему span не распостраняется на сбитые мишени?

не знаю кто как, но я бы не решил это самостоятельно. Всё что смог сам это цвета для “sooter1-2” задать. Спасибо автору!!! очередной и окончательный повод подыскать литературу HTML, CSS !!!

Так же делал :crazy_face:
Что такое display знал и раньше, но не использовал, так как не проходили этого в курсе.

Без Вашего разъяснения не смог пройти данное задание. Первое испытание, где я провалил все 10 попыток проверки. Просто с психу т.к. ну вот вообще не получалось. Так быстро давались мне другие испытания, а на этом почувствовал себя очень глупым :frowning:

Начал так же как и Вашем решении, потом потерялся.
Курс “Селекторы, часть 1” прошел второй раз, думал что-то упустил. сейчас опять еще раз пройду…

ЗЫ display разбирали в достаточной мере, чтобы понять, что он либо скрывает, либо показывает.

Уф, оказывается, все так просто, спасибо Вам большое)) Посидел минут 30, сделал задание по-своему, но на 97%, потом понял, что что-то не так, и полез на форум.
Код получился совсем не такой компактный и красивый, как у автора, в двух местах пришлось изменить позиционирование с absolute на relative, потому что изначально пошел не в ту степь, но в итоге все равно удалось выполнить задание. И получилось так, что display: none не понадобилось. Вот код, если кому интересно:

  body {
    width: 280px;
    margin: 0;
    padding: 0;
}

.shooter-1 {
    padding: 55px 0 55px 0;
    border-bottom: 1px dashed #cccccc;
    background: #fcf8e3;
}

.shooter-2 {
    padding: 55px 0 55px 0;
    background: #d9edf7;
}

.target {
    display: flex;
    justify-content: space-between;
    width: 200px;
    height: 25px;
    margin: 0 auto;
    padding: 10px 15px 10px 15px;
    border-radius: 2px;
    background: white;
    box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
    overflow: hidden;
    list-style: none;
}

.shooter-1 .miss,
.shooter-2 li:nth-child(1),
.shooter-2 li:nth-child(4), 
.shooter-2 li:nth-child(5) {
    position: relative;
    width: 22px;
    height: 22px;
    border: 1px solid black;
    border-radius: 50%;
    background: #333333;
    font-size: 0;
}

.shooter-1 .miss .hitbox,
.shooter-2 li:nth-child(1) .hitbox,
.shooter-2 li:nth-child(4) .hitbox, 
.shooter-2 li:nth-child(5) .hitbox {
    width: 10px;
    height: 10px;
    margin: 6px auto;
    border-radius: 50%;
    background: #999999;
}
.shooter-1 li:first-child,
.shooter-1 li:nth-child(4),
.shooter-2 li:nth-child(2),
.shooter-2 li:nth-child(3) {   
    position: relative;
    top: -1px;
    left: -1px;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: #f5f5f5;
    box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
}

.shooter-1 li:nth-child(1) .lever,
.shooter-1 li:nth-child(4) .lever,
.shooter-2 li:nth-child(2) .lever, 
.shooter-2 li:nth-child(3) .lever {
    position: relative;
    top: 12px;
    left: 11px;
    width: 5px;
    height: 25px;
    background: #f5f5f5;
    box-shadow:
        -1px 15px 2px rgba(0, 0,0 , 0.3),
        1px 15px 2px rgba(0, 0, 0, 0.3);
}

selector {
    display: none;
}

selector {
    display: none;
}

selector {
    display: none;
}

selector {
    display: none;
}

Вот,хоть убей,не понимаю,по какой логике пишется тег li в li:nth-child(2) (к примеру),если нужно указать порядковый номер элемента СПИСКА,почему не ul:nth-child(2)? Или это уже будет “список номер два”?

Да, это будет список №2.

Вы читайте селектор li:nth-child(2) правильно: “Элемент li, который является вторым по счету дочерним элементом своего родителя”.

1 лайк