๐Ÿ’ป Frontend/HTML&CSS

[CSS] ์Šคํƒ€์ผ ์†์„ฑ

Kyle99 2024. 8. 12. 18:00

ํฐํŠธ์™€ ํ…์ŠคํŠธ ์†์„ฑ

 
โ–ถ ์˜ˆ์ œ ๋ณด๊ธฐ

๋”๋ณด๊ธฐ
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ํฐํŠธ์™€ ํ…์ŠคํŠธ๊ด€๋ จ ์†์„ฑ</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700;900&family=Poppins:wght@300;600;900&display=swap" rel="stylesheet">
<style>
	h1 {
		font-family: Poppins, 'Noto Sans KR' sans-serif;
		font-weight: 600;
	}
	.font {
		font : oblique small-caps bold 14px '๊ถ์„œ';
	}
	.em1 {
		font-weight: 600;
		font-style: normal;
		letter-spacing: 2em;
	}
	.css {
		text-indent: 50px; line-height: 200%;
	}
	.strong {
		word-spacing: 2em; text-decoration: underline;
	}
	.price {
		width: 500px;
		height: 50px;
		text-align: center;
		border: 1px solid blue;
	}
	.c_price {
		text-decoration: line-through;
	}
	.pre {
		white-space: pre;
	}
	.direction {
		width: 500px;
		margin: 0 auto;
		direction: rtl;
	}
	.shadow {
		width: 300px;
		height: 50px;
		margin: 0 auto;
		font-size: 2.5em;
		font-weight: bolder;
		text-shadow: 5px 5px 10px gray;
	}
	.overflow1 {
		width: 300px;
		border : 1px solid blue;
		text-overflow: ellipsis;
		white-space: nowrap;
		overflow: hidden;
	}
</style>
</head>
<body>
	<h1>ํฐํŠธ์™€ ํ…์ŠคํŠธ ๊ด€๋ จ ์†์„ฑ(Font & Text CSS Attribute)</h1>
	<p>font๋Š” ๊ธ€๊ผด์˜ ๋‹ค์–‘ํ•œ ์†์„ฑ์„ 
		<span class="font">ํ•œ ๋ฒˆ์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š”</span>
		<span class="em1">์ถ•์•ฝํ˜•</span> ์†์„ฑ์ด๋‹ค.		
	</p>
	<p class="css">HTML ๋ฌธ์„œ์˜ ๋””์ž์ธ์„ ๋‹ด๋‹นํ•˜๋Š” CSS๋Š”
	<strong class="strong">ํฐํŠธ์™€ ํ…์ŠคํŠธ ์†์„ฑ์„ ๋‹ค์–‘ํ•˜๊ฒŒ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.</strong></p>
	<p class="price">๊ทธ ์ƒํ’ˆ์˜ ํŒ๋งค๊ฐ€๋Š” <strong>9,900์›</strong>
		(<span class="c_price">10,000</span>)
	<div class="pre">ํ…์ŠคํŠธ์— ๊ณต๋ฐฑ๋ฌธ์ž๋ฅผ 
		์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ 
		์ง€์ •ํ•œ๋‹ค.</div>
	<div class="direction">ํ…์ŠคํŠธ์˜ ์“ฐ๊ธฐ ๋ฐฉํ–ฅ๊ณผ ํ•œ๊ธ€์€ ์ ์šฉ๋˜์ง€ ์•Š๋Š” font-variant</div>
	<div class="shadow">ํ…์ŠคํŠธ์— ๊ทธ๋ฆผ์ž ์„ค์ •ํ•˜๊ธฐ</div>
	<p class="overflow1">font-family๋Š” ๊ธ€๊ผด์˜ ์ข…๋ฅ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ์†์„ฑ์ด๋‹ค. 
		๋งŒ์•ฝ ๊ธ€๊ผด์— ๊ณต๋ฐฑ์žˆ๋Š” ์ด๋ฆ„์ด๋ฉด ๋”ฐ์˜ดํ‘œ(โ€˜โ€™)๋กœ ๊ฐ์‹ธ์„œ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.</p>
