CSS 선택자2

메타플랫폼대표
|2024. 4. 9. 09:52
반응형

## CSS선택자2


-선택자 : 어떤 요소에 스타일을 적용할것인가에 대한 정보이다.

선택자{
속성명: 속성값;
}

-기본 선택자
-그룹 선택자
-특성(속성) 선택자
-결합 선택자
-의사 클래스
-기본 요소


-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

# 특성(속성) 선택자



-특성 선택자(속성 선택자)는 주어진 속성의 존재 여부나 그 값에 따라 요소를 선택할 수 있다.

-html태그에  클래스라는 속성이 어떤 값을 갖고 있더라도 클래스가 존재하기만 하면 선택된다.

-기존에 class는 .class로 선택자1에서 배웠었다.

[class]{
속성명: 속성값;
}

    <body>
        <h1>선택자2를 공부합니다.</h1>
        <p>첫번째 문단입니다.</p>
        <p id="id1" class="text1">두번째 문단입니다.</p>
        <p id="id2" class="text2">세번째 문단입니다.</p>
        <p id="it1" class="texas1">네번째 문단입니다.</p>
        <p id="it2" class="texas2">다섯번째 문단입니다.</p>
        <p>여섯번째 <span>문단입니다.</span></p>
    </body>
[class]{
    border: 2px solid;
}

 

-[id]도 동일하게 적용이 된다.




-클래스 속성이 있으면서 그 값이 item인 지정된 요소를 선택한다.

[class="item"]{
속성명: 속성값;
}

[class="text1"]{
    color: red;
}
[class="text2"]{
    color: blue;
}



-기호를 부호화 하여 요소를 선택하는 방식을 다양화 할 수 있다.

[class *= "it"] { 속성명: 속성값; }    = 클래스 값에 "it"가 포함되면 있으면 선택된다.


[class ^= "it"] { 속성명: 속성값; }    = 클래스 값이 "it"로 시작하면 선택된다. (OK = it1, itit)


[class $= "it"] { 속성명: 속성값; }    = 클래스 값에 "it"로 끝나면 선택된다. (OK = 2it, mitit)

[class$="1"]{
    color: red;
}
[class$="2"]{
    color: blue;
}


 

 

# 결합 선택자

-결합 선택자는 두 개 이상의 선택자를 결합시켜 결합된 조건을 만족하는 요소를 선택한다.
 # 자손 결합자
 # 형제 결합자


자식 선택자
-두 개의 선택자 중 첫 번째 선택자 요소의 자식 요소를 선택할 수 있다.


자손 선택자
-두 개의 선택자 중 첫 번째 선택자 요소의 자손 요소를 선택할 수 있다.


# div 요소 안에 위치하는 모든 p요소를 선택한다.

div p{
속성명: 속성값;
}


# div 요소의 바로 아래에 위치하는 모든 p요소를 선택한다.

div > p{
속성명: 속성값;
}

 

 

 

div p{} 적용

    <body>
        <h1>결합 선택자 시간입니다.</h1>
        <p>오늘은 결합 선택자를 공부합니다.</p>

        <div class="java">
            <p>java클래스 안의 첫번째 p태그입니다.</p>
            <p>java클래스 안의 두번째 p태그입니다.</p>
        </div>

        <div class="script">
            <p>script클래스 안의 첫번째 p태그입니다.</p>
            <p>script클래스 안의 두번째 p태그입니다.</p>
            <div class="javaScript">
                <p>javaScript클래스 안의 첫번째 p태그입니다.</p>
                <p>javaScript클래스 안의 두번째 p태그입니다.</p>    
            </div>
        </div>

        <div class="frameWork">
            <p>framWork클래스 안의 첫번째 p태그입니다.</p>
            <p>frameWork클래스 안의 두번째 p태그입니다.</p>
        </div>

        <p>결합 선택자 시간을 마칩니다.</p>
    </body>
div p{
    color: blue;
}

        <div class="java">
            <p>java클래스 안의 첫번째 p태그입니다.</p>
            <p>java클래스 안의 두번째 p태그입니다.</p>
        </div>

        <div class="script">
            <p>script클래스 안의 첫번째 p태그입니다.</p>
            <p>script클래스 안의 두번째 p태그입니다.</p>
            <div class="javaScript">
                <p>javaScript클래스 안의 첫번째 p태그입니다.</p>
                <p>javaScript클래스 안의 두번째 p태그입니다.</p>    
            </div>
        </div>
