[TIL] HTML / CSS 정리

μ‹ μž¬μš±Β·2023λ…„ 3μ›” 7일
0
post-thumbnail

πŸ“’ 였늘 κ³΅λΆ€ν•œ λ‚΄μš©

πŸ”μˆ˜μ—…λͺ©μ°¨

[1-1] HTML
[1-2] CSS

1️⃣ HTML


βœ… HTMLλž€?


ν•˜μ΄νΌν…μŠ€νŠΈ λ§ˆν¬μ—… μ–Έμ–΄ (HyperText Markup Language)
λ„€νŠΈμ›Œν¬κ°€ μ—°κ²°λœ μ›ΉνŽ˜μ΄μ§€μ—μ„œ λ¬Έμ„œλ₯Ό μž‘μ„±ν•˜κ³ , 읽고, κ³΅μœ ν•˜κΈ° μœ„ν•΄μ„œ λ§Œλ“€μ–΄μ§„ 체계닀.
HTML μ–Έμ–΄μ˜ λ³Έμ§ˆμ€, μ‚¬μš©μžκ°„μ— μ†Œν†΅ν•˜κΈ° μœ„ν•œ 정해진 약속이며,
νƒœκ·Έλ₯Ό 톡해 μ›ΉνŽ˜μ΄μ§€μ—μ„œ λ³΄μ—¬μ§ˆ λ‚΄μš©μ„ λ‚˜νƒ€λ‚Έλ‹€.

⏩ νƒœκ·Έμ˜ μ’…λ₯˜

πŸ“š νƒœκ·Έμ˜ μ’…λ₯˜ MDN




βœ… HTML의 핡심


⏩ νƒœκ·Έμ˜ νŠΉμ§• - Block, Inline

  • HTML에 μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  νƒœκ·Έλ“€μ€ 각자의 μ‚¬μ΄μ¦ˆλ₯Ό 가지고 μžˆλ‹€.
    • block : νŽ˜μ΄μ§€μ˜ κ°€λ‘œ 넓이 전체λ₯Ό μ°¨μ§€ν•˜λŠ” μš”μ†Œ
    • inline : μžμ‹ μ˜ 크기만큼만 μ°¨μ§€ν•˜λŠ” μš”μ†Œ

⏩ 쒅속 νƒœκ·Έ

  • μ’…μ†νƒœκ·Έλž€ λ‹€λ₯Έ νƒœκ·Έμ™€ ν•¨κ»˜ μƒν˜Έμž‘μš©μ„ν•΄μ•Ό μž‘λ™ν•˜λŠ” νƒœκ·Έλ₯Ό λ§ν•œλ‹€.
    • select : μ„ νƒλ°•μŠ€ νƒœκ·Έ
    • ol , ui : λͺ©λ‘ νƒœκ·Έ
    • table : ν‘œ νƒœκ·Έ



2️⃣ CSS


βœ… CSSλž€?


CSSλŠ” λ‹¨μˆœν•œ λ¬Έμ„œ ν˜•νƒœμΈ HTML을 예쁘게 κΎΈλ©°μ£Όκ³  ꡬ쑰λ₯Ό μž‘μ•„μ£ΌλŠ” 역할을 ν•œλ‹€.

⏩ CSS κΈ°λ³Έ μš©λ²•

  • CSS ꡬ문은 μ„ νƒμž(Selector) , μ„ μ–Έ(Declaration)

    • μ„ νƒμž(Selector) : μ–΄λ–€ HTML μš”μ†Œλ₯Ό μ„ νƒν•΄μ„œ μŠ€νƒ€μΌμ„ μ μš©ν•  것인지 지정
    • μ„ μ–Έ(Declaration) : ꡬ체적으둜 μ–΄λ– ν•œ μŠ€νƒ€μΌμ„ μ„ νƒμžμ— μ μš©ν•  것인지 지정

  • 선언은 λ‹€μ‹œ 속성(property) , 속성값(property value) 의 ꡬ쑰λ₯Ό 가지고 μžˆλ‹€.

    • 속성(Property) : μ μš©ν•˜κ³ μž ν•˜λŠ” μŠ€νƒ€μΌμ˜ μ’…λ₯˜λ₯Ό κ²°μ •
    • 속성 κ°’(Property value) : ν•΄λ‹Ή 속성을 μ •ν™•ν•˜κ²Œ μ–΄λ–€ κ°’μœΌλ‘œ 지정할 것인지 κ²°μ •



βœ… CSS μ„ νƒμž


⏩ νƒœκ·Έ μ„ νƒμž