</body>
</html>

- h1 {font-family: Poppins, 'Noto Sans KR', sans-serif; font-weight: 600;}
๊ตฌ๊ธ€ ์›น ํฐํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ๊ธ€๊ผด๊ณผ ๊ธ€๊ผด์˜ ๋‘๊ป˜๋ฅผ ์ง€์ •ํ•œ๋‹ค.
font-family์— ์ง€์ •ํ•œ ์ˆœ์„œ๋Œ€๋กœ ๊ธ€๊ผด์ด ์ ์šฉ๋˜๋Š”๋ฐ Poppins๋Š” ์˜๋ฌธ ์ „์šฉ ํฐํŠธ์ด๋ฏ€๋กœ
์˜๋ฌธ์€ Poppins ํฐํŠธ๊ฐ€ ์ ์šฉ๋˜๊ณ  ํ•œ๊ธ€์€ Poppins ํฐํŠธ์— ํ•œ๊ธ€์ด ์—†์œผ๋ฏ€๋กœ
๋‹ค์Œ์— ์ง€์ •ํ•œ 'Noto Sans KR' ํฐํŠธ๊ฐ€ ์ ์šฉ๋˜์–ด ํ™”๋ฉด์— ํ‘œ์‹œ๋œ๋‹ค.
๊ธ€๊ผด ์ด๋ฆ„์— ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฉด ๊ธ€๊ผด ์ด๋ฆ„์„ ์˜จ์ „ํžˆ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋”ฐ์˜ดํ‘œ ๊ฐ์‹ผ๋‹ค. (https://fonts.google.com)
 
- .font { font: oblique small-caps bold 14px ๊ถ์„œ; }
font ์†์„ฑ์€ ๋ชจ๋“  ํฐํŠธ ์†์„ฑ์„ ํ•˜๋‚˜๋กœ ์ •์˜ํ•˜๋Š” ์ถ•์•ฝ ์†์„ฑ์ด๋‹ค.
font ์†์„ฑ์— ๊ฐ’์œผ๋กœ font-style, font-variant, font-weight, font-size/line-height, font-family ์ˆœ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
font-size ์™€ font-family ๋Š” ํ•„์ˆ˜ ๊ฐ’์œผ๋กœ ๋‘ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์„ค์ •๋œ๋‹ค. ๋‚˜๋จธ์ง€๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค.
 
- .em1 { font-weight: 600; font-style: normal; letter-spacing: 2em; }
font-weight ์†์„ฑ์— ๊ฐ’์€ lighter, bolder, bold ๋“ฑ์˜ ๊ฐ’๊ณผ 100 ~ 900 ์‚ฌ์ด 100 ๋‹จ์œ„๋กœ ๊ธ€๊ผด์˜ ๋‘๊ป˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
letter-spacing์€ ๊ธ€์ž ์‚ฌ์ด ๊ฐ„๊ฒฉ์„ ์ง€์ •
 
- .css { text-indent: 50px; line-height: 200%; }
ํ…์ŠคํŠธ ๋“ค์—ฌ์“ฐ๊ธฐ์™€ ์ค„ ๊ฐ„๊ฒฉ ์ง€์ •
 
- .strong { word-spacing: 2em; text-decoration: underline; }
ํ…์ŠคํŠธ์˜ ๋‹จ์–ด ์‚ฌ์ด ๊ฐ„๊ฒฉ๊ณผ ๋ฐ‘์ค„์„ ์ง€์ •
 
- .c_price { text-decoration: line-through; }
ํ…์ŠคํŠธ์— ์ทจ์†Œ์„  ์ง€์ •
 
- .pre { white-space: pre; }
์—ฐ์†ํ•˜๋Š” ๊ณต๋ฐฑ์„ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ ๋˜๋„๋ก ์ง€์ •
 
- font-variant: small-caps;
ํ…์ŠคํŠธ๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ง€์ •

- direction: rtl;
ํ…์ŠคํŠธ ์“ฐ๊ธฐ ๋ฐฉํ–ฅ์„ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ง€์ •
 
- text-shadow: 5px 5px 5px gray;
ํ…์ŠคํŠธ์— ๊ทธ๋ฆผ์ž ํšจ๊ณผ ์ง€์ • - ๊ฐ€๋กœ ์˜ต์…‹ ์„ธ๋กœ ์˜ต์…‹ ๊ทธ๋ฆผ์ž ๋ฒˆ์ง ์ •๋„ ์ƒ‰์ƒ
 
- text-overflow: ellipsis;
ํ…์ŠคํŠธ๊ฐ€ ์ž˜๋ ธ๋‹ค๋Š” ์˜๋ฏธ๋กœ ๋ง์ค„์ž„ํ‘œ(...)๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.
ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•  ๋•Œ ๋‚ด์šฉ์ด ๋ฐ•์Šค ๋ณด๋‹ค ๊ธด ๊ฒฝ์šฐ ํ…์ŠคํŠธ์˜ ์ค„์„ ๋ฐ”๊พธ์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๊ณ 
text-overflow ์†์„ฑ์— ellipsis๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋ง ์ค„์ž„ํ‘œ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ๋„˜์น˜๋Š” ํ…์ŠคํŠธ์˜ ๋‚ด์šฉ์„ ํ™”๋ฉด์—์„œ ๋ณด์ด์ง€ ์•Š๊ฒŒ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
 
- white-space: nowrap;
์—ฐ์†ํ•˜๋Š” ๊ณต๋ฐฑ์„ ํ•œ ์นธ์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ๋‚ด์šฉ์ด ๊ธธ์–ด๋„ ์ค„์„ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.
 
- overflow: hidden;
๋ฐ•์Šค์˜ ํฌ๊ธฐ๋ณด๋‹ค ๋„˜์น˜๋Š” ๋‚ด์šฉ์€ ์ˆจ๊ธด๋‹ค.
 

CSS์˜ ๋ชฉ๋ก ์†์„ฑ

โ–ถ ์˜ˆ์ œ ๋ณด๊ธฐ

๋”๋ณด๊ธฐ
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS์˜ ๋ชฉ๋ก ์†์„ฑ</title>
<style>
	body {
		font: 0.9em '๋ง‘์€ ๊ณ ๋”•', "๋‹์›€" sans-serif; 
	}
	#webStandard {
		list-style-image: url(images/arrow.gif);
		list-style-position: inside;
	}
	#listJavaScript {
		list-style-type: upper-roman;
		list-style-position: outside;
	}
