100% Испытание: статистика браузеров [19/31]

html,
body {
    width: 550px;
    margin: 0;
    padding: 0;
    font-family: "Arial", sans-serif;
    color: #333333;
    background-color: #f5f5f5;
}

main {
    position: relative;
    display: block;
    width: 500px;
    height: 300px;
    margin: 0 auto;
}

h1 {
    margin: 0;
    margin-bottom: 10px;
    padding: 10px 0;
}

.pie-container {
    position: relative;
    float: left;
    width: 150px;
    height: 150px;
    border-radius: 50%;
    box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.8);
}

.pie-container::after {
    content: "";
    position: absolute;
    top: 25%;
    left: 25%;
    z-index: 50;
    width: 50%;
    height: 50%;
    color: white;
    background-color: #f5f5f5;
    border-radius: 50%;
    box-shadow: inset 0px 0px 4px rgba(0, 0, 0, 0.8);
}

.pie {
    position: absolute;
    width: 100%;
    height: 100%;
    background-color: #aaaaaa;
    border-radius: 50%;
    clip: rect(0px, 75px, 150px, 0px);
}

#safari {
    z-index: 10;
    background-color: #aaaaaa;
    transform: rotate(-20deg);
}

#ie{
    z-index: 20;
    background-color: #0074d9;
    transform: rotate(160deg);
}

#firefox {
    z-index: 30;
    background-color: #ff851b;
    transform: rotate(20deg);
}

#chrome {
    z-index: 40;
    background-color: #2ecc40;
    transform: rotate(100deg);
}

.stats {
    float: left;
    margin-left: 50px;
}

ul {
   list-style: none;
}

li {
    position: relative;
    margin: 10px 0;
}

li::before,
li[data-name="Safari"]::after {
    content: "";
    position: absolute;
    top: 2px;
    left: -25px;
    width: 15px;
    height: 15px;
    background-color: #aaaaaa;
}

li[data-name="Chrome"]::before {
    background-color: #2ecc40;
}

li[data-name="Firefox"]::before  {
    background-color: #ff851b;
}

li[data-name="Internet Explorer"]::before  {
    background-color: #0074d9;
}
1 Симпатия

Подсмотрел и сделал чуть по своему. Долго не мог понять как быть с id и data-name=chrome…

html,
body {
width: 550px;
margin: 0;
padding: 0;
font-family: “Arial”, sans-serif;
color: #333333;
background-color: #f5f5f5;
}

main {
position: relative;
display: block;
width: 500px;
height: 300px;
margin: 0 auto;
}

h1 {
margin: 0;
margin-bottom: 10px;
padding: 10px 0;
}

.pie-container {
position: relative;
float: left;
width: 150px;
height: 150px;
border-radius: 50%;
box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.8);
}

.pie-container::after {
content: “”;
position: absolute;
top: 25%;
left: 25%;
z-index: 50;
width: 50%;
height: 50%;
color: white;
background-color: #f5f5f5;
border-radius: 50%;
box-shadow: inset 0px 0px 4px rgba(0, 0, 0, 0.8);
}

.pie {
position: absolute;
width: 100%;
height: 100%;
background-color: #aaaaaa; /safari/
border-radius: 50%;
clip: rect(0px, 75px, 150px, 0px);
}

#safari {
z-index: 10;
background-color: #aaaaaa;/safari/
transform: rotate(-20deg);
}

#ie {
z-index: 20;
background-color: #0074d9; /ie/
transform: rotate(160deg);
}

#firefox {
z-index: 30;
background-color: #ff851b; /firefox/
transform: rotate(20deg);
}

#chrome {
z-index: 40;
background-color: #2ecc40; /chrome/
transform: rotate(100deg);
}

.stats {
float: left;
margin-left: 50px;
}

ul { /*for ul??? */
list-style: none;
}

li {
position: relative;
margin: 10px 0;
}

li::before,
li::after{
content: “”;
position: absolute;
top: 2px;
left: -25px;
width: 15px;
height: 15px;
background-color: #aaaaaa;
}

li[data-name=“Chrome”]::after {
background-color: #2ecc40; /* chrome*/
}

li[data-name=“Firefox”]::after {
background-color: #ff851b; /firefox/
}

li[data-name=“Internet Explorer”]::after {
background-color: #0074d9; /ie/
}

Все вроде бы все хорошо, кроме этого:

В данном случае создаются два псевдоэлемента (before и after), но поскольку у них абсолютное позиционирование и одинаковые свойства, то накладываются друг на друга, но на самом деле Вы создали по два квадрата для каждого пункта.

А ниже уже используете свойства изменения цвета только для псевдоэлементов after, и если бы им задать любое позиционирование, например:

left: -60px;

то цветной квадрат сместиться, но на его месте останется серый квадрат (это псевдоэлемент before). Та же ошибка и у девушки выше, но только для пункта Safari.

То есть, для всех пунктов списки созданы псевдоэлементы before, а для пункта Safari создан дополнительно псевдоэлемент after, который тут ни к чему так, как свойства для этого пункта заданы в самом правиле li::before.

Я в этом фрагменте кода, описывающем квадратики, вообще обошелся без атрибута data:

li::before {
content: “”;
position: absolute;
top: 2px;
left: -25px;
width: 15px;
height: 15px;
background-color: #aaaaaa;
}

li:first-child::before {
background-color: #2ecc40;
}

li:nth-child(2)::before {
background-color: #ff851b;
}

li:nth-child(3)::before {
background-color: #0074d9;
}

2 Симпатий

мне кажется из всех подобных тем, тут самое правильное решение через: li[data-name=“N”]
сам начал использовать псевдокласс nth-of-type, что несомненно тоже приведет к 100% результату, но решение как у топик-стартера лучше имхо

2 Симпатий

Я сделал также. Только вот в теме вроде бы не было описания про применение [data-name=“N”] . Я прочитал про работу этого атрибута на стороннем ресурсе, в обучение было только то, что можно текст выводить из этого атрибута

Да, да… тоже столкнулся с этой проблемой :roll_eyes: