Селекторы. Испытание "Дуэль" (18/18)

Прошел испытание, 100%. Но все равно закралась мысль о том, что мой CSS можно оптимизировать. Особенно не нравятся последние 4 селектора, которые пришлось рассчитывать. Какие варианты упрощения кода посоветуете?

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

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

.target li:last-child{
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);
}

.shooter-1 .target li:nth-child(3n+2) .lever {
display: none;
}

.shooter-1 .target li:nth-child(3) .lever{
display: none;
}

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

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

2 лайка

Для мишеней первого стрелка у вас есть селектор .miss.

Smily, зачем .target li если все li после target?

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

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

.shooter-1 .target li:nth-child(3n+2) .lever {
display: none;
}

.shooter-1 .target li:nth-child(3) .lever{
display: none;
}

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

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

Откуда взялось это правило?

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

.shooter-1 {
padding: 55px 0 55px 0;

background-color: #fcf8e3;
border-bottom: 1px dashed #cccccc;
}

.shooter-2 {
padding: 55px 0 55px 0;

background-color: #d9edf7;
}

.target {
display: flex;
justify-content: space-between;
width: 200px;
height: 25px;
margin: 0 auto;
padding: 10px 15px 10px 15px;
overflow: hidden;

list-style: none;

background-color: white;
border-radius: 2px;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
}

li {
position: relative;

width: 22px;
height: 22px;

font-size: 0;

background-color: #333333;
border: 1px solid black;
border-radius: 50%;
}

.hitbox {
width: 10px;
height: 10px;
margin: 6px auto;

background-color: #999999;
border-radius: 50%;
}

.lever {
position: absolute;
top: -2px;
left: -2px;

width: 26px;
height: 26px;

background-color: #f5f5f5;
border-radius: 50%;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
}

span {
position: absolute;
top: 12px;
left: 11px;

width: 5px;
height: 25px;

background-color: #f5f5f5;
box-shadow: -1px 15px 2px rgba(0, 0, 0, 0.3), 1px 15px 2px rgba(0, 0, 0, 0.3);
}

.shooter-1 .miss .lever {
display: none;
}

.shooter-2 li:nth-child(3n+1) .lever,
.shooter-2 li:last-child .lever{
display: none;
}

Как вообще должно быть правильно на этом этапе?:neutral_face:

1 лайк

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

.shooter-1 {
padding: 55px 0 55px 0;

background-color: #fcf8e3;
border-bottom: 1px dashed #cccccc;
}

.shooter-2 {
padding: 55px 0 55px 0;

background-color: #d9edf7;
}

.target {
display: flex;
justify-content: space-between;
width: 200px;
height: 25px;
margin: 0 auto;
padding: 10px 15px 10px 15px;
overflow: hidden;

list-style: none;

background-color: white;
border-radius: 2px;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
}

li {
position: relative;

width: 22px;
height: 22px;

font-size: 0;

background-color: #333333;
border: 1px solid black;
border-radius: 50%;
}

.hitbox {
width: 10px;
height: 10px;
margin: 6px auto;

background-color: #999999;
border-radius: 50%;
}

.lever {
position: absolute;
top: -2px;
left: -2px;

width: 26px;
height: 26px;

background-color: #f5f5f5;
border-radius: 50%;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
}

span {
position: absolute;
top: 12px;
left: 11px;

width: 5px;
height: 25px;

background-color: #f5f5f5;
box-shadow: -1px 15px 2px rgba(0, 0, 0, 0.3), 1px 15px 2px rgba(0, 0, 0, 0.3);
}

.shooter-1 li:nth-child(n+2):nth-child(-n+3) .lever,
.shooter-1 li:last-child .lever
{
display: none;
}

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

Ничего лишнего

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

.shooter-1 {
padding: 55px 0 55px 0;

background-color: #fcf8e3;
border-bottom: 1px dashed #cccccc;
}

.shooter-2 {
padding: 55px 0 55px 0;

background-color: #d9edf7;
}

.target {
display: flex;
justify-content: space-between;
width: 200px;
height: 25px;
margin: 0 auto;
padding: 10px 15px 10px 15px;
overflow: hidden;

list-style: none;

background-color: white;
border-radius: 2px;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
}

li {
position: relative;

width: 22px;
height: 22px;

font-size: 0;

background-color: #333333;
border: 1px solid black;
border-radius: 50%;
}

.hitbox {
width: 10px;
height: 10px;
margin: 6px auto;

background-color: #999999;
border-radius: 50%;
}

.lever {
position: absolute;
top: -2px;
left: -2px;

width: 26px;
height: 26px;

background-color: #f5f5f5;
border-radius: 50%;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
}

span {
position: absolute;
top: 12px;
left: 11px;

width: 5px;
height: 25px;

background-color: #f5f5f5;
box-shadow: -1px 15px 2px rgba(0, 0, 0, 0.3), 1px 15px 2px rgba(0, 0, 0, 0.3);
}

.shooter-1 .miss .lever {
display: none;
}

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

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

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

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

.shooter-1 {
padding: 55px 0 55px 0;

background-color: #fcf8e3;
border-bottom: 1px dashed #cccccc;
}

.shooter-2 {
padding: 55px 0 55px 0;

background-color: #d9edf7;
}

.target {
display: flex;
justify-content: space-between;
width: 200px;
height: 25px;
margin: 0 auto;
padding: 10px 15px 10px 15px;
overflow: hidden;

list-style: none;

background-color: white;
border-radius: 2px;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
}

li{
position: relative;

width: 22px;
height: 22px;

font-size: 0;

background-color: #333333;
border: 1px solid black;
border-radius: 50%;
}

.hitbox {
width: 10px;
height: 10px;
margin: 6px auto;

background-color: #999999;
border-radius: 50%;
}

.lever{
position: absolute;
top: -2px;
left: -2px;

width: 26px;
height: 26px;

background-color: #f5f5f5;
border-radius: 50%;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
}

.span{
position: absolute;
top: 12px;
left: 11px;

width: 5px;
height: 25px;

background-color: #f5f5f5;
box-shadow: -1px 15px 2px rgba(0, 0, 0, 0.3), 1px 15px 2px rgba(0, 0, 0, 0.3);
}

.shooter-1 li:nth-child(3n+2) .lever{
display: none;
}

.shooter-1 li:nth-child(3) .lever{
display: none;
}

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

.shooter-2 li:nth-child(1) .lever{
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 {
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;
}

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

i {
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);
}

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

.miss:nth-child(n) .lever{
display: none;
}

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

selector {
display: none;
}

Последний селектор не понадобился.

Последнюю часть с четырьмя display: none; оформила так:

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

Технически, можно заменить nth-child(1) и nth-child(5) на first-child и last-child

выделил лишнее