</style>
</head>
<body>
	<header>	
		<h1>CSS์—์„œ ๋ชฉ๋ก ์†์„ฑ ๋‹ค๋ฃจ๊ธฐ</h1>
	</header>
	<section>
		<article>
			<h3>์›น ํ‘œ์ค€ ๋„์„œ ๋ชฉ๋ก</h3>
			<ul id="webStandard">				
				<li>HTML5+CSS3+JavaScript ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ</li>
				<li>HTML5์™€ CSS3๋กœ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ์ž‘ํ•˜๊ธฐ</li>				
			</ul>		
		</article>
		<article>
			<h3>์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์„œ ๋ชฉ๋ก</h3>
			<ol id="listJavaScript">				
				<li>์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์™„๋ฒฝ ๊ฐ€์ด๋“œ</li>	
				<li>๋ชจ๋˜ ์›น์„ ์œ„ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ</li>
			</ol>
		</article>		
	</section>
</body>
</html>
CSS์˜ ๋ชฉ๋ก ์†์„ฑ

- body { font: 0.9em "๋ง‘์€ ๊ณ ๋”•", "๋‹์›€", sans-serif; }
font-size์™€ font-family ๋ฅผ ์ง€์ •
 
- list-style-position: inside;
๋งˆ์ปค(marker)๋ฅผ ๋“ค์—ฌ์“ฐ๊ธฐ ํ•œ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ outside ์ด๋‹ค.
 