div {
    background-color : red;
}

⏩ id μ„ νƒμž

#id {
    property : property value;
}

⏩ class μ„ νƒμž

.box {
    border : 2px solid red;
}

⏯ 가상 클래슀 μ„ νƒμž

  • μ„ νƒμž 뒀에 :가상 이벀트 λ₯Ό 뢙이면 νŠΉμ • μ΄λ²€νŠΈλ§ˆλ‹€ 적용 ν•  μŠ€νƒ€μΌμ„ μ„€μ • ν•  수 있으며, 이λ₯Ό 가상 클래슀라 ν•œλ‹€.

    • :nth-child(n) : λͺ¨λ“  ν˜•μ œ μš”μ†Œ 쀑 n번째 μš”μ†Œλ₯Ό μ„ νƒν•˜λŠ” 가상 클래슀 μ„ νƒμž
    • :nth-of-type(n) : ν˜•μ œ μš”μ†Œ 쀑 νŠΉμ • ν˜•μ œμ˜ n번째 μš”μ†Œλ₯Ό μ„ νƒν•˜λŠ” κ°€μƒμ„ νƒμž
    • :active : ν™œμ„±ν™”λœ μš”μ†Œλ₯Ό 선택 ν•˜λŠ” 가상 클래슀 μ„ νƒμž
    • :focus : focusλ₯Ό λ°›κ³ μžˆλŠ” μž…λ ₯μ°½λ“€μ˜ μš”μ†Œλ₯Ό 선택 ν•˜λŠ” 가상 클래슀 μ„ νƒμž
    • :visited : μ‚¬μš©μžκ°€ λ°©λ¬Έν•œ 적 μžˆλŠ” 링크λ₯Ό 선택 ν•˜λŠ”κ°€μƒ 클래슀 μ„ νƒμž

⏯ 가상 μš”μ†Œ μ„ νƒμž

  • :before , :after : htmlμš”μ†Œλ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³ , css만으둜 가상 μš”μ†Œλ₯Ό μΆ”κ°€ν•΄ 선택할 수 μžˆλ‹€.




βœ… λ°•μŠ€ λͺ¨λΈ


λ°•μŠ€λͺ¨λΈμ€ HTML μš”μ†Œλ₯Ό νŒ¨λ”©(padding) , ν…Œλ‘λ¦¬(border) , λ§ˆμ§„(margin) 그리고 λ‚΄μš©(content) 으둜 κ΅¬λΆ„ν•œλ‹€.

⏩ box-sizing

  • content-box : Content μ˜μ—­μ„ κΈ°μ€€μœΌλ‘œ box의 sizeλ₯Ό μ μš©ν•œλ‹€. (κΈ°λ³Έκ°’)
  • border-box : Border μ˜μ—­μ„ κΈ°μ€€μœΌλ‘œ box의 sizeλ₯Ό μ μš©ν•œλ‹€.



βœ… μ •λ ¬


μ •λ ¬μ˜ λ°©λ²•μœΌλ‘œ κ°€μž₯많이 μ‚¬μš©λ˜λŠ” λ°©λ²•μœΌλ‘œλŠ” flex, position, gridκ°€ μžˆλ‹€.

⏯ Flex

⏯ grid




βœ… CSS 상속


기본적으둜 cssλŠ” λΆ€λͺ¨ μš”μ†Œμ— μ§€μ •ν•œ 속성값을 μžμ‹ μš”μ†Œμ—κ²Œλ„ μƒμ†ν•΄μ„œ μ μš©ν•œλ‹€.
ν•˜μ§€λ§Œ, λͺ¨λ“  속성이 μƒμ†λ˜λŠ” 것은 μ•„λ‹ˆλ‹€.

⏩ 상속 λ˜λŠ” 속성, 상속 λ˜μ§€ μ•ŠλŠ” 속성

