[๐ŸฆFE DAY8(3)] ํ‘œ์ค€ CSS ๋ฐ•์Šค ๋ชจ๋ธ

ํ‘œ์ค€ CSS ๋ฐ•์Šค ๋ชจ๋ธ

ํ‘œ์ค€ CSS ๋ฐ•์Šค๋ชจ๋ธ์—์„œ ์š”์†Œ ์ „์ฒด ํฌ๊ธฐ = ์ปจํ…์ธ  + ๋ณด๋” + ํŒจ๋”ฉ

1. ์ปจํ…์ธ  ๋ฐ•์Šค ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•˜๋Š” width, height (block box์ธ ๊ฒฝ์šฐ๋งŒ!)

<head>
  <style>
  	div { 
    	width: 50px;
    	height: 50px;
    	background-color: orange;
    }
  </style>
</head>
	<div><div>
<body>

2. border

border๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์ปจํ…์ธ  ๋ฐ•์Šค์˜ ํ…Œ๋‘๋ฆฌ!
ํ‘œ์ค€ CSS ๋ฐ•์Šค ๋ชจ๋ธ์—์„œ border์˜ ํฌ๊ธฐ ๋˜ํ•œ ์š”์†Œ ์ „์ฒด ํฌ๊ธฐ์— ํฌํ•จ ๋œ๋‹ค.

button {
	border-width: 3px;
    border-style: solid;
    border-color: blue;
}