ํ…Œ๋‘๋ฆฌ ๊ด€๋ จ ์†์„ฑ๊ณผ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ ์†์„ฑ

โ–ถ ์˜ˆ์ œ ๋ณด๊ธฐ

๋”๋ณด๊ธฐ
<!DOCTYPE HTML>
<html>
<head>
<title>ํ…Œ๋‘๋ฆฌ ๊ด€๋ จ ์†์„ฑ๊ณผ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ ์†์„ฑ</title>
<meta charset="UTF-8" />
<style>
	body {
		font: 0.95em '๋ง‘์€ ๊ณ ๋”•', sans-serif;
		margin: 30px;
	}
	div {
		width: 600px;
		border: 10px solid #FF0033;
		border-radius: 20px;
		background-color: #6d6d6d;
	}
	p {
		background-color: #ffffff;
		line-height: 2em;
		margin: 20px;
		padding: 15px;
	}
	.round1 {
		border: 10px solid #FF9933;
		border-radius: 30px 0;
	}
	.round2 {
		border: 10px solid #FF66FF;
		border-radius: 30px 0 0 0;
	}
	.round3 {
		height: 50px;
		border-radius: 30px;
		background-image: url(images/gear_icon01.png);
		background-repeat: repeat-x;
		background-position: center;
	}
	.round4 {
		width: 50px;
		height: 50px;
		border-radius: 30px/20px;
		background-image: url(images/gear_icon01.png);
		background-repeat: no-repeat;
		background-position: center;
		background-size: 50px 50px;
		opacity: 0.5;
	}
	.icon01 {
		width: 24px;
		height: 26px;
		padding: 0px;
		border-radius: 25%;
		background-image: url(images/bg_long01.jpg);
		background-repeat: no-repeat;
		background-position: -2px -89px;
	}
</style>
</head>
<body>
	<div class="shadow">
		<p class="round1">
			์ผ์›”๊ณผ ํž˜์ฐจ๊ฒŒ ํ–‰๋ณต์Šค๋Ÿฝ๊ณ  ์–ผ๋งˆ๋‚˜ ๋‚ด๋ ค์˜จ ์“ธ์“ธํ•˜๋žด?<br/>
			์ด์ƒ์ด ๊ณต์ž๋Š” ์—ญ์‚ฌ๋ฅผ ํ•˜์—ฌ๋„ ์œ„ํ•˜์—ฌ ๋์— ๊ฐ™์ด ์žฅ์‹ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.<br/>
			๋“๋Š” ์ธ๊ฐ„์ด ์ด์„ฑ์€ ๊ฐ€์ง„ ์ด๊ฒƒ์€ ์ธ๊ฐ„์˜ ๋ง์ด๋‹ค.</p>
		<p class="round2">
			์ƒ์ƒํ•˜๋ฉฐ, ์‚ฌ๋ž‘์˜ ์ปค๋‹ค๋ž€ ์•„๋ฆ„๋‹ค์šฐ๋ƒ?<br/>
			๊ฐ™์ด, ๋Œ€์ค‘์„ ์‚ฌ๋ผ์ง€์ง€ ๋ณด์ด๋Š” ์ธ์ƒ์— ์œ ์†Œ๋…„์—๊ฒŒ์„œ ๋ฐ”์ด๋ฉฐ, ์•ฝ๋™ํ•˜๋‹ค.<br/>
			๋ชปํ•  ๋‚ด๋Š” ์‚ฐ์•ผ์— ๋ฐฉํ™ฉํ•˜์—ฌ๋„, ์ƒ๋ช…์„ ๋ฐ์€ ๊ฒƒ์ด๋‹ค.</p>
		<p class="round3"></p>
		<p class="round4"></p>
		<p class="icon01"></p>
	</div>
	<p id="link">
		<a href="http://hangul.thefron.me">ํ•œ๊ธ€ Lorem Ipsum</a>์—์„œ ๋ฐœ์ทŒ</p>
