오봉이와 함께하는 개발 블로그

CSS 선택자 본문

FE/CSS

CSS 선택자

오봉봉이 2021. 12. 3. 17:31
728x90

FrontEnd_day2 정리 (2021.12.03 금요일)

CSS 선택자 유형

태그 선택자

  • 태그명 사용
  • 요소(element) 선택자라고도 함
  • HTML문서에 있는 모든 같은 태그에 동일하게 적용
  • 태그명 {속성명:값;}
h3 {
    background-color:#000;
    color:#fff;
    width:50%;
    margin-left:20px;
}
<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>태그 선택자</title>
        <style type="text/css">
            /* h3 태그에 스타일 적용 css 주석은 이렇게 사용 */
            h3 {
            background-color:#000;
            color:#fff;
            width:50%;
            margin-left:20px;
        }
        </style>


    </head>

    <body>
        <h1>태그 선택자 사용하기</h1>
        <hr>
        <h2>두부감자조림</h2> 
        <h3>재료</h3>
        <ul>
            <li>감자 1개</li>
            <li>두부 1/2모</li>
            <li>꽈리고추 10개</li>
            <li>홍고추 1개</li>
        </ul>
        <h3>조리법</h3>
        <ol>
            <li>감자는 껍질을 벗기고 돌려가면서 어슷하게 썰어 찬물에 담가놓고 두부는 도톰하게 한입크기로 썰며 꽈리고추, 홍고추는 어슷썬다.</li>
            <li>첫번째 썰은 재료에 두부를 팬에 기름을 두르고 노릇노릇하게 앞뒤로 지져 기름은 뺀다.</li>
            <li>냄비에 감자와 홍고추를 담고 조림장을 반분량만 넣는다.</li>
            <li>3번째를 끓이다가 감자가 반정도 익으면, 두부와 남은 양념장을 넣는다.</li>
            <li>윤기나게 졸여지면 꽈리고추를 마지막에 넣어 다시한번 살짝 졸여 조린다.</li>
        </ol>
    </body>
</html>

아이디 선택자

  • #을 사용
  • 문서에서 트정 부분에만 필요한 스타일 적용할 때 사용
  • 필요한 부분에 유일한 아이디를 지정하고 CSS 적용
  • 식별 선택자라고도 함
  • 사용법
    • #idName{속성명:값;}
    • 태그에 반드시 id로 지정되어 있어야 함.
    • <태그명 id="idName"> </태그명>
<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>아이디 선택자 사용하기</title>
        <style type="text/css">
        #cookBox {
            border: 3px solid #000; /*테두리 굵기 유형 색상(순서는 상관 없지만 저긴 저런 폼으로 작성됨)*/
            width: 500px;
            padding: 10px; /*안쪽 여백*/
            margin-left: 70px; /*바깥쪽 여백*/
            font-size: 12pt;
            color:#777;
            background-color:gold;
        }
        #sourceBox {
            background-color: #ffc;
            line-height: 150%; /*행 높이*/
            list-style: none; /*목록(리스트) 글머리 기호 안 보이게*/
            width: 200px;
            color: red;
            padding: 5px;
            border: 1px solid #000;
            margin-left: 30px;

        }
        </style>
    </head>

    <body>
        <h1>아이디 선택자 사용하기</h1>
        <hr>
        <div id="cookBox">
            <h2>도가니탕</h2> 
            <h3>재료-4인분 기준</h3>
            <ul id="sourceBox">
                <li>도가니 1개</li>
                <li>양지머리 300g</li>
                <li>무 200g</li>
                <li>마늘 5쪽</li>
                <li>대파 3뿌리</li>
                <li>생강 1쪽</li>
            </ul>
            <h3>조리법</h3>
            <ol>
                <li>도가니(무릎뼈)는 뼈 부분을 4∼5 등분으로 잘라 깨끗이 씻어 놓는다. </li>
                <li>양지머리는 물에 한번 씻어 놓는다.</li>
                <li>무는 3cm 두께로 둥글게 썰어 놓는다. </li>
                <li>솥에 물을 붓고 도가니와 마늘, 양지머리, 파, 저민 생강을 넣고불에 올려놓아 끓기 시작하면 중간 불에서 2∼3시간 정도 서서히 고면서 중간에 무 토막을 넣어 함께 끊인다. </li>
                <li>양지머리와 무가 푹 익었으면 건져서 먹기 좋게 썰어 다시 솥에 넣고 소금으로 간을 한다. </li>
                <li>도가니를 끊인 국물이 뽀얗게 우러나면 뚝배기나 탕그릇에 고기와 무를 담아 국물을 붓고 대파를 송송 썰어 얹어 낸다.</li>
            </ol>
        </div>
    </body>
