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

6 лайков

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

4 лайка

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

5 лайков

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

Да, до сих пор селекторы атрибутов были лишь вскользь упомянуты в 5 части тренажёра Продвинутый HTML и CSS при работе с формами (https://htmlacademy.ru/courses/46). В подобных случаях пригождается один из основных навыков всех айтишников: умение пользоваться гуглом :wink: :smiley:

100%

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: 0 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 0 0 4px rgba(0, 0, 0, 0.8);
}

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

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

.stats ul {
list-style: none;
}

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

.stats li::before {
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;
}

Тоже задумался над решением, потому что знал про селекторы по атрибуту, но при этом не проходил их в академии. Но как по мне лучше всего их использовать вместе с явно заданным родителем, чтобы перестраховаться:

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: 0 1px 3px rgba(0, 0, 0, 0.8);
}

.pie-container::before {
  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 0 0 4px rgba(0, 0, 0, 0.8);
}

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

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

.stats ul {
  list-style: none;
}

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

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

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

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

.stats [data-name="Internet Explorer"]::before {
  background-color: #0074d9;
}