본문 바로가기
WEB/CSS

[CSS] nth-child & nth-of-type

by DeveloperCat 2023. 9. 17.
반응형

[html]

<!DOCTYPE html>

<html lang="ko">

       <head>

               <meta charset="utf-8">

               <link rel="icon" href="./images/favicon.png"/>

               <title>제천밥상</title>

               <link rel="stylesheet" href="./css/main.css" />

       </head>

       <body>

               <a href="https://www.naver.com/">

                      <div class="event">

                             지금 가입하면, 배송비 무료 쿠폰 증정!!!

                      </div>

               </a>

              

               <div class="inner">

                      <img src="./images/category.png" alt="이미지 없음">

                      <img src="./images/starbucks_logo.png" alt="이미지 없음">

                      <ul class="up_menu">

                             <li>

                                    <a href="javascript:void(0)">로그인</a>

                             </li>

                             <li>

                                    <a href="javascript:void(0)">회원가입</a>

                             </li>

                      </ul>

                      <input type="text" />

                      <img src="./images/search.png" alt="이미지 없음">

               </div>

       </body>

</html>

[css]

@charset "EUC-KR";


 

body{

       margin : 0px;

       padding: 0px;

}


 

a{

       text-decoration-line: none;

}


 

.event{

       background-color: green;

       height: 50px;

       color: white;

       text-align: center;   /*가로만 가운데가 상태가 된다*/

       line-height: 40px;    /*세로 가운데 정렬 설정한다*/

       cursor: pointer;

}


 

.inner{

       background-color: orange;

       width: 1300px;

       margin: auto;

       position: relative;

}


 

.inner img:nth-child(1){

       width: 75px;

       height: 85px;

       margin: 20px;

       position: absolute;

    top: 0;

    bottom: 0;

    left: 0;

    cursor: pointer;

}


 

.inner img:nth-child(2){

       width: 75px;

       height: 75px;

       margin: 20px 50px;

       position: absolute;

    top: 0;

    bottom: 0;

    left: 100px;

    cursor: pointer;

}


 

.up_menu{

       position: absolute;

    top: 10px;

    right: 0;

       display: flex;

       list-style-type:none;

}


 

.up_menu li{

       position: relative;

}


 

.up_menu li:first-child:before {

  display: none;

}


 

.up_menu li::before {

  content: "";

  width: 1px;

  height: 12px;

  background-color: lightgray;

  position: absolute;

  top: 0;

  bottom: 0;

  margin: auto;

}


 

.up_menu li a {

  padding: 11px 16px;

  display: block;

  font-size: 13px;

  color: #656565;

}


 

.inner input{

  position: absolute;

  top: 70px;

  bottom: 0;

  left: 380px;

  width:200px;

  height: 34px;

  border: none;

  border-bottom: solid #669900 3px;

  font-size: 20px;

  text-align: right;

}


 

.inner input:focus{

       outline: none;

}


 

.inner .material-icons {

  src: "./images/search.png";

  height: 24px;

  position: absolute;

  top: 90px;

  bottom: 0;

  left: 600px;

  margin: auto;

}


 

.inner img:nth-child(3){

       width: 75px;

       height: 75px;

       margin: 20px 50px;

       position: absolute;

    top: 0;

    bottom: 0;

    left: 700px;

    cursor: pointer;

}

현재 위와 같이 코드가 짜여져 있다.

이상하게도 search 버튼이 위와 같이 배치가 된다.

css에서 설정한 내용들이 전혀 먹지를 않는 상황;;;

.inner img:nth-of-type(3){

       width: 75px;

       height: 75px;

       margin: 20px 50px;

       position: absolute;

    top: 0;

    bottom: 0;

    left: 700px;

    cursor: pointer;

}

그래서 search버튼 스타일에 관한 부분을 nth-child에서 nth-of-type으로 바꿔주었더니 설정한 스타일로 잘 적용된다.

왜 이런 상황이 발생했는지 알아보자.

 

:nth-child(n)

: 부모안에 모든 요소 중 n번째 요소를 선택

 

 

img:nth-of-type(n)

: 부모안에 n번째 img요소를 선택

 

 

그럼 혹시…

.inner img:nth-child(5){

       width: 75px;

       height: 75px;

       margin: 20px 50px;

       position: absolute;

    top: 0;

    bottom: 0;

    left: 700px;

    cursor: pointer;

}

3에서 5로 바꾸니까 nth-child를 써도 잘 동작한다…

하지만, 애초에 내가 원한 기능은 nth-of-type이었고,

이게 더 맘에 드니까 앞으로 이 기능을 쓰려고 한다.

반응형

'WEB > CSS' 카테고리의 다른 글

[CSS] Display  (0) 2023.10.12
[CSS] line-height  (0) 2023.10.12
[CSS] 폰트 설정하기  (0) 2023.10.12
[CSS] <li> 리스트의 점 없애기  (0) 2023.09.17
[CSS] DIV 텍스트 가운데 정렬(가로, 세로)  (0) 2023.09.17