</html>

클래스 선택자

  • . 사용(도트 선택자)
  • 문서에서 특정 그룹에 필요한 스타일 적용할 때 사용
  • .className{속성명:값;}
  • HTML 태그의 class속성이 지정되어 있어야 함
    • <태그명 class="className"></태그명>
<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>클래스 선택자 사용하기</title>
        <style type="text/css">
            .cookTitle {
                background-color: #f03;
                color:#fff;
                padding: 5px;
                border: 1px solid #000;
                margin-left: 20px;
            }
            .cookTitle2 {
                background-color: #ffcc33;
                padding: 5px;
                border: 1px solid #f00;
                margin-left: 20px;
            }
            .redDotLine {
                color:#f00;
                font-weight: bold;
                border-bottom: 1px dashed #f00;
            }
        </style>    
    </head>

    <body>
        <h1>클래스 선택자 사용하기</h1>
        <hr>
        <h2>닭칼국수</h2> 
        <h3 class="cookTitle">재료-4인분 기준</h3>
        <ul>
            <li>밀가루 3컵</li>
            <li>닭 1/2마리 </li>
            <li>호박 1/2개 </li>
            <li>부추 50g</li>
            <li>생강,소금, 후추, 참기름</li>
        </ul>
        <h3 class="cookTitle2">조리법</h3>
        <ol>
            <li><span class="redDotLine">밀가루</span>에 <span class="redDotLine">소금과 달걀</span>을 넣고 반죽하여 밀대로 밀어 0.5cm 두께로 썬다.쟁반에 펼쳐 굳지 않게 가제로 덮어놓는다 </li>
            <li>첫번째 썰은 재료에 두부를 팬에 기름을 두르고 노릇노릇하게 앞뒤로 지져 기름은 뺀다. </li>
            <li>닭은 내장과 필요없는 지방을 제거하고 깨끗이 씻는다.생강을 저며 넣고 찬물을 부어 푹 삶아 닭고기는 살을 곱게 찢어 소금, 후추, 참기름에 양념하여 무쳐 놓고 국물은 가제로 걸러 육수로 사용한다. </li>
            <li>호박은 채 썰고 부추도 다듬어 씻어 4cm 길이로 썰고, 홍고추, 파, 마늘은 곱게 다진다.간장, 깨소금, 참기름을 섞어 양념장을 만든다. </li>
            <li>닭국물이 끓으면 썰어 놓은 칼국수를 넣어 서로 붙지 않게 한소끔 끓인 다음 호박과 부추, <span class="redDotLine">양념한 닭고기</span>를 넣고 다시 한소끔 끓여서 양념장과 김치를 곁들여 먹는다.</li>
        </ol>
    </body>
</html>

속성 선택자

  • HTML 태그의 속성 값에 따라 선택자로 정의
  • <a title="산업기사">산업기사</title>
  • 예: <a> 속성 값으로 선택해서 스타일 지정
  • 문법
    • 태그명[속성명=”값”]
    • 태그명[속성명^=”값”]
    • 태그명[속성명$=”값”]
    • 태그명[속성명*=”값”]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>속성 선택자</title>
    <style>
        a[href="http://www.naver.com"] {
            color:green;
            /*a 태그의 href 속성에 스타일 적용*/
        }
        /* a 태그의 href속성 값 중에 #으로 시작하는 속성 값에 스타일 적용 */
        a[href^="#"] {
            background-color: gold;
        }

    </style>
</head>
<body>
    <h3>사이트로 이동</h3>
    <a href="http://www.naver.com">네이버로 이동</a>
    <h3>다른 문서로 이동</h3>
    <a href="first.html">index로 이동</a>
    <h3>문서 내 다른 영역으로 이동</h3>
    <a href="#javascript">id가 javascript인 곳으로 이동</a><br> <br>
    <a href="#jquery">id가 jquery인 곳으로 이동</a><br> <br>
    <a href="#css">id가 css인 곳으로 이동</a><br> <br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <h3 id="javascript">javascript</h3>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <h3 id="jquery">jquery</h3>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br>
    <h3 id="css">css</h3>
