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;
}
Подсмотрел и сделал чуть по своему. Долго не мог понять как быть с 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;
}
мне кажется из всех подобных тем, тут самое правильное решение через: li[data-name=“N”]
сам начал использовать псевдокласс nth-of-type, что несомненно тоже приведет к 100% результату, но решение как у топик-стартера лучше имхо
Я сделал также. Только вот в теме вроде бы не было описания про применение [data-name=“N”] . Я прочитал про работу этого атрибута на стороннем ресурсе, в обучение было только то, что можно текст выводить из этого атрибута
Да, да… тоже столкнулся с этой проблемой
Да, до сих пор селекторы атрибутов были лишь вскользь упомянуты в 5 части тренажёра Продвинутый HTML и CSS при работе с формами (https://htmlacademy.ru/courses/46). В подобных случаях пригождается один из основных навыков всех айтишников: умение пользоваться гуглом
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;
}