.java p{
    color: red;
}
.script p{
    color: blue;
}

 

 

div>p{} 적용

        <div class="java">
            <p>java클래스 안의 첫번째 p태그입니다.</p>
            <p>java클래스 안의 두번째 p태그입니다.</p>
        </div>

        <div class="script">
            <p>script클래스 안의 첫번째 p태그입니다.</p>
            <p>script클래스 안의 두번째 p태그입니다.</p>
            <div class="javaScript">
                <p>javaScript클래스 안의 첫번째 p태그입니다.</p>
                <p>javaScript클래스 안의 두번째 p태그입니다.</p>    
            </div>
        </div>
.script>p{
    color: blue;
}

.javaScript>p{
    color: red;
}

 

# 형제 선택자

 

-두 개의 선택자중 첫 번째 선택자 요소의 형제를 선택할 수 있다.
-부모 아래에 같은 선상에 있는 선택자


-h1 요소의 뒤에 오는 형제 중 모든 p 요소를 선택

h1 ~ p{
속성명: 속성값;
}



-h1 요소의 바로 뒤에 오는 형제 p 요소를 선택

h1 + p{
속성명: 속성값;
}

 

 

 


 

 

## 가상 클래스 (의사 클래스)



-가상 클래스 (의사 클래스)는 선택자에 추가하는 키워드로 
 요소가 어떤 특정한 상태가 되었을 때 요소를 선택하겠다는 의미이다.

-형식

선택자: 의사클래스{
속성명: 속성값;
}


-hover : 요소에 마우스를 올려놓은 상태를 의미한다.
-즉 h1요소에 마우스를 올려놓은 상태가 되면 빨간색으로 변경하겠다는 의미이다.

============================================================
|  의사 클래스 |                           의미 |
============================================================
hover | 마우스 포인터가 요소에 올라가있는 상태 |

input:hover{
    width: 100px;
    height: 30px;
    background-color: dodgerblue;
    border: none;
    border-radius: 10px;
}

 

-마우스에 버튼을 올려놓으면,

 

 

    <body>
        <input type="button" value="버튼"><br><br>
        <a href="#none">사이트 이동하기</a>
    </body>

 

-text-decoration: none = a에 기본적으로 <u>태그가 적용되있는 것을 지우기 (밑줄)

-transition: 0.5s = 버튼 은은하게 불들어오게 하기

a{
    color: black;
    text-decoration: none;
    transition: 0.5s;
}

a:hover{
    color: green;
    text-decoration: none;
}

 

 

 

-여러 버튼 활용하기

@font-face {
    font-family: "배달의민족";
    src: url(/font/BMDOHYEON_ttf.ttf);
}

#naver{
    color: green;
    text-decoration: none;
    border: 1px solid green;
    display: inline-block;
    width: 120px;
    height: 50px;
    line-height: 50px;
    text-align: center;
    transition: 1.0s;
    font-family: 배달의민족;
}

#naver:hover{
    background-color: green;
    color: white;
}

#kakao{
    color: black;
    text-decoration: none;
    border: 1px solid yellow;
    display: inline-block;
    width: 120px;
    height: 50px;
    line-height: 50px;
    text-align: center;
    transition: 1.0s;
    font-family: 배달의민족;
}

#kakao:hover{
    background-color: yellow;
    color: black;
}

#toss{
    color: blue;
    text-decoration: none;
    border: 1px solid blue;
    display: inline-block;
    width: 120px;
    height: 50px;
    line-height: 50px;
    text-align: center;
    transition: 1.0s;
    font-family: 배달의민족;
}

#toss:hover{
    background-color: blue;
    color: white;

}

 


------------------------------------------------------------------------------------------------------
active | 사용자가 요소를 활성화 했다.(EX 마우스 클릭) |

 

-버튼을 눌렀을 때 활성화 되는 기능

-hover가 마우스를 올려놓을 때 변화되는 기능이라면, active는 눌렀을 때 변화되는 기능이다.

#naver:active{
    background-color: white;
    color: green;
}

 


------------------------------------------------------------------------------------------------------
focus | 요소가 포커스 받고 있다. |

 

input{
    width: 250px;
    height: 50px;
}

input:focus{
    background-color: skyblue;
    transition: 1.0s;
}


------------------------------------------------------------------------------------------------------
disabled | 비활성화 사태의 요소 |

 

<input type="text" placeholder="입력하시면 됩니다" disabled>

 

