λ°μν λ° μ°κΈ° λͺ¨λ μΈμ λμμΈμ λ§λ€κΈ° μν CSS λ Όλ¦¬μ border-radius μμ±μ μ΄ν΄λ³΄μΈμ. κ΅μ μ μΈ μΉμ¬μ΄νΈλ₯Ό μν μ€μ μμ λ₯Ό ν΅ν΄ ꡬν λ°©λ²μ λ°°μ보μΈμ.
CSS λ Όλ¦¬μ Border Radius: κΈλ‘λ² λμμΈμ μν μ°κΈ° λͺ¨λ μ μ
λμμμ΄ μ§ννλ μΉ λμμΈ νκ²½μμ λ€μν μΈμ΄, λ¬Έν, μ°κΈ° λͺ¨λμ λ§€λλ½κ² μ μνλ λ μ΄μμμ λ§λλ κ²μ λ§€μ° μ€μν©λλ€. κΈ°μ‘΄μ CSS μμ±μ μ’ μ’ λ¬Όλ¦¬μ μΈ μ°¨μ(top, right, bottom, left)μ μμ‘΄νλλ°, μ΄λ μ€λ₯Έμͺ½μμ μΌμͺ½μΌλ‘(RTL) λλ μμμ μλλ‘ μ½λ μΈμ΄λ₯Ό λ€λ£° λ λ¬Έμ κ° λ μ μμ΅λλ€.
CSS λ
Όλ¦¬μ μμ± λ° κ°(CSS Logical Properties and Values)μ 물리μ κ°μ₯μ리 λμ νλ¦κ³Ό λ°©ν₯μ κΈ°λ°ν κ°λ
μ λμ
νμ¬ ν΄κ²°μ±
μ μ 곡ν©λλ€. μ΄ κ°λ ₯ν λκ΅¬λ€ μ€μμ border-radius
κ³μ΄μ κ·Έμ μμνλ λ
Όλ¦¬μ μμ± λλΆμ μλ‘μ΄ μ μ°μ±μ μ»κ² λ©λλ€. μ΄ κΈμμλ CSS λ
Όλ¦¬μ Border Radius μμ±μ μΈκ³λ₯Ό κΉμ΄ νκ³ λ€μ΄ κ·Έ κΈ°λ₯μ±μ μ€λͺ
νκ³ , μ§μ ν κΈλ‘λ² μΉ κ²½νμ ꡬμΆνλ λ° μμ΄ κ·Έ κ°μΉλ₯Ό 보μ¬μ€λλ€.
λ Όλ¦¬μ μμ±μ νμμ± μ΄ν΄νκΈ°
μμ¬μ μΌλ‘ CSS μμ±μ 물리μ μ°¨μμ λ¬Άμ¬ μμμ΅λλ€. μλ₯Ό λ€μ΄, margin-left
λ νμ μμμ μΌμͺ½μ 곡κ°μ μΆκ°ν©λλ€. μ΄λ μμ΄μ κ°μ μΌμͺ½μμ μ€λ₯Έμͺ½μΌλ‘(LTR) μ°λ μΈμ΄μμλ μ μλνμ§λ§, 'μΌμͺ½'μ΄ μκ°μ μΌλ‘λ μ€λ₯Έμͺ½μΈ μλμ΄λ νλΈλ¦¬μ΄ κ°μ RTL μΈμ΄μμλ λ μ§κ΄μ μ΄ λ©λλ€.
LTR μΈμ΄μμ μΌμͺ½μ μ¬μ΄λλ°κ° μλ μΉμ¬μ΄νΈλ₯Ό μμν΄ λ³΄μΈμ. margin-left
μ float: left
λ₯Ό μ¬μ©νλ©΄ μλ²½νκ² μλν©λλ€. νμ§λ§ μΉμ¬μ΄νΈκ° μλμ΄λ‘ λ²μλλ©΄ μ¬μ΄λλ°λ μ€λ₯Έμͺ½μ λνλλ κ²μ΄ μ΄μμ μ
λλ€. μλμΌλ‘ margin-left
λ₯Ό margin-right
λ‘, float: right
λ‘ λ°κΎΈλ κ²μ 볡μ‘μ±κ³Ό μ μ§λ³΄μ λΆλ΄μ κ°μ€μν΅λλ€.
λ Όλ¦¬μ μμ±μ μ°κΈ° λͺ¨λμ λ°λΌ μλμΌλ‘ μ μνλ 'start'μ 'end' κ°μ κ°λ μ μ¬μ©νμ¬ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€. μ΄λ λ€μν μΈμ΄μ μ°κΈ° μμ€ν μμ μ¬λ°λ₯΄κ² μλνλ λ μ΄μμμ λ§λλ κ²μ νκΈ°μ μΌλ‘ λ¨μνν©λλ€.
CSS λ Όλ¦¬μ Border Radius μμ± μκ°
μ ν΅μ μΈ border-radius
μμ±μ μμμ λͺ¨μ리λ₯Ό λ₯κΈκ² λ§λ€ μ μκ² ν΄μ€λλ€. νμ§λ§ μ΄λ border-top-left-radius
, border-top-right-radius
, border-bottom-right-radius
, border-bottom-left-radius
μ κ°μ 물리μ λ°©ν₯μ μμ‘΄ν©λλ€. CSS λ
Όλ¦¬μ μμ± λ° κ° λͺ
μΈ(CSS Logical Properties and Values Specification)λ λ ν° μ μ°μ±κ³Ό μ μμ±μ μ 곡νλ μλ‘μ΄ μ°κΈ° λͺ¨λ μΈμ μμ±μ λμ
ν©λλ€:
border-start-start-radius
: μμμ μμ-μμ λͺ¨μ리μ λν ν λ리 λ°κ²½μ μ§μ ν©λλ€.border-start-end-radius
: μμμ μμ-λ λͺ¨μ리μ λν ν λ리 λ°κ²½μ μ§μ ν©λλ€.border-end-start-radius
: μμμ λ-μμ λͺ¨μ리μ λν ν λ리 λ°κ²½μ μ§μ ν©λλ€.border-end-end-radius
: μμμ λ-λ λͺ¨μ리μ λν ν λ리 λ°κ²½μ μ§μ ν©λλ€.
μ¬κΈ°μ 'start'μ 'end'λ μ½ν μΈ μ μ°κΈ° λͺ¨λμ λ°©ν₯μ±μ μλμ μ λλ€. LTR μΈμ΄μμ 'start'λ μΌμͺ½, 'end'λ μ€λ₯Έμͺ½μ ν΄λΉν©λλ€. RTL μΈμ΄μμλ 'start'κ° μ€λ₯Έμͺ½, 'end'κ° μΌμͺ½μ ν΄λΉν©λλ€. λ§μ°¬κ°μ§λ‘, μμ§ μ°κΈ° λͺ¨λμμλ 'start'κ° μμͺ½, 'end'κ° μλμͺ½μ ν΄λΉν©λλ€.
μ€μ©μ μΈ μμ λ° μ¬μ© μ¬λ‘
μ΄λ¬ν λ Όλ¦¬μ border radius μμ±μ μ¬μ©νμ¬ λ°μν λ° μ°κΈ° λͺ¨λ μΈμ λμμΈμ λ§λλ λ°©λ²μ μ€λͺ νκΈ° μν΄ λͺ κ°μ§ μ€μ©μ μΈ μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
μμ 1: μ°κΈ° λͺ¨λμ μ μνλ λ₯κ·Ό λ²νΌ
λͺ¨μλ¦¬κ° λ₯κ·Ό λ²νΌμ μκ°ν΄ 보μΈμ. μ°λ¦¬λ μ°κΈ° λͺ¨λμ κ΄κ³μμ΄ μμͺ½κ³Ό λ€μͺ½ κ°μ₯μ리μ λ₯κ·Ό μ²λ¦¬κ° λνλκΈ°λ₯Ό μν©λλ€.
HTML:
<button class="button">Click Me</button>
CSS:
.button {
border-start-start-radius: 10px;
border-start-end-radius: 10px;
border-end-start-radius: 10px;
border-end-end-radius: 10px;
/* λλ, λ¨μΆ μμ± μ¬μ©: */
border-radius: 10px;
}
[dir="rtl"] .button {
/* λ³κ²½μ΄ νμ μμ΅λλ€! λΈλΌμ°μ κ° μ°κΈ° λͺ¨λ μ μμ μ²λ¦¬ν©λλ€ */
}
μ΄ μμ μμλ νμ΄μ§κ° LTRμ΄λ RTLμ΄λ κ΄κ³μμ΄ μμͺ½-μΌμͺ½κ³Ό μμͺ½-μ€λ₯Έμͺ½(LTRμμ) λλ μμͺ½-μ€λ₯Έμͺ½κ³Ό μμͺ½-μΌμͺ½(RTLμμ) λͺ¨μλ¦¬κ° λ₯κΈκ² μ²λ¦¬λ©λλ€. λ€λ₯Έ μ°κΈ° λͺ¨λλ₯Ό μν΄ λ³λμ CSS κ·μΉμ μμ±ν νμκ° μμ΅λλ€. λΈλΌμ°μ λ dir
μμ±μ κΈ°λ°μΌλ‘ μ§λ₯μ μΌλ‘ μ€νμΌμ μ μ©ν©λλ€.
μμ 2: λμ 꼬리 λ°°μΉλ₯Ό κ°μ§ μ±ν λ§νμ
μ±ν λ§νμ μ μΌλ°μ μΈ UI μμμ λλ€. μΌλ°μ μΌλ‘ λ§νμ μ 꼬리λ λ°μ μλ₯Ό ν₯ν©λλ€. λ Όλ¦¬μ μμ±μ μ¬μ©νλ©΄ λ©μμ§κ° μ¬μ©μμ κ²μΈμ§ λ€λ₯Έ μ¬λμ κ²μΈμ§μ λ°λΌ λ§νμ μ λͺ¨μμ μ½κ² μ‘°μ ν μ μμΌλ©°, μ°κΈ° λͺ¨λλ κ³ λ €ν μ μμ΅λλ€.
HTML:
<div class="chat-bubble user">Hello!</div>
<div class="chat-bubble other">Hi there!</div>
CSS:
.chat-bubble {
background-color: #eee;
padding: 10px;
margin-bottom: 10px;
border-radius: 10px;
}
.chat-bubble.user {
border-start-start-radius: 0; /* μμͺ½-μΌμͺ½(LTR) λλ μμͺ½-μ€λ₯Έμͺ½(RTL)μ λ°κ²½ μ κ±° */
}
.chat-bubble.other {
border-start-end-radius: 0; /* μμͺ½-μ€λ₯Έμͺ½(LTR) λλ μμͺ½-μΌμͺ½(RTL)μ λ°κ²½ μ κ±° */
}
/* RTL μΈμ΄μ κ²½μ°, λΈλΌμ°μ κ° μλμΌλ‘ μμ/λμ λ―Έλ¬λ§ν©λλ€ */
/* μΆκ°μ μΈ CSSκ° νμνμ§ μμ΅λλ€ */
μ΄ μλ리μ€μμ .user
ν΄λμ€λ 'start-start' λͺ¨μ리μ border-radiusλ₯Ό μ κ±°νμ¬ ν¨κ³Όμ μΌλ‘ 꼬리λ₯Ό λ§λλλ€. LTR μΈμ΄μ κ²½μ° μ΄λ μμͺ½-μΌμͺ½ λͺ¨μ리μ
λλ€. RTL μΈμ΄μ κ²½μ° λΈλΌμ°μ λ μλμΌλ‘ 'start-start'λ₯Ό μμͺ½-μ€λ₯Έμͺ½ λͺ¨μλ¦¬λ‘ ν΄μνμ¬, λ³λμ RTL μ μ© μ€νμΌ μμ΄λ κΌ¬λ¦¬κ° νμ μ¬λ°λ₯΄κ² λ°°μΉλλλ‘ λ³΄μ₯ν©λλ€.
μμ 3: λͺ¨μ리 κ°μ‘°κ° μλ μΉ΄λ
μΆμ² νλͺ©μ λνλ΄κΈ° μν΄ μΉ΄λμ νΉμ λͺ¨μ리λ₯Ό κ°μ‘°νκ³ μΆλ€κ³ κ°μ ν΄ λ΄ μλ€. λ Όλ¦¬μ μμ±μ μ¬μ©νλ©΄ μ΄λ₯Ό λ§€μ° μ μ°νκ² λ§λ€ μ μμ΅λλ€.
HTML:
<div class="card featured">
<h2>Product Title</h2>
<p>Product description.</p>
</div>
CSS:
.card {
border: 1px solid #ccc;
padding: 20px;
border-radius: 10px;
}
.card.featured {
border-end-end-radius: 0; /* μλμͺ½-μ€λ₯Έμͺ½(LTR) λλ μλμͺ½-μΌμͺ½(RTL)μ λ°κ²½ μ κ±° */
border-top: 3px solid red;
border-start-start-radius:0; /*μμͺ½ μΌμͺ½ λ°κ²½ μ κ±°*/
}
.featured
ν΄λμ€λ 'end-end' λͺ¨μ리μμ λ°κ²½μ μ κ±°νλλ°, μ΄λ LTRμμλ μλμͺ½-μ€λ₯Έμͺ½, RTLμμλ μλμͺ½-μΌμͺ½μ΄ λ©λλ€. μ΄ ν¨κ³Όλ λΈλΌμ°μ μ μν΄ RTL μΈμ΄μ λν΄ μλμΌλ‘ λ―Έλ¬λ§λ©λλ€.
λ Όλ¦¬μ Border Radius μμ± μ¬μ©μ μ΄μ
- λ¨μνλ κ΅μ ν: CSSλ₯Ό λ μ κ² μμ±νκ³ λ€μν μ°κΈ° λͺ¨λμ λν λ³λμ μ€νμΌμνΈλ₯Ό κ΄λ¦¬νλ 볡μ‘μ±μ νΌν μ μμ΅λλ€.
- ν₯μλ λ°μμ±: λ€μν νλ©΄ ν¬κΈ°μ λ°©ν₯μ λ λ§€λλ½κ² μ μνλ λ μ΄μμμ λ§λλλ€.
- ν₯μλ μ μ§λ³΄μμ±: λ Όλ¦¬μ μμ±μ λ κΉ¨λνκ³ κ°κ²°ν μ½λλ₯Ό λ§λ€μ΄ μ΄ν΄νκ³ μ μ§λ³΄μνκΈ° λ μ½μ΅λλ€.
- ν₯μλ μ κ·Όμ±: λ μ΄μμκ³Ό λ°©ν₯μ±μ μ¬λ°λ₯΄κ² μ²λ¦¬ν¨μΌλ‘μ¨ λͺ¨λ μΈμ΄μ λ¬Ένμ μ¬μ©μλ₯Ό μν λ ν¬μ©μ μΈ κ²½νμ λ§λλλ€.
- λ―Έλ λλΉ: CSSκ° κ³μ λ°μ ν¨μ λ°λΌ λ Όλ¦¬μ μμ±μ μ±ννλ©΄ μ½λκ° κ³μν΄μ μ ν¨νκ³ μ μ κ°λ₯νλλ‘ λ³΄μ₯ν©λλ€.
λΈλΌμ°μ μ§μ λ° ν΄λ¦¬ν
λλΆλΆμ μ΅μ λΈλΌμ°μ λ λ Όλ¦¬μ border radius μμ±μ ν¬ν¨νμ¬ CSS λ Όλ¦¬μ μμ± λ° κ°μ λν νλ₯ν μ§μμ μ 곡ν©λλ€. νμ§λ§ λ€μ΄ν°λΈ μ§μμ΄ λΆμ‘±ν ꡬν λΈλΌμ°μ μ κ²½μ°, ν΄λ¦¬νμ μ¬μ©νμ¬ νΈνμ±μ μ 곡ν μ μμ΅λλ€. Autoprefixerλ μ’ μ’ νμν λ³νμ μ²λ¦¬νμ¬ μ½λκ° λ λμ λ²μμ λΈλΌμ°μ μμ μλνλλ‘ λ³΄μ₯ν μ μμ΅λλ€.
νλ‘λμ νκ²½μμ μ΄λ¬ν μμ±μ ꡬννκΈ° μ μ Can I useμ κ°μ 리μμ€μμ νμ¬ λΈλΌμ°μ μ§μμ νμΈνλ κ²μ΄ νμ μ’μ μ΅κ΄μ λλ€.
λͺ¨λ² μ¬λ‘ λ° κ³ λ € μ¬ν
- λ Όλ¦¬μ μμ±μ μΌκ΄λ μ¬μ©: λ Όλ¦¬μ μμ±μ μ¬μ©νκΈ° μμνλ€λ©΄, μΌκ΄μ±μ μν΄ νλ‘μ νΈ μ 체μ μ μ©νλλ‘ λ Έλ ₯νμΈμ. λ Όλ¦¬μ μμ±κ³Ό 물리μ μμ±μ νΌν©νλ©΄ νΌλκ³Ό μμμΉ λͺ»ν κ²°κ³Όλ₯Ό μ΄λν μ μμ΅λλ€.
- μ² μ ν ν μ€νΈ: λ μ΄μμμ΄ μ¬λ°λ₯΄κ² μ μνλμ§ νμΈνκΈ° μν΄ λ€μν μ°κΈ° λͺ¨λ(LTR, RTL λ° μ μ¬μ μΌλ‘ μμ§)μμ μΉμ¬μ΄νΈλ₯Ό ν μ€νΈνμΈμ.
direction
μμ± κ³ λ €:direction
μμ±(dir="ltr"
λλdir="rtl"
)μ μ½ν μΈ μ μ°κΈ° λͺ¨λλ₯Ό λνλ΄λ λ° νμμ μ λλ€.<html>
μμλ νμ΄μ§μ νΉμ μΉμ μ μ¬λ°λ₯΄κ² μ€μ λμλμ§ νμΈνμΈμ.- λ€λ₯Έ λ
Όλ¦¬μ μμ±κ³Ό ν¨κ» μ¬μ©: μ§μ μΌλ‘ μ°κΈ° λͺ¨λλ₯Ό μΈμνλ λ μ΄μμμ μν΄
margin-inline-start
,padding-block-end
,inset-inline-start
μ κ°μ λ€λ₯Έ λ Όλ¦¬μ μμ±κ³Ό λ Όλ¦¬μ border radius μμ±μ κ²°ν©νμΈμ. - μ κ·Όμ± ν μ€νΈ: μ€ν¬λ¦° 리λ λ° κΈ°ν 보쑰 κΈ°μ μ μ¬μ©νμ¬ λ μ΄μμμ μ κ·Όν μ μλμ§ νμΈνμΈμ. μ¬λ°λ₯Έ λ°©ν₯μ±μ μ΄λ¬ν λꡬμ μμ‘΄νλ μ¬μ©μμκ² λ§€μ° μ€μν©λλ€.
κ³ κΈ κΈ°μ λ° λ¨μΆ μμ±
νμ€ `border-radius` μμ±κ³Ό λ§μ°¬κ°μ§λ‘, λ¨μΆ μμ±μ μ¬μ©νμ¬ μ¬λ¬ λ Όλ¦¬μ border radiiλ₯Ό ν λ²μ μ€μ ν μ μμ΅λλ€:
border-radius: border-start-start-radius border-start-end-radius border-end-end-radius border-end-start-radius;
νμ€ `border-radius` μμ±κ³Ό λ§μ°¬κ°μ§λ‘ νλ, λ, μ λλ λ€ κ°μ κ°μ μ¬μ©ν μ μμ΅λλ€. μ΄ κ°λ€μ ν΄μμ λμΌν κ·μΉμ λ°λ¦ λλ€:
- κ° νλ: λ€ λͺ¨μ리 λͺ¨λ λμΌν λ°κ²½μ κ°μ§λλ€.
- κ° λ κ°: 첫 λ²μ§Έ κ°μ μμ-μμκ³Ό λ-λ λͺ¨μ리μ, λ λ²μ§Έ κ°μ μμ-λκ³Ό λ-μμ λͺ¨μ리μ μ μ©λ©λλ€.
- κ° μΈ κ°: 첫 λ²μ§Έ κ°μ μμ-μμ λͺ¨μ리μ, λ λ²μ§Έ κ°μ μμ-λκ³Ό λ-μμ λͺ¨μ리μ, μΈ λ²μ§Έ κ°μ λ-λ λͺ¨μ리μ μ μ©λ©λλ€.
- κ° λ€ κ°: κ° κ°μ μμ-μμ, μμ-λ, λ-λ, λ-μμ μμλ‘ νΉμ λͺ¨μ리μ μ μ©λ©λλ€.
μλ₯Ό λ€λ©΄ λ€μκ³Ό κ°μ΅λλ€:
border-radius: 10px; /* λͺ¨λ λͺ¨μλ¦¬κ° 10pxμ λ°κ²½μ κ°μ§ */
border-radius: 10px 20px; /* μμ-μμκ³Ό λ-λ: 10px, μμ-λκ³Ό λ-μμ: 20px */
border-radius: 10px 20px 30px; /* μμ-μμ: 10px, μμ-λκ³Ό λ-μμ: 20px, λ-λ: 30px */
border-radius: 10px 20px 30px 40px; /* μμ-μμ: 10px, μμ-λ: 20px, λ-λ: 30px, λ-μμ: 40px */
κ²°λ‘ : κΈλ‘λ² μΉμ μν΄ λ Όλ¦¬μ μμ±μ μμ©νμΈμ
λ Όλ¦¬μ border radius μμ±μ ν¬ν¨ν CSS λ Όλ¦¬μ μμ± λ° κ°μ μ§μ μΌλ‘ κΈλ‘λ²νκ³ μ κ·Όμ± μλ μΉ κ²½νμ λ§λλ λ° νμμ μΈ λꡬμ λλ€. μ΄λ¬ν μμ±μ μ΄ν΄νκ³ νμ©ν¨μΌλ‘μ¨ λ€μν μΈμ΄, λ¬Έν, μ°κΈ° λͺ¨λμ λ§κ² λμμΈμ μ‘°μ νλ κ³Όμ μ ν¬κ² λ¨μνν μ μμ΅λλ€.
μΉμ΄ μ μ λ κΈλ‘λ²νλ¨μ λ°λΌ λͺ¨λ μ¬μ©μλ₯Ό μν ν¬μ©μ±κ³Ό μ κ·Όμ±μ 보μ₯νλ λͺ¨λ² μ¬λ‘λ₯Ό μ±ννλ κ²μ΄ μ€μν©λλ€. λ Όλ¦¬μ μμ±μ μμ©νκ³ , μ² μ ν ν μ€νΈνλ©°, λ€μν μΈμ΄μ μ°κΈ° μμ€ν μμ μννκ² μλνλ μΉμ¬μ΄νΈλ₯Ό λ§λμΈμ.
물리μ μ°¨μμμ λ²μ΄λ λ Όλ¦¬μ κ°λ μ μμ©ν¨μΌλ‘μ¨, λ€μν κΈλ‘λ² κ³ κ°μ λ§μ‘±μν€λ λ μ μ§λ³΄μνκΈ° μ½κ³ λ°μμ΄ λΉ λ₯΄λ©° μ¬μ©μ μΉνμ μΈ μΉμ¬μ΄νΈλ₯Ό λ§λ€ μ μμ΅λλ€.
μΆκ° μλ£
- MDN μΉ λ¬Έμ: CSS λ Όλ¦¬μ μμ± λ° κ°
- W3C CSS λ Όλ¦¬μ μμ± λ° κ° λ 벨 1
- Can I use (λΈλΌμ°μ μ§μ νμΈμ©)