⏩ CSS μƒμ†μ˜ μš°μ„ μˆœμœ„ - Cascading(μΊμŠ€μΌ€μ΄λ”©)

  • μ—¬λŸ¬κ°œμ˜ 상속 속성이 κ²Ήμ³€λ‹€κ³  ν•  λ•Œ, Cascadingμ΄λΌλŠ” μ΄λ¦„μ˜ κ·œμΉ™μ΄ μš°μ„ μˆœμœ„λ₯Ό κ²°μ •

  • Cascading의 κΈ°μ€€

    • μ€‘μš”λ„ : CSSκ°€ μ„ μ–Έλœ μœ„μΉ˜μ— 따라 μ€‘μš”λ„λ₯Ό νŒλ‹¨ν•©λ‹ˆλ‹€.
      λΈŒλΌμš°μ € μŠ€νƒ€μΌ μ‹œνŠΈ < μ‚¬μš© μŠ€νƒ€μΌμ‹œνŠΈ < 개발자 μŠ€νƒ€μΌ μ‹œνŠΈ
    • ꡬ체성(λͺ…μ‹œλ„) : 선택할 λŒ€μƒμ„ ꡬ체적으둜 νŠΉμ •ν• μˆ˜λ‘ λͺ…μ‹œλ„κ°€ 높아진닀.
      λΆ€λͺ¨μ—κ²Œ 상속받은 속성 < 전체 μ„ νƒμž < νƒœκ·Έ μ„ νƒμž < 클래슀 μ„ νƒμž, 가상 μ„ νƒμž < ID μ„ νƒμž
    • μ„ μ–Έμˆœμ„œ : λ‚˜μ€‘μ— μ„ μ–Έν•œ μŠ€νƒ€μΌμ΄ μš°μ„  μ μš©λœλ‹€.



βœ… 폰트


⏩ μ›Ήν°νŠΈ μ‚¬μš©

⏩ 폰트 κ΄€λ ¨ 속성




βœ… λ‹¨μœ„


CSSμ—λŠ” μ‚¬μš©ν•  수 μžˆλŠ” λ‹¨μœ„λŠ” 크게 μ ˆλŒ€ λ‹¨μœ„ 와 μƒλŒ€ λ‹¨μœ„ 둜 λΆ„λ₯˜λœλ‹€.

⏩ μ ˆλŒ€ λ‹¨μœ„

  • μ™ΈλΆ€ μš”μΈμ˜ 영ν–₯을 받지 μ•Šκ³  μ ˆλŒ€μ μΈ 값을 μ§€λ‹ˆλŠ” λ‹¨μœ„

⏩ μƒλŒ€ λ‹¨μœ„

  • μ™ΈλΆ€ μš”μΈμ˜ 영ν–₯을 λ°›μ•„ μœ λ™μ μΈ 값을 μ§€λ‹ˆλŠ” λ‹¨μœ„
  • μƒλŒ€λ‹¨μœ„ : vw / vh



βœ… λ°°κ²½


⏩ λ°°κ²½ 속성




βœ… 색상


색상을 ν‘œκΈ°ν•  수 μžˆλŠ” λ°©λ²•μ—λŠ” 3가지 방법이 μžˆλ‹€.

⏩ 색상 이름 ν‘œκΈ°λ²•

  • color: red

⏩ Hex μƒ‰μƒμ½”λ“œ

  • color: #94FB11

⏩ rgb μƒ‰μƒμ½”λ“œ

  • rgb(red, green, blue)



βœ… CSS ν•¨μˆ˜ μ‚¬μš©


⏩ calc()

  • calc() μ΄λΌλŠ” ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜λ©΄, κ΄„ν˜Έ μ•ˆμ˜ 사칙연산을 μˆ˜ν–‰ν•œ κ²°κ³Όλ₯Ό μ†μ„±κ°’μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλ‹€.
    • λ§μ…ˆ
    .item1{
    	background: red;
    	width: calc(50px + 50px);
    	height: 50px;
    }



βœ… Position


positionμ΄λž€ HTML μš”μ†Œκ°€ λ°°μΉ˜λ˜λŠ” 방식을 κ²°μ •ν•˜λŠ” 속성

⏩ position의 속성값




βœ… Transition


cssμ—μ„œ μ• λ‹ˆλ©”μ΄μ…˜μ„ 쀄 수 μžˆλŠ” λ°©λ²•μ—λŠ” 크게 두가지가 μžˆλŠ”λ°, κ·Έ λ‘˜ 쀑 ν•œ 방법이 λ°”λ‘œ νŠΈλžœμ§€μ…˜ 이닀.
νŠΈλžœμ§€μ…˜ 은 css 속성을 μ΄μš©ν•œ λ³€ν™”μ˜ μ „, ν›„ 사이에 μ• λ‹ˆλ©”μ΄μ…˜μ„ μΆ”κ°€ν•΄μ„œ μ›€μ§μž„μ„ λΆ€λ“œλŸ½κ²Œ λ§Œλ“€μ–΄ 쀄 수 μžˆλ‹€.

⏩ transition μ‚¬μš©




βœ… Transform


