Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Как работает :nth-child() ? (https://javascript.ru/forum/xhtml-html-css/66098-kak-rabotaet-nth-child.html)

Black_Star 24.11.2016 21:50

Как работает :nth-child() ?
 
Добрый день уважаемые. Я пришел к пониманию того, что не правильно понимал, то как работает псевдокласс :nth-child() :) Помогите разобраться.
Если элементы вложены в один div проблем ни каких не возникает, а вот если элементов с классом много, то у меня возникают проблемы. Приведу пример.
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		.rabbit{
			width: 100px;
			height: 100px;
			float: left;
			background-color: black;
			margin: 5%;
		}

		.bodyR{
			width: 30px;
			height: 30px;
			float: left;
			background-color: green;
			margin: 10%;
		}

		.eyes {
			width: 10px;
			height: 10px;
			float: left;
			background-color: yellow;
			margin: 20%;
		}

.bodyR:nth-child(2){
	background-color: pink;
}

.eyes:nth-child(3){
	background-color: orange;
}

	</style>
</head>
<body>
	  <div class="rabbit">
            <div class="bodyR">
                <div class="eyes"></div>    
            </div>
        </div>
       <div class="rabbit">
            <div class="bodyR">
                <div class="eyes"></div>    
            </div>
        </div>
        <div class="rabbit">
            <div class="bodyR">
                <div class="eyes"></div>    
            </div>
        </div>
        <div class="rabbit">
            <div class="bodyR">
                <div class="eyes"></div>    
            </div>
        </div>
        <div class="rabbit">
            <div class="bodyR">
                <div class="eyes"></div>    
            </div>
        </div>

</body>
</html>

Подскажите, почему мне не удается, разукрасить фон у второго элемента с классом .bodyR и у третьего элемента с классом .eyes.
Я думал что при работе с классами :nth-child сначала узнает сколько всего элементов имеет данный класс, а затем нужному по-порядку элементу задает свойства. Но нет)

Aetae 25.11.2016 03:03

:nth-child()

join 25.11.2016 03:45

так как .rabbit имеет по одному потомку .bodyR и .eyes,
эти стили не найдут вторых и третьих потомков, их там просто не существует.
.bodyR:nth-child(2){
    background-color: pink;// ищет второго ребенка в теге с классом .bodyR
}
 
.eyes:nth-child(3){
    background-color: orange;// ищет третьего ребенка в теге с классом .eyes
}


Это сработает так:
.rabbit:nth-of-type(2) .bodyR{
    background-color: pink;
}
 
.rabbit:nth-of-type(3) .eyes{
    background-color: orange;
}

//only for your layout html

body :nth-child(2) .bodyR{
    background-color: pink;
}
body :nth-child(3) .eyes{
    background-color: pink;
}

Black_Star 25.11.2016 08:52

Спасибо, за объяснение


Часовой пояс GMT +3, время: 03:14.