</body>
</html>

border๋Š” ์ถ•์•ฝํ˜• ํ‘œํ˜„์œผ๋กœ ํ…Œ๋‘๋ฆฌ ๋‘๊ป˜, ์„  ์ข…๋ฅ˜, ์„  ์ƒ‰์ƒ์„ ํ•œ ๋ฒˆ์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
(border-style: solid; (dotted, dashed, double, none, hidden)) (border-width: 10px;) (border-color: #ff9933;)
ํ…Œ๋‘๋ฆฌ์˜ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ์„œ ์œ„์ชฝ, ์˜ค๋ฅธ์ชฝ, ์•„๋ž˜์ชฝ, ์™ผ์ชฝ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
(border-top, border-right, border-bottom, border-left) (border-top-width, border-right-color, border-bottom-style)
 
- border-radius:30px 0px;
์ขŒ ์ƒ๋‹จ ์šฐ ํ•˜๋‹จ์— ๋ฐ˜์ง€๋ฆ„ 30px์˜ ๋ผ์šด๋“œ ๋ชจ์„œ๋ฆฌ ์ง€์ •
 
- border-radius:30px 0px 0px 0px;
์ขŒ ์ƒ๋‹จ์— ๋ฐ˜์ง€๋ฆ„ 30px์˜ ๋ผ์šด๋“œ ๋ชจ์„œ๋ฆฌ ์ง€์ •
 
- border-radius: 30px;
๊ฐ€๋กœ์„ธ๋กœ ๋ฐ˜์ง€๋ฆ„ 30px ๋ผ์šด๋“œ ๋ชจ์„œ๋ฆฌ ์ง€์ •
 
- background-image: url('images/gear_icon01.png');
- background-repeat: repeat-x;
๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆ˜ํ‰๊ณผ ์ˆ˜์ง ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ˜๋ณตํ•ด ์ ์šฉ๋˜๋Š”๋ฐ
background-repeat ์†์„ฑ์„ ์ด์šฉํ•ด ๋ฐ˜๋ณต์—ฌ๋ถ€ ๋˜๋Š” ๋ฐ˜๋ณตํ•  ๋ฐฉํ–ฅ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
 
- border-radius: 30px/20px;
๊ฐ€๋กœ ๋ฐ˜์ง€๋ฆ„ 30px ์„ธ๋กœ ๋ฐ˜์ง€๋ฆ„ 20px์˜ ๋ผ์šด๋“œ ๋ชจ์„œ๋ฆฌ ์ง€์ •
 
- background-image: url('images/gear_icon01.png');
- background-size: 50px 50px;
- background-repeat: no-repeat;
- background-position: 15px 15px;
๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ์™€ ๋ฐฐ์น˜ํ•˜๋Š” ์œ„์น˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
 
- opacity: 0.5;
opacity ์†์„ฑ์— 0.0 ~ 1.0 ์‚ฌ์ด์˜ ๊ฐ’์œผ๋กœ ๋ถˆํˆฌ๋ช…๋„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
0.0์€ ๋ถˆํˆฌ๋ช…๋„๊ฐ€ 0์œผ๋กœ ํˆฌ๋ช…, 0.5๋Š” ๋ถˆํˆฌ๋ช…๋„๊ฐ€ ์ ˆ๋ฐ˜์œผ๋กœ ๋ฐ˜ํˆฌ๋ช…ํ•˜๊ฒŒ ๋ณด์ธ๋‹ค.
 
- background-image: url('images/bg_long01.jpg');
- background-repeat: no-repeat;
- background-position: -2px -89px;
์ž‘์€ ์ด๋ฏธ์ง€๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค์–ด
๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋กœ ์ง€์ •ํ•˜๋ฉด ํŒŒ์ผ ๋กœ๋”ฉ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.