CSS μ—μ„œμ˜ transform 은 λ‹¨μ–΄μ˜ μ˜λ―ΈλŒ€λ‘œ λŒ€μƒμ΄ λ˜λŠ” μš”μ†Œμ— 이동, νšŒμ „ ν™•λŒ€/μΆ•μ†Œ, λΉ„ν‹€κΈ° λ“±μ˜ λ³€ν˜• 효과 λ₯Ό 쀄 수 μžˆλ‹€.

⏩ transform μ‚¬μš©

⏩ transform 쀑첩 적용

tansform : rotate(75deg) translateY(120px)



βœ… animation


CSS μ• λ‹ˆλ©”μ΄μ…˜ 의 μ‹œμž‘, 쀑간, 끝 λ“±μ˜ 쀑간 μƒνƒœλ₯Ό μ •μ˜ ν•œλ‹€.

⏩ keyframe

/* keyframe μž‘μ„± 방법 */

@keyframes μ• λ‹ˆλ©”μ΄μ…˜μ΄λ¦„ {
	from {
		left : 0;
	}
	to{
		left : 200px;
	}
}
/* keyframe μž‘μ„± 방법 */

@keyframes μ• λ‹ˆλ©”μ΄μ…˜μ΄λ¦„{
	0% {
		left : 0;
	}
	50%{
		left : 200px;
	}
	100%{
		top : 200px;
		left :  200px;
	}
}

⏩ animation μ‚¬μš©

⏩ animation 단좕속성




βœ… λ°˜μ‘ν˜• μ›Ή


기기의 Viewport κ·œκ²©μ— λ°˜μ‘ν•˜μ—¬ λ ˆμ΄μ•„μ›ƒμ΄ μžλ™μœΌλ‘œ λ³€κ²½λ˜λŠ” μ›ΉνŽ˜μ΄μ§€ λ₯Ό λœ»ν•œλ‹€.

⏩ λ―Έλ””μ–΄ 쿼리

  • λ―Έλ””μ–΄ μΏΌλ¦¬λž€ Viewport의 λ„ˆλΉ„μ— 따라 μ›Ήμ‚¬μ΄νŠΈμ˜ μŠ€νƒ€μΌ μ‹œνŠΈλ₯Ό μˆ˜μ •ν•  수 있게 ν•΄μ£ΌλŠ” CSS의 κΈ°λŠ₯

    //λ―Έλ””μ–΄ 쿼리의 κΈ°λ³Έ ν˜•νƒœ//
    
    @media screen and (max-width: 500px) {
    	/* 슀크린의 λ„ˆλΉ„κ°€ 500px μ΄ν•˜μΌ 경우 μ μš©μ‹œν‚¬ μŠ€νƒ€μΌ μ‹œνŠΈλ₯Ό μ μŠ΅λ‹ˆλ‹€. */
    }

⏩ breakPoint (쀑단점)

  • Viewport : μ›Ή λΈŒλΌμš°μ €λ₯Ό 톡해 μ›ΉνŽ˜μ΄μ§€μ— μ ‘μ†ν–ˆμ„ λ•Œ, μ£Όμ†Œμ°½μ΄λ‚˜ νƒ­ 등을 μ œμ™Έν•˜κ³  μ‹€μ œ μ›ΉνŽ˜μ΄μ§€μ˜ 컨텐츠가 μ°¨μ§€ν•˜λŠ” μ˜μ—­
  • breakPoint : λ°˜μ‘ν˜• μ›ΉνŽ˜μ΄μ§€μ˜ μž‘μ—… 기쀀이 λ˜λŠ” 쀑단점을 의미




πŸ“Œ 였늘 μ‹€μŠ΅ κ²°κ³Ό

이미지

html

!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>Final</title>
    <link rel="stylesheet" href="./index.css">
    <script src="./index.js"></script>
</head>