/* ์ถ•์•ฝํ˜• */
button {
	border: 3px solid blue;
}

  1. border-width

    • ์ง์ ‘ ์ง€์ • - px๊ณผ ๊ฐ™์€ ๋‹จ์œ„๋กœ ์ง์ ‘ ์ง€์ •
    • medium - ์ค‘๊ฐ„ ๊ตต๊ธฐ๋กœ ์ง€์ •
    • thin - ์–‡์€ ์„ ์œผ๋กœ ์ง€์ •
    • thick - ๊ตต์€ ์„ ์œผ๋กœ ์ง€์ •
  2. border-style

    • none - ํ…Œ๋‘๋ฆฌ์„  ์—†์• ๊ธฐ
    • solid - ์ง์„ 
    • dotted - ์ ์„ 
    • dashed - ๋ฐ”๋Š์งˆ์„ 
    • double - ์ด์ค‘์„ 
      ,
      ,
      ,
      border style์€ ๋งค์šฐ ๋‹ค์–‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋•Œ๊ทธ๋•Œ ์ฐพ์•„๋ณด๊ธฐ!
      (https://developer.mozilla.org/ko/docs/Web/CSS/border-style)
  3. border-color

button {
    border-color: red; /* ๋„ค ๋ฉด์— ๋™์ผํ•œ ์ƒ‰์ƒ*/
    border-color: red orange; /* ์ƒํ•˜ ์ขŒ์šฐ */
    border-color: red orange yellow; /* ์ƒ ์ขŒ์šฐ ํ•˜ */
    border-color: red orange yellow green; /* ์ƒ ์šฐ ํ•˜ ์ขŒ (์‹œ๊ณ„๋ฐฉํ–ฅ)*/
}
  1. border-radius
    radius ์†์„ฑ์€ ํ…Œ๋‘๋ฆฌ ๊ผญ์ง“์ ์„ ๋‘ฅ๊ธ€๊ฒŒ ๋งŒ๋“ค์–ด ์ค€๋‹ค.
border-radius: 30px;

  • ์› ๋งŒ๋“ค๊ธฐ
    -> radius๋ฅผ 50%๋กœ ์ฃผ๊ฒŒ๋˜๋ฉด ์š”์†Œ ๋„“์ด์˜ ์ ˆ๋ฐ˜๋งŒํผ ๋ฐ˜์ง€๋ฆ„์ด ๋งŒ๋“ค์–ด์ ธ์„œ ์›์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.
div{
	width: 100px;
    height: 100px;
    border-width: 3px;
    border: 3px solid black;
    border-radius: 50%;
}

  • ํŠน์ • ๊ผญ์ง“์ ๋งŒ ๋‘ฅ๊ธ€๊ฒŒ ๋งŒ๋“ค๊ธฐ
border-top-left-radius: 50px; /* ์ƒ๋‹จ ์™ผ์ชฝ */
border-top-right-radius: 40px; /* ์ƒ๋‹จ ์˜ค๋ฅธ์ชฝ */
border-bottom-left-radius: 30px; /* ํ•˜๋‹จ ์™ผ์ชฝ */
border-bottom-right-radius: 20px; /* ํ•˜๋‹จ ์˜ค๋ฅธ์ชฝ */

3. padding

ํ‘œ์ค€ CSS ๋ฐ•์Šค ๋ชจ๋ธ์—์„œ padding์˜ ํฌ๊ธฐ๋„ ์š”์†Œ ์ „์ฒด ํฌ๊ธฐ์— ํฌํ•จ ๋œ๋‹ค.

div {
	width: 100px;
    height: 30px;
    border: 3px solid black;
    padding: 10px;
}

div ์ „์ฒด ๊ฐ€๋กœ๊ฐ’ = 100+10+10+3+3 = 126
div ์ „์ฒด ์„ธ๋กœ๊ฐ’ = 30+10+10+3+3 = 56

  • padding ๊ฐ’ ๋”ฐ๋กœ๋”ฐ๋กœ ์ค„ ์ˆ˜ ์žˆ์Œ
padding: 10px; /* ๋„ค ๋ฐฉํ–ฅ ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ 10px ์ ์šฉ*/
padding: 10px 20px; /* ์ƒํ•˜ ์ขŒ์šฐ */
padding: 10px 20px 30px; /* ์ƒ ์ขŒ์šฐ ํ•˜ */
padding: 10px 20px 30px 40px; /* ์ƒ ์šฐ ํ•˜ ์ขŒ */

4. margin

margin์€ ์š”์†Œ ์ „์ฒด ํฌ๊ธฐ์— ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ์š”์†Œ์™€ ์š”์†Œ ์‚ฌ์ด์˜ ์˜์—ญ์— ์˜ํ–ฅ์„ ์ค€๋‹ค.

div {
	width: 100px;
    height: 30px;
    border: 3px solid black;
    margin: 10px;
}

div ์ „์ฒด ๊ฐ€๋กœ๊ฐ’ = 100+3+3 = 106
div ์ „์ฒด ์„ธ๋กœ๊ฐ’ = 30+3+3 = 36
-> ๋งˆ์ง„๊ฐ’์€ ์ „์ฒด ์š”์†Œ ํฌ๊ธฐ์— ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค!

  • margin ๊ฐ’ ๋”ฐ๋กœ๋”ฐ๋กœ ์ค„ ์ˆ˜ ์žˆ์Œ
margin: 10px; /* ๋„ค ๋ฐฉํ–ฅ ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ 10px ์ ์šฉ*/
margin: 10px 20px; /* ์ƒํ•˜ ์ขŒ์šฐ */
margin: 10px 20px 30px; /* ์ƒ ์ขŒ์šฐ ํ•˜ */
margin: 10px 20px 30px 40px; /* ์ƒ ์šฐ ํ•˜ ์ขŒ */

margin: 10px auto;
/* auto
	: ์š”์†Œ ํฌ๊ธฐ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋งˆ์ง„์˜์—ญ์„ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ  ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ์— ๋ถ„๋ฐฐํ•œ๋‹ค. 
      ์ขŒ์šฐ๋กœ๋งŒ auto์ ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ƒํ•˜๋กœ๋Š” auto ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค.*/

๋งˆ์ง„ ๊ฒน์นจ ํ˜„์ƒ (margin collapsing)

: ์ธ์ ‘ํ•˜๋Š” ๋ธ”๋ก์š”์†Œ์˜ ์ƒํ•˜๋‹จ์˜ ๋งˆ์ง„์ด ๊ฒน์ณ์กŒ์„ ๋•Œ ๋” ํฐ ๋งˆ์ง„ ๊ฐ’์ด ์ ์šฉ๋˜๋Š” ํ˜„์ƒ

๋งˆ์ง„ ๊ฒน์นจ ํ˜„์ƒ์˜ ์กฐ๊ฑด
1. ์ธ์ ‘ํ•˜๋Š” block ์š”์†Œ๋ผ๋ฆฌ๋งŒ ์ผ์–ด๋‚œ๋‹ค.
2. ์ƒํ•˜๋‹จ๋งŒ ๊ฒน์นจํ˜„์ƒ์ด ์ผ์–ด๋‚œ๋‹ค. (์ขŒ์šฐ์˜ ์—ฌ๋ฐฑ์˜ ๋ณ‘ํ•ฉ์€ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค)

Case 1: ์ธ์ ‘ํ•˜๋Š” block ์š”์†Œ๋ผ๋ฆฌ ์ƒํ•˜๋กœ ๋งˆ์ง„์ด ๊ฒน์นœ ๊ฒฝ์šฐ

<div class="one"></div>
<div class="two"></div>
div {
	width: 100px;
    height: 100px;
    background-color: khaki;
}
.one {
	margin-bottom: 30px;
}
.two {
	argin-top: 60px;
}

๋‘ ์š”์†Œ์˜ ๋งˆ์ง„์ด ์œ„ ์•„๋ž˜๋กœ ๊ฒน์น˜์ง€๋งŒ ๋‘ ๋งˆ์ง„ ๊ฐ’์ด ๋”ํ•ด์ง€์ง€ ์•Š๋Š”๋‹ค. ์ฒซ๋ฒˆ์งธ ์š”์†Œ์˜ ๋งˆ์ง„๊ฐ’(30px) ๋ณด๋‹ค ๋” ํฐ ๋‘๋ฒˆ์งธ ๋งˆ์ง„ ๊ฐ’(60px)์ด ์ ์šฉ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


Case2: ๋ถ€๋ชจ์™€ ์ž์‹๊ฐ„ ๋งˆ์ง„์ด ๊ฒน์นœ ๊ฒฝ์šฐ
(1) ๋ถ€๋ชจ์™€ ์ž์‹ ๋‘˜ ๋‹ค ๋งˆ์ง„์ด ์—†๋Š” ์ƒํƒœ

.parent {
	background-color: white;
    width: 300px;
    margin: 0;
}
.children {
	background-color: blue;
    width: 200px;
    height: 200px;
    border: 1px solid black;
    margin: 0;
}

(2) ์ž์‹์—๊ฒŒ ๋งˆ์ง„ ์ƒํ•˜ ์ขŒ์šฐ 50px์”ฉ ์คฌ๋‹ค.

์ด๋ ‡๊ฒŒ ๋œ ์ด์œ ๋Š”,
๋งˆ์ง„ ๊ฒน์นจ ํ˜„์ƒ์˜ ์กฐ๊ฑด์ด ๋งŒ์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ
์ผ๋‹จ ๋ถ€๋ชจ, ์ž์‹์š”์†Œ ๋‘˜๋‹ค ๋ธ”๋Ÿญ์š”์†Œ์ด๊ณ  ์ธ์ ‘ํ•ด์žˆ๋‹ค.(์กฐ๊ฑด1 ๋งŒ์กฑ)
๊ทธ๋ฆฌ๊ณ  ์ž์‹์˜ ์ขŒ์šฐ ๋งˆ์ง„์€ ์ž˜ ์ ์šฉ ๋˜์—ˆ์ง€๋งŒ ์ƒํ•˜ ๋งˆ์ง„๋งŒ ์ ์šฉ์ด ๋˜์ง€ ์•Š์•˜๋‹ค. ์ด๊ฒƒ์€ ๋ถ€๋ชจ์™€ ์ž์‹๊ฐ„์˜ ๋งˆ์ง„์ด ๊ฒฐํ•ฉ๋˜์—ˆ๋‹ค๋Š” ๋œป! (์กฐ๊ฑด2 ๋งŒ์กฑ)

์ฆ‰, ๋งˆ์ง„ ๊ฒฐํ•ฉ์ด ๋˜๋ฉด ๋‘ ๋งˆ์ง„๊ฐ’ ์ค‘ ํฐ ๋งˆ์ง„๊ฐ’์ด ์ ์šฉ์ด ๋˜๋Š”๋ฐ
์ž์‹์˜ ๋งˆ์ง„๊ฐ’์€ 50px์ด๊ณ  ๋ถ€๋ชจ์˜ ๋งˆ์ง„๊ฐ’์€ 0px์ด๋ฏ€๋กœ ๋” ํฐ ์ž์‹์˜ ๋งˆ์ง„๊ฐ’ 50px์ด ์ ์šฉ๋œ๋‹ค.

๋”ฐ๋ผ์„œ, 50px์€ ์ด์ œ ๋ถ€๋ชจ์˜ ๋งˆ์ง„๊ฐ’์ด ๋˜์–ด๋ฒ„๋ฆฐ ๊ฒƒ์ด๋‹ค.

  • ํ•ด๊ฒฐ๋ฐฉ๋ฒ•
  1. ๋ถ€๋ชจ ์š”์†Œ์— border๊ฐ’ ์ ์šฉํ•˜๊ธฐ

    • ๋ถ€๋ชจ ์š”์†Œ์— border๊ฐ’์„ ์ ์šฉํ•ด์ฃผ์–ด ๋ถ€๋ชจ์™€ ์ž์‹์˜ ๋งˆ์ง„์ด ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ ๋‹ค.
    • ํ•˜์ง€๋งŒ, ๋งŒ์•ฝ border = 1px์„ ์ฃผ์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด, ์–ด์ฐŒ๋ฌ๋˜ 1px์ด ๋” ๋Š˜์–ด๋‚œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋””์ž์ธ ์ธก๋ฉด์—์„œ 1px์˜ ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

    1.1 ๋นˆ tableํƒœ๊ทธ ๋„ฃ๊ธฐ
    tableํƒœ๊ทธ ์ž์ฒด์—๋Š” ์•„๋ฌด๋Ÿฐ ํฌ๊ธฐ๊ฐ€ ์—†์–ด์„œ ๋ฐ•์Šค ํฌ๊ธฐ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค!

	<div class="parent">
    	<div class="children">A</div>
        <div class="children">B</div>
    </div>
  1. ์ž์‹ ์š”์†Œ์˜ display์†์„ฑ๊ฐ’์„ inline-block์œผ๋กœ ๋ฐ”๊พธ๊ธฐ

    • ๋งˆ์ง„ ๊ฒฐํ•ฉ ํ˜„์ƒ์˜ ์กฐ๊ฑด1(์ธ์ ‘ํ•˜๋Š” block ์š”์†Œ๋ผ๋ฆฌ๋งŒ ์ผ์–ด๋‚œ๋‹ค)์ด ๋”์ด์ƒ ๋งŒ์กฑ๋˜์ง€ ์•Š์•„ ๋ถ€๋ชจ์™€ ์ž์‹๊ฐ„์˜ ๋งˆ์ง„ ๊ฒฐํ•ฉ ํ˜„์ƒ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

    • ํ•˜์ง€๋งŒ, ์ž์‹๋“ค๋ผ๋ฆฌ์˜ ๋งˆ์ง„๋ณ‘ํ•ฉ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์•„ ์ž์‹๋“ค์˜ ๋งˆ์ง„๊ฐ’์ด ๋”ํ•ด์ง„๋‹ค.
      ์ด๋ฏธ์ง€๋ฅผ ๋ณด๋ฉด ์ž์‹๋“ค๊ฐ„ ๋งˆ์ง„๊ฒฐํ•ฉ์ด ์›๋ž˜ ์ƒ๊ฒจ์•ผํ•˜๋Š” ๋ถ€๋ถ„์— ๋งˆ์ง„๊ฒฐํ•ฉ์ด์ƒ๊ธฐ์ง€ ์•Š๊ณ  ์„œ๋กœ ๋ฐ€์–ด๋‚ด์–ด ํ•ด๋‹น ๋ถ€๋ถ„์ด ๋” ๋„“์–ด์กŒ๋‹ค.

  2. ๋ถ€๋ชจ์š”์†Œ์— overflow: hidden ์ ์šฉํ•˜๊ธฐ

    • ๋ถ€๋ชจ์š”์†Œ์— overflow: hidden์„ ์ ์šฉ์‹œ์ผœ์ฃผ๋ฉด ๋ถ€๋ชจ, ์ž์‹๋ฐ•์Šค์˜ ํฌ๊ธฐ์—๋„ ์˜ํ–ฅ์ด์—†๊ณ  ์ž์‹๋“ค๊ฐ„์˜ ๋งˆ์ง„๋ณ‘ํ•ฉ๋„ ์ผ์–ด๋‚˜๋Š” ๋™์‹œ์— ๋ถ€๋ชจ, ์ž์‹๊ฐ„์˜ ๋งˆ์ง„๋ณ‘ํ•ฉ์€ ๋˜ ์ผ์–ด๋‚˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค!

์ฐธ๊ณ 

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