CSS μ§μ μμ±ν΄λ³΄κΈ° (μ΄μ΄μ)
λ΄κ° μ§ μ½λμ κ°μ λ΄μ© λΉκ΅Β·λΆμ (μ΄μ΄μ)
color
(ν°νΈ μκΉ) μμ±μ #navbarμ μ§μ ν΄μ ν λ²μ νμ μμκΉμ§ μ λΆ μ μ©λ μ μλλ‘ νλ€.
flexbox κ΅μ°¨μΆ μ€μ μ λ ¬
β align-items: center
π₯π₯π₯π₯π₯
navbar-menu-item, μ¦ <li>
λ€ μ¬μ΄λ₯Ό λμ°λ €λ©΄ justify-content: space-between λ§κ³ κ·Έλ₯ marginμ΄λ padding κ°μ λ£μ΄μ£Όλ©΄ λλ€.
text-decoration: none
κ³Ό list-style: none
μ²λΌ νμ λκ°μ΄ μ μ©ν μμ±λ€μ λ§€λ² classλ§λ€ μ§μ ν΄μ£Όμ§ λ§κ³ , μμ /* universal tags */
μ aμ li νκ·Έλ₯Ό λͺ
μν΄μ μ§μ ν΄λ¬λΌ.
κ΅¬κΈ ν°νΈλ₯Ό body
μ μ§μ ν΄μ€¬λ€.
κΈ°λ³Έμ μΌλ‘ ν
μ€νΈ μμ λ§μ°μ€ 컀μλ₯Ό μ¬λ €λ κ·Έ λͺ¨μμ΄ λ³νμ§ μλλ‘ νκΈ° μν΄ bodyμ cursor: default
λ₯Ό μ§μ ν΄μ€¬λ€.
λ¨, li μμ λ§μ°μ€ 컀μλ₯Ό μ¬λ Έμ λλ μ λͺ¨μμΌλ‘ λ°λλλ‘ cursor: pointer
λ₯Ό μ§μ ν΄μ€¬λ€.
border-radiusλ μ΄ λ¬Έμ λ΄μμλ νμ λμΌν κ°μ μ¬μ©ν κ²μ΄κΈ° λλ¬Έμ :rootμ λ³μκ°μ μ§μ ν΄μ£Όμλ€.
class="navbar-menu-item active"λ₯Ό κ°λ¦¬ν€λ CSS μ νμλ navbar-menu-item.activeμ΄λ€. μ΄ κ²½μ°μ .active μμμ λμ΄μ°κΈ° νλ©΄ μ λλ€.
border-radius μμ±μ .activeμ :hoverμμ λ°λ³΅λλ―λ‘ μμ .nav-menu-itemμ ν λ²λ§ μ¨μ£Όλλ‘ νλ€.
μ λͺ¨μμΌλ‘ λ§λ νλ‘ν μ΄λ―Έμ§λ₯Ό μνλ μμΉκ° 보μ΄λλ‘ μ‘°μ νλ λ²μ λͺ¨λ₯΄κ² λ€. imgλ₯Ό κ°μΈλ div νκ·Έλ₯Ό λ§λ€μ΄μ μ΄λ―Έμ§μ μ€μμ΄ λ³΄μ΄λλ‘ νμΌλ λ΄κ° μνλ 건 μ΄λ―Έμ§μ μ€λ₯Έμͺ½μ΄ 보μ΄λ κ²μ΄λ€.
λͺ¨λ buttonμ μ μ©μν¬ μμ±λ€μ /* universal tags */
μ μ§μ ν΄ λλλ‘ νλ€.
κ°λ°μ λꡬλ₯Ό μ¬μ©ν΄λ κ·Έλ¦Όμ μμΉλ μ λμ€λ©΄μ μμ κ²μ μμλ§ μ£Όν©μμΌλ‘ λ¨λ margin
μ κ²½μ°, ν΄λΉ μμκ° block λ 벨 μμμ΄κΈ° λλ¬Έμ μλμΌλ‘ margin κ°μ΄ μ€μ λμ΄ μλ κ²μ΄λ€. μ΄ κ²½μ°μλ μ’μ° marginμ auto
κ°μ μ€μΌλ‘μ¨ μν μ€μ μ λ ¬
μ ν μ μλ€.
/* universal tags */
μ <section>
μμ μ νμλ₯Ό μΆκ°ν΄ 곡ν΅μ μΌλ‘ μ μ©ν μμ±λ€μ μ§μ ν΄μ€¬λ€. λΈλΌμ°μ μ°½μ΄ μ»€μ§λ©΄ μ½ν
μΈ κ° λ무 νΌμ§λ κ²μ λ§κΈ° μν΄ μ§μ νλ max-width
λ κ·Έ μ€ νλμ΄λ€.
λλ positionκ³Ό transform μμ±μ μ΄μ©ν΄μ μμ΄μ½(font awesome)μ μμ§Β·μν μ€μ μ λ ¬μμΌ°λλ°, κ°μμμλ line-height
μ height
κ°κ³Ό λμΌν κ°μ μ§μ ν΄ μ€μ μ λ ¬μμΌ°λ€.
μ μμ μμ΄ν μ λ§μ°μ€ 컀μλ₯Ό κ°μ Έκ°λ©΄ μμ΄ν μ΄ μ»€μ§λ©΄μ λΆνμμΌλ‘ λ°λμ΄ λμκ°λλ‘ ν¨κ³Όλ₯Ό μ£Όμλ€.
a:hover
β aμ 컀μλ₯Ό λμ λ a
a b:hover
β a μμ bμ 컀μλ₯Ό λμ λ b
a:hover b
β aμ 컀μλ₯Ό λμ λ b
--animation-duration: 300ms
λ₯Ό μΆμ²νλ€.
max-width
λ λͺ¨λ sectionμ΄ μλλΌ μ μ©νκ³ μΆμ sectionμλ§ λ°λ‘ μΈ μ μλλ‘ section-container
ν΄λμ€λ₯Ό λ§λ€μ΄ μ§μ ν΄λλ€. skills μΉμ
μ κ²½μ° λΈλΌμ°μ μ°½μ΄ μ»€μ§μ λ°λΌ λ°°κ²½λ§ λμ΄λκ³ μ½ν
μΈ λ μΌμ ν¬κΈ° μ΄μ λμ΄λμ§ μλλ‘ HTMLμ #skills μμ .section-containerλ₯Ό λ°λ‘ λ§λ€μ΄ λλ¨Έμ§ μ½ν
μΈ λ₯Ό κ°μΈμ£Όμλ€.
.skillset-left / rightμ width: 60% /40% β flex-basis: 60% / 40%
πββοΈ μ§λ¬Έ
div.skillset μμ h3.skillset-titleμ΄ μλ€. div.skillsetμ color μμ±
μ μ§μ νμ λ div.description μμ spanλ€μ λͺ¨λ μμ΄ λ³νλλ° μ h3
μκΉμ λ³νμ§ μλ κ±ΈκΉ? κ°μμμλ μ λ³ν΄μ λ°λ‘ h3 μκΉμ μ§μ ν΄μ£Όμλλ° μ μ΄λ° κ±΄μ§ λͺ¨λ₯΄κ² λ€.
λλ calc()ν¨μλ₯Ό μ΄μ©ν΄ .skill-valueμ width κ°
μ κ°κ° class λ³λ‘ μ§μ ν΄μ£Όμλ€. κ°μμμλ μ΄λ₯Ό CSSμμ μ μνμ§ λ§κ³ HTML νκ·Έμ μΈλΌμΈ λ°©μ
μΌλ‘ μ μ©νμλ€. (μ΄λ λ°μ΄ν°λ€μ λ°λ‘ μΆμΆν΄ jsonμμ κ΄λ¦¬νλλ‘ νκ³ , jsonμμ λμ μΌλ‘ λ°μμ¨ λ°μ΄ν°λ€μ HTML μ½λλ‘ λ³νν΄ μλ μμ±ν μ μλλ‘ ν΄μ€λ€.)
ν
μ€νΈλ₯Ό μ΄λ―Έμ§ μ€μμ μμΉμν€κ³ μ ν λ, ν
μ€νΈκ° μ΄λ―Έμ§μ κ°λ €μ μ 보μ΄λ©΄ ν
μ€νΈμ z-index: 1
μ μ μ©ν μ μλ€.
μ΄λ―Έμ§μ λ§μ°μ€ 컀μλ₯Ό κ°μ Έλ€ λλ©΄, μ΄λ―Έμ§κ° μ΄λ‘κ² λ³νλ©΄μ
μ¨μ΄ μλ ν
μ€νΈκ° 보μ΄λλ‘ νλ λ°©λ²
λ°©λ² 1 (λ΄κ° μ΄ λ°©λ²: ν μ€νΈλ ν¬λͺ λμ μν₯ μ λ°μ)
.text { opacity: 0; } img:hover .text { opacity: 1; background: rgba(0, 0, 0, .7); }
λ°©λ² 2 (κ°μ λ΄μ©: ν μ€νΈλ κ°μ΄ ν¬λͺ ν΄μ§)
.text { background: black; opacity: 0; } img:hover .text { opacity: 0.7; }
λλ λ²νΌμμ hover μνλ§ λ°λ‘ μΆκ°νλλ° κ°μμμλ 첫 λ²μ§Έ λ²νΌμ΄ μμ μ νλ κ²μΌλ‘ 보μ΄λλ‘ κΎΈλ©°μ€¬λ€.
λλ λ²νΌμ μ«μλ₯Ό κΎΈλ° λ μμ΄ μ λλ‘ λ³΄μ¬μ§λλ‘ μΌμ’
μ κΌΌμλ‘ HTMLμ span νκ·Έμ κ°μ μ½ν
μΈ λΆλΆ μλ€λ‘ & nbspλ₯Ό λ£μλ€. κ°μμμλ λ¨Όμ display: inline-block
μ μ μ©ν ν widthμ height
λ₯Ό μ§μ νκ³ , μ«μλ₯Ό λκ·ΈλΌλ―Έμ κ°μ΄λ°μ λ§μΆκΈ° μν΄ line-height = height
λ°©λ²μ μ¬μ©νλ€.
λλ λ²νΌμ μ«μλ₯Ό νμμμ μ 보μ΄κ² νκΈ° μν΄ font-size: 0μ μ¬μ©νμ§λ§, κ°μμμλ opacity: 0
μ μ¬μ©νλ€.
λλ λ²νΌμ μ«μλ₯Ό νμμμ μ 보μ΄λ€κ° λ§μ°μ€ μ€λ² μ 보μ΄κ²λλ§ λ§λ€μμ§λ§, κ°μμμλ μμμ μλλ‘ λ²νΌμ΄ λ΄λ €μ€λ μ λλ©μ΄μ ν¨κ³Όλ₯Ό μΆκ°νλ€.
μ΄λ―Έμ§κ° 컨ν
μ΄λλ³΄λ€ μ»€μ§μ§ μκ² νκΈ° μν΄ max-width
μ max-height
λ₯Ό 100%λ‘ μ§μ ν΄μ€¬λ€.
λλ project-descriptionμ positionκ³Ό translate()μ μ΄μ©ν΄ μ€μ μ λ ¬ ν΄μ£Όμλλ°, κ°μμμλ positionκ³Ό justify-contentλ₯Ό μ΄μ©ν΄ μ€μ μ λ ¬νλ€.
project-titleκ³Ό project-description μ¬μ΄μ ::after
μ΄μ©ν΄μ γ
‘ λ₯Ό λ£μ΄μ£Όμλ€.
β» :afterκ³Ό κ°μ κ°μ μμλ inline μμμ΄κΈ° λλ¬Έμ νΉμ μμμ κ°κΈ° μν΄μλ block νΉμ inline-block μμλ‘ λ§λ€μ΄μ£Όμ΄μΌ νλ€.
projectμ λ§μ°μ€ μ€λ² μ project-descriptionμ΄ μ΄μ§ μ¬λΌμ€λ λλμ΄ λ€λλ‘ μ λλ©μ΄μ ν¨κ³Όκ° λνλλλ‘ ν΄μ£Όμλ€.
transform: translateY(10px);
= top: 10px;
νΉλ³ν μμλ€. clear.
νΉλ³ν μμλ€. clear.
.toggle-btn
μ position: absoluteλ₯Ό μ μ©ν ν right
, top
μ μ§μ ν΄ μμΉλ₯Ό μ‘°μ ν΄μ£Όμλ€.λ―Έλμ΄μΏΌλ¦¬λ₯Ό μ΄μ©ν΄ λ°μν μΉ λ§λ€κΈ°
λ΄κ° μ§ μ½λμ κ°μ λ΄μ© λΉκ΅Β·λΆμ (μ΄μ΄μ)
μλ°μ€ν¬λ¦½νΈ μ λ¬Έ