<body>
    <div class="main">
        <div class="wrapper">
            <div class="header">
                <h1>μ½”λ“œμΊ ν”„ Base.Camp</h1>
            </div>
            <div class="body">
                <div class="d-day">
                    <div class="d-day-title">
                        <h2>D-Day</h2>
                    </div>
                    <div id="d-day-container">
                        <div class="d-day-child-container">
                            <span id="days">0</span>
                            <span>일</span>
                        </div>
                        <div class="d-day-child-container">
                            <span id="hours">0</span>
                            <span>μ‹œκ°„</span>
                        </div>
                        <div class="d-day-child-container">
                            <span id="min">0</span>
                            <span>λΆ„</span>
                        </div>
                        <div class="d-day-child-container">
                            <span id="sec">0</span>
                            <span>초</span>
                        </div>
                    </div>
                    <div id="d-day-message"></div>
                    <div id="target-selector id">
                        <input type="text" maxlength="4" id="target-year-input" oninput="changeFocus1()"
                            class="target-input" size="5" />
                        -
                        <input type="text" maxlength="2" id="target-month-input" oninput="changeFocus2()"
                            class="target-input" size="5" />
                        -
                        <input type="text" maxlength="2" id="target-date-input" class="target-input" size="5" />
                    </div>
                    <button onclick="starter()" class="btn">μΉ΄μš΄νŠΈλ‹€μš΄ μ‹œμž‘</button>
                    <button onclick="resetTimer()" class="btn">타이머 μ΄ˆκΈ°ν™”</button>
                </div>
                <div class="todo">
                    <div id="toto-title">
                        <h2>ToDo-List</h2>
                    </div>
                    <div class="todo-container">
                        <input type="text" id="todo-input" onkeydown="keyCodeCheck()" />
                        <ul id="todo-list">
                        </ul>
                    </div>
                    <div class="delete-btn-warper">
                        <button onclick="deleteAll()" id="list-btn">리슀트 μ‚­μ œ</button>
                    </div>
                </div>
            </div>
            <button class="last-btn">전체 μ΄ˆκΈ°ν™”</button>
        </div>
    </div>
</body>

css

* {
    box-sizing: border-box;
    margin: 0px;
}

html,
body {
    width: 100%;
    height: 100%;
}

body {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    background-color: #F9FAFB;
}

.main {
    width: 500px;
    height: 700px;
    border: 1px solid #AACDFF;
    box-shadow: 7px 7px 39px rgba(0, 104, 255, 0.25);
    border-radius: 20px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.wrapper {
    width: 400px;
    height: 600px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
}

.header {
    color: #0068FF;
    border-radius: 5px;
    background-color: #E6F2FF;
    width: 100%;
    padding-left: 15px;
    display: flex;
    flex-direction: row;
    align-items: center;
}

.body {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    align-items: center;
}

.d-day {
    width: 100%;
    height: 250px;
    padding-bottom: 10px;
    background: rgb(255, 255, 255);
    box-shadow: rgb(63 71 77 / 15%) 0px 2px 6px;
    border-radius: 10px;
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    align-items: center;


}

.d-day-title {
    height: 40px;
    color: #0068FF;
    border-radius: 3px;
    padding-bottom: 3px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

#d-day-container {
    display: flex;
}

.d-day-child-container {
    color: #0068FF;
}

.target-input {
    height: 22px;
    border: 1px solid #bbbbbb;
    border-radius: 3px;
    background-color: #F9FAFB;
}

.target-input:focus {
    outline: none;
    border: 1px solid #0068FF;

}

.btn {
    width: 140px;
    height: 26px;
    color: #0068FF;
    background: #FFFFFF;
    border: 1px solid #0068FF;
    border-radius: 4px;
    cursor: pointer;
    transition: width ease-in-out 0.2s;
}

.btn:hover {
    width: 170px;
    font-weight: 500;
    color: #FFFFFF;
    background: #0068FF;
}

.todo {
    width: 100%;
    height: 190px;
    background: rgb(255, 255, 255);
    box-shadow: rgb(63 71 77 / 15%) 0px 2px 6px;
    border-radius: 10px;
    margin: 15px 0px;
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    align-items: center;

}

#toto-title {
    height: 40px;
    color: #0068FF;
    border-radius: 3px;
    padding-bottom: 3px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    margin-top: 6px;
}

#todo-input {
    margin-bottom: 60px;
    height: 22px;
    border: 1px solid #bbbbbb;
    border-radius: 3px;
    background-color: #F9FAFB;
}

#todo-input:focus {
    outline: none;
    border: 1px solid #0068FF;

}

#list-btn {
    margin-bottom: 10px;
    width: 140px;
    height: 26px;
    color: #0068FF;
    background: #FFFFFF;
    border: 1px solid #0068FF;
    border-radius: 4px;
    cursor: pointer;
    transition: width ease-in-out 0.2s;

}

#list-btn:hover {
    width: 170px;
    font-weight: 500;
    color: #FFFFFF;
    background: #0068FF;
}

.last-btn {
    width: 100%;
    height: 60px;
    color: #FFFFFF;
    background: #0068FF;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}

.last-btn:hover {
    font-weight: 500;
    color: #FFFFFF;
    background: #0050c7;
}
profile
1λ…„μ°¨ ν”„λ‘ νŠΈμ—”λ“œ 개발자

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보