Селекторы, часть 1 / Испытание. Дуэль.

Доброе время суток!
100%, оцените код, и скажите его логичность и компактность, пожалуйста) и 2 вопроса:

  1. Я не использовал последние 4 поля для селекторов… Скажите для чего они были??

  2. Я изменил свойство left:с 12px до 11px у “ножки” мишени. 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 {
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-2 li,
.shooter-1 li
{
position: relative;
float: left;
width: 22px;
height: 22px;
margin-right: 20px;
border: 1px solid black;
border-radius: 50%;
background: #333333;
font-size: 0;
}

.shooter-2 li:nth-of-type(5),
.shooter-1 li:nth-of-type(5)

{margin-right: 0;}

.shooter-2 .target li .hitbox,
.shooter-1 .target li .hitbox
{
width: 10px;
height: 10px;
margin: 6px auto;
border-radius: 50%;
background: #999999;
}

.shooter-2 li:nth-of-type(2) .lever,
.shooter-2 li:nth-of-type(3) .lever,
.shooter-1 li:nth-of-type(1) .lever,
.shooter-1 li:nth-of-type(4) .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-2 li:nth-of-type(2) span,
.shooter-2 li:nth-of-type(3) span,
.shooter-1 li:nth-of-type(1) span,
.shooter-1 li:nth-of-type(4) 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;
}

Посмотрите эту тему. Вы найдете ответы на все свои вопросы. А если что-то не поймете, то напишите.

1 лайк

Вариант сначала всё включаем, а потом точечно отключаем )

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 {
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;
float: left;
width: 22px;
height: 22px;
margin-right: 20px;
border: 1px solid black;
border-radius: 50%;
background: #333333;
font-size: 0;
}

li:nth-child(5) {
margin-right: 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:nth-child(1) span,
.shooter-2 li:nth-child(4) span,
.shooter-2 li:nth-child(5) span
{
display: none;
}

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

И снова здравствуйте! Задание выполнено на 100% без правил ‘display: none’ и без изменения значений в 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 {
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;
float: left;
width: 22px;
height: 22px;
margin-right: 20px;
border: 1px solid black;
border-radius: 50%;
background: #333333;
font-size: 0;
}

li:last-child {
margin-right: 0;
}

.shooter-1 li:nth-child(2) .hitbox,
.shooter-1 li:nth-child(3) .hitbox,
.shooter-1 li:nth-child(5) .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: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: 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:nth-child(1) 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);
}

{
display: none;
}

selector {
display: none;
}

selector {
display: none;
}

selector {
display: none;
}

А с использованием display: none; можете сделать?

а вообще, в “реальной жизни”, правильнее было бы сделать как у меня или с использованием display: none; ?

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

я конечно уже посмотрел как сделали другие участники. конкретно то что сначала все прописываем, а не нужное прячем. и тогда вопрос: что если у нас опять же таки 20 мишеней? тогда список селекторов с правилом display увеличится, то есть тоже будет много записей. я же думаю что лучше конкретно указать что нам нужно, то есть по факту пораженные мишени и не пораженные, и не писать лишние правила. или я не прав? хотя если в HTML коде не будет больших различий.

например:
`

` и таких записей будет 20. то проще записать с display: none;. но если каждая мишень будет построена по разному, как у нас в задании то лучше без display:none;.

Все зависит от того, сколько из этих 20 будет скрыто, и впишется ли порядок скрытый мишеней в одну из формул для :nth-child, типа (2n+1). Возможно, хватит одного display: 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;
}

.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);
}

.lever 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:nth-child(1) .lever {
display: none;
}

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

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