</body>
</html>

상태 선택자

  • 태그의 상태로 선택해서 스타일 적용
  • 상태 : 체크된 상태, 포커스 받은 상태, 사용 가능 또는 불가능한 상태
  • 선택자:checked - 체크된 input 태그 선택
  • 선택자:focus - 포커스를 받은 input 태그 선택
  • 선택자:enabled - 사용 가능한 input 태그 선택
  • 선택자:disabled - 사용 불가능한 input 태그 선택
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>상태 선택자</title>
    <style type="text/css">
        input:enabled{background-color: white;}
        input:disabled{background-color: black;}
        input:focus{background-color: orange;}
    </style>
</head>
<body>
    <h2>사용 가능</h2>
    비밀번호 : <input type="password" size="10">
    <h2>사용 불가능</h2>
    아이디 : <input type="text" size="10" value="abcd" disabled>
</body>
</html>

자식 / 자손 선택자(상속 선택자)

  • 자식/자손 개념

  • 자식 선택자 : > 부호 사용
    • 선택자 > 자식 선택자
    • 선택자A > 선택자B
    • #header > h1
  • 자손(후손) 선택자 : 띄어 쓰기(스페이스바)
    • 선택자 자손선택자
    • 선택자A 선택자B
    • #header h1
    • #pageNev ul li a:hover

first-child 선택자

  • 첫 번째 자손 선택
    • .wrap div:first-child
  • 두 번째 자손 선택
    • .wrap div:first-child+div
  • 또는 .wrap div:nth-child(n)
<style type="text/css">
        /* content의 모든 자손 */
        #content div {
            width: 400px;
            height: 50px;
            border: solid 1px black;
        }
        /* 첫 번째 자손 */
        #content div:first-child {
            background-color: yellow;
        }
        /* 두 번째 자손 */
        #content div:first-child + div {
            background-color: green;
        }
        /* 세 번째 자손 */
        #content div:nth-child(3) {
            background-color: gold;
        }
        /* 네 번째 자손 */
        #content div:nth-child(4) {
            background-color: pink;
        }
        /* div :nth-child(4) < 와 같이 콜론 전/후로 띄어쓰기는 하면 안됨.*/
    </style>
nth-child 예제
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
        #stdTable {
            margin: 0 auto;
            border-collapse: collapse;
        }
        #stdTable th {color: white; background-color: blue;}
        #stdTable th.name {width: 100px;}
        #stdTable th.email {width: 200px;}
        #stdTable td {height: 20px;}
        /* 짝수 행 선택 */
        #stdTable tr:nth-child(3n) td {
            background-color: yellow;

        }
    </style>
</head>
<body>
    <table id="stdTable" border="1">
        <tr><th class="name">이름</th><th class="email">이메일</th></tr>
        <tr><td><td></td></td></tr>
        <tr><td><td></td></td></tr>
        <tr><td><td></td></td></tr>
        <tr><td><td></td></td></tr>
        <tr><td><td></td></td></tr>
        <tr><td><td></td></td></tr>
        <tr><td><td></td></td></tr>
        <tr><td><td></td></td></tr>
        <tr><td><td></td></td></tr>
        <tr><td><td></td></td></tr>
    </table>
</body>
</html>

동적 반응 선택자

  • active
    • 마우스를 클릭한 태그 선택
  • hover
    • 마우스를 올린 태그
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
        /* content의 모든 자손 */
        #content div {
            display: inline-block;
            background: blue;
            width: 100px;
            height: 50px;
        }
        /* 마우스 올렸을 때 */
        #content div:hover {
            background: yellow;
        }
        #content div:active {
            background: red;
        }
    </style>
</head>
<body>
    <div id="content">
        <div></div><div></div><div></div><div></div>
    </div>
</body>
</html>
728x90

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

CSS - 반응형 웹  (0) 2021.12.06
CSS 예제  (0) 2021.12.06
외부 CSS 파일 HTML에 적용  (0) 2021.12.03
CSS 속성  (0) 2021.12.03
CSS 개요  (0) 2021.12.03
Comments