-disabled는 로그인을 성공했을시 데이터로 파악을해서 비활성화 시켰을 때 어떤 기능으로 처리를 할지 정할 수 있다.


------------------------------------------------------------------------------------------------------
nth-child() | 형제 사이의 순서에 따라 요소를 선택 |

 

    <body>
        <div id="flex">
            <div class="box">1번 box</div>
            <div class="box">2번 box</div>
            <div class="box">3번 box</div>
            <div class="box">4번 box</div>
            <div class="box">5번 box</div>
        </div>
    </body>
#flex{
    display: flex;
    justify-content: space-between;
}

.box{
    width: 50px;
    height: 50px;
    background-color: orange;
    border: 1px solid;
    box-sizing: border-box;
    text-align: center;
}

 

-:ntn-child(지정할 객체){}로 하나의 객체만 움직이고 색을 변하게 할 수 있다.

.box:nth-child(3){
    background-color: skyblue;
    position:relative;
    top: 50px;
}

 

-(2n)이라는 숫자를 넣어서 짝수 번호에 있는 객체만 지정해줄 수 있다.

.box:nth-child(2n){
    background-color: skyblue;
    position:relative;
    top: 50px;
}



 


 

## 의사 요소 (pseudo-elements)



-의사요소(pseudo-elements)는 선택자에 추가하는 키워드로 이를 이용하면
 선택한 요소의 특정 부분에 대한 스타일을 정의할 수 있다.

기본 형식

선택자::의사요소{
속성명: 속성값;
}


Example)

li::first-letter{
font-size: 20px;
}

-li요소의 첫 번째 글자만 크기를 20px;로 변경하겠다는 의미이다. (기본은 16px)


============================================================
|  의사 요소  |                           의미 |
============================================================
after | 요소의 뒤에 의사 요소를 생성 및 추가 한다. |
-----------------------------------------------------------------------------------------------------
before | 요소의 앞에 의사 요소를 생성 및 추가 한다. |
-----------------------------------------------------------------------------------------------------
first-line | 블록 레벨 요소의 첫 번째 선에 스타일을 적용한다. |

-----------------------------------------------------------------------------------------------------
marker | 목록 기호의 스타일을 정의한다. |
-----------------------------------------------------------------------------------------------------
placeholder | 입력 요소의 플레이스홀더(자리표시자) 스타일을 적용한다. |
============================================================




-----------------------------------------------------------------------------------------------------------------------------------------------------------------

# first-line 
-first-line : 블록 레벨 요소의 첫 번째 선에 스타일을 적용한다.

p::first-line{
    color: red;
}

p::first-letter{
    color: yellow;
}




-----------------------------------------------------------------------------------------------------------------------------------------------------------------

# marker

-marker : 목록(ul, ol)의 구분점을 의미한다.


    <body>
        <ul>
            <li>햄버거</li>
            <li>피자</li>
            <li>샌드위치</li>
            <li>파스타</li>
        </ul>
    </body>
li::marker{
    color: red;
    font-size: 30px;
}

 



-----------------------------------------------------------------------------------------------------------------------------------------------------------------

# placeholder
-placeholder : 입력 요소의 플레이스홀더(자리표시자) 스타일을 적용한다.



    <body>
        <input type="text" placeholder="입력하세요">
    </body>
input::placeholder{
    color: green;
    font-size: 20px;
    font-family: 배달의민족;
}





-----------------------------------------------------------------------------------------------------------------------------------------------------------------

# before, after
-before : 요소의 앞에 의사 요소를 생성 및 추가 한다.

-전에 리스트 모양 custom 해서 사용할 때 처럼 .(해당클래스명) li::before{content: '♥'} 사용법이 같다.
-after : 요소의 뒤에 의사 요소를 생성 및 추가 한다.

 

 

    <body>
        <p>이것이 원본 문단입니다.</p>
    </body>
p::before{
    content: "p태그 앞에 추가합니다.";
    color: orange;
}

p::after{
    content: "p태그 뒤에 추가합니다.";
    color: green;
}

 

반응형

'CSS↗' 카테고리의 다른 글

오류해결)CSS 변경 후 적용안되는 오류  (0) 2024.06.09
CSS 언어 정리  (0) 2024.06.04
CSS float / Position / Flexbox  (0) 2024.04.08
CSS 요소의 배경 설정(background)  (0) 2024.04.08
CSS padding, margin / 박스 크기 계산  (0) 2024.04.08