HTML CSS JavaScript

ํ™ํƒœํ™”ยท2023๋…„ 11์›” 17์ผ

HTMLโ“

๐Ÿ˜Š ์ „ํ™”๊ฑธ๊ธฐ ~

<a class="call" href="tel:์ „ํ™”๋ฒˆํ˜ธ" ontouchstart="call_check()"><span>ํ†ตํ™”ํ•˜๊ธฐ</span></a>

์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ontouchstart ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋ช‡๋ฒˆ ์ „ํ™”๋˜์—ˆ๋Š”์ง€ ์ฒดํฌ ๊ฐ€๋Šฅํ•˜๋‹ค
๋ฌผ๋ก  ์ƒ๋Œ€๋ฐฉ๊ณผ ์‹ค์ œ๋กœ ํ†ตํ™”์— ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€๋Š” ํ™•์ธ์ด ์–ด๋ ต๋‹ค

๐Ÿ˜Š data ์†์„ฑ

data-๋กœ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ

<div id="user-info" data-user-id="abc" data-user-name="teahwa">
</div>
const userId = $('#user-info').data('user-id');
const userName = $('#user-info').data('user-name');

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ด์šฉํ•ด ๋™์ ์œผ๋กœ ๊ฐ’์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค

๐Ÿ˜Š ์ธํ’‹ํƒœ๊ทธ ์†์„ฑ

<input type="text" autofocus>
<input type="text" required>

CSSโ“

๐Ÿ˜Š position

static

ํฌ์ง€์…˜์„ ์ฃผ์ง€์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šคํƒœํ‹ฑ์œผ๋กœ ๊ฐ’์ด ์ง€์ •๋˜๊ณ 
๋ ˆํ”„ํŠธ ๋ผ์ดํŠธ ํƒ‘ ๋ฐ”ํ…€์€ ๋น„ํ™œ์„ฑํ™” ๋œ๋‹ค

relative

์ž๊ธฐ ์ž์‹  ์œ„์น˜์—์„œ ์›€์ง์ผ ์ˆ˜ ์žˆ๊ณ  ๋ถ€๋ชจ๊ฐ€ ๋ฆด๋Ÿฌํ‹ฐ๋ธŒ๋ผ๋ฉด
๋ถ€๋ชจ์˜ ์œ„์น˜์— ๋”ฐ๋ผ ์ž๊ธฐ์ž์‹ ๋„ ์ƒ๋Œ€์ ์œผ๋กœ ์›€์ง์ธ๋‹ค
์ฆ‰ ์ž๊ธฐ๊ฐ€ ์–ด๋””์—์žˆ์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜๋Š” ํŠน์ง•์ด ์žˆ๋‹ค

absolute

๋ถ€๋ชจํƒœ๊ทธ ์ค‘ ์Šคํƒœํ‹ฑ์ด ์•„๋‹Œ ํƒœ๊ทธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ
์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ •ํ•œ๋‹ค ์ž๊ธฐ ์ž์‹ ์˜ ์œ„์น˜๋Š” ๊ธฐ์–ตํ•˜์ง€ ์•Š๋Š”๋‹ค

absolute๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด position์ด static์ด ์•„๋‹Œ ์กฐ์ƒ ์š”์†Œ์— ์ƒ๋Œ€์ ์œผ๋กœ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  fixed๋Š” ๋ทฐํฌํŠธ์— ๋Œ€ํ•ด ๊ณ ์ •๋œ ์œ„์น˜๋ฅผ ์„ค์ •ํ•œ๋‹ค

์ด ๋‘˜์€ ์š”์†Œ์˜ ํฌ๊ธฐ๋ฅผ ์ž๋™์œผ๋กœ ๊ฒฐ์ •ํ•˜์ง€ ์•Š์œผ๋ฉฐ
ํฌ๊ธฐ๋Š” width์™€ height ์†์„ฑ์œผ๋กœ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์ฝ˜ํ…์ธ ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค

๋‹ค๋ฅธ ์š”์†Œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฏ€๋กœ ์•„๋ž˜์— ์žˆ๋Š” ์š”์†Œ๋“ค์€
absolute๋‚˜ fixed๊ฐ€ ์œ„์น˜ํ•œ ๊ณต๊ฐ„์„ ์ฑ„์šฐ๋ ค๊ณ  ํ•˜๋ฉฐ
์ด๋กœ ์ธํ•ด ๊ฐ€๋ ค์ง€๊ฑฐ๋‚˜ ์œ„์น˜๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค

๐Ÿ˜Š flex

flex-basis๋Š” ํ”Œ๋ ‰์Šค ์•„์ดํ…œ์˜ ์ดˆ๊ธฐ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ์†์„ฑ
flex-shrink๋Š” ํ”Œ๋ ‰์Šค ์•„์ดํ…œ์ด flex-basis์˜ ๊ฐ’๋ณด๋‹ค ์ž‘์•„์งˆ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์†์„ฑ

flex-basis์˜ ๊ธฐ๋ณธ๊ฐ’์€ auto
auto๋Š” ํ”Œ๋ ‰์Šค ์•„์ดํ…œ์˜ width ๋˜๋Š” height ์†์„ฑ์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜
ํฌ๊ธฐ๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์ฝ˜ํ…์ธ  ํฌ๊ธฐ๋งŒํผ์„ ์‚ฌ์šฉํ•œ๋‹ค
๋”ฐ๋ผ์„œ, flex-shrink๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด flex-basis๋ฅผ ๊ผญ ๊ฐ’์ค˜์•ผํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ 
flex-basis์˜ ๊ฐ’์— ๋”ฐ๋ผ flex-shrink์˜ ํšจ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค

.item {
  width: 100px;
  flex-basis: 200px;
  flex-shrink: 1;
}

์ด๋•Œ, flex-basis์˜ ๊ฐ’์€ 200px์ด๋ฏ€๋กœ width ์†์„ฑ์˜ ๊ฐ’์„ ๋ฌด์‹œ๋œ๋‹ค
ํ”Œ๋ ‰์Šค ์•„์ดํ…œ์˜ ์ดˆ๊ธฐ ํฌ๊ธฐ๋Š” 200px์ด๊ณ  flex-shrink์˜ ๊ฐ’์€ 1
์ด๋Š” ํ”Œ๋ ‰์Šค ์•„์ดํ…œ์ด flex-basis๋ณด๋‹ค ์ž‘์•„์งˆ ์ˆ˜ ์žˆ๊ณ 
ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•  ๋•Œ ํ”Œ๋ ‰์Šค ์•„์ดํ…œ์˜ ํฌ๊ธฐ๊ฐ€
200px๋ณด๋‹ค ์ž‘์•„์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค

flex์˜ ์ž์‹ํƒœ๊ทธ๊ฐ€ ํ™”๋ฉด์ด ์ค„์–ด๋“ค์Œ์— ์˜ํ–ฅ๋ฐ›์ง€์•Š๊ณ  ์ž๊ธฐ ํฌ๊ธฐ๋ฅผ ํ•ญ์ƒ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์œผ๋ฉด

flex-shrink: 0;

์œผ๋กœ ์ฃผ๋ฉด๋œ๋‹ค

flex์˜ ์ž์‹ํƒœ๊ทธ๋“ค์ด ๊ฐ™์€๋น„์œจ์„ ๊ฐ€์ง€๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

flex-grow:1;

์„ ์ฃผ๊ณ  ์ž์‹ํƒœ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ํฌ๊ฒŒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด
2๋ฅผ ์ฃผ๋ฉด 2๋ฐฐ 3์„ ์ฃผ๋ฉด 3๋ฐฐ๊ฐ€ ๋œ๋‹ค

์ž์‹ํƒœ๊ทธ:nth-child(2){flex-grow:3;}

๐Ÿ˜Š ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์†์„ฑ

opacity : ํˆฌ๋ช…๋„
font-family : ๊ธ€์”จ์ฒด
font-size : ๊ธ€์ž ํฌ๊ธฐ
line-height : ์ค„ ๊ฐ„๊ฒฉ
display : block, inline, flex, none
box-shadow : ๊ทธ๋ฆผ์ž ํšจ๊ณผ

๐Ÿ˜Š transition, animation

์• ๋‹ˆ๋ฉ”์ด์…˜ ํŠธ๋žœ์ง€์…˜์€ ๋ชจ๋‘ ์†์„ฑ์˜ ๋ณ€ํ™”๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋ผ๋Š” ์ ์—์„œ ๋™์ผํ•˜์ง€๋งŒ
์• ๋‹ˆ๋ฉ”์ด์…˜์€ ์ค‘๊ฐ„ ๋‹จ๊ณ„๊ฐ€ ์žˆ์–ด์„œ ๋ณด๋‹ค ๋‹ค์–‘ํ•˜๊ณ  ๋ณต์žกํ•œ ์ผ๋ จ์˜ ๋ณ€ํ™”๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค
ํŠธ๋žœ์ง€์…˜์€ ์ดˆ๊ธฐ์ƒํƒœ์™€ ์ตœ์ข…์ƒํƒœ๋งŒ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค
์• ๋‹ˆ๋ฉ”์ด์…˜์€ ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋  ๋•Œ ์ž๋™์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ณ  ์ง€์ •ํ•œ ํšŸ์ˆ˜๋งŒํผ ๋ฌดํ•œํžˆ ๋ฐ˜๋ณต๋  ์ˆ˜ ์žˆ์ง€๋งŒ
ํŠธ๋žœ์ง€์…˜์€ ํŠธ๋ฆฌ๊ฑฐ์— ์˜ํ•ด์„œ ์‹คํ–‰๋˜๋ฉฐ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์ œ๊ฑฐ๋˜๋ฉด ๋‹ค์‹œ ์›๋ž˜๋Œ€๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ๋œ๋‹ค

๐Ÿ˜Š ๊ธ€์ž์ˆ˜ ์ œํ•œ

overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 1;
white-space: nowrap;
word-break: break-all;

๐Ÿ˜Š ๊ณต๊ฐ„

๋งˆ์ง„์€ ์š”์†Œ์˜ ํ…Œ๋‘๋ฆฌ(border) ๋ฐ”๊นฅ์ชฝ์˜ ๊ณต๊ฐ„

margin: 10px; 		๋ชจ๋“  ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ๋งˆ์ง„์„ 10px๋กœ ์„ค์ •

ํŒจ๋”ฉ์€ ์š”์†Œ์˜ ํ…Œ๋‘๋ฆฌ(border) ์•ˆ์ชฝ์˜ ๊ณต๊ฐ„

padding: 10px; 		๋ชจ๋“  ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ํŒจ๋”ฉ์„ 10px๋กœ ์„ค์ •

์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋Š” ์š”์†Œ์˜ ๋‚ด์šฉ(content)์ด ์š”์†Œ์˜ ์ƒ์ž ์˜์—ญ์„ ๋ฒ—์–ด๋‚  ๋•Œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€๋ฅผ ์ •์˜

overflow: visible;	๊ธฐ๋ณธ๊ฐ’: ์š”์†Œ์˜ ์ƒ์ž ๋ฐ–์œผ๋กœ ๋„˜์น˜๋Š” ๋ถ€๋ถ„์ด ๋ณด์ด๊ฒŒ
overflow: hidden;	๋„˜์น˜๋Š” ๋ถ€๋ถ„์„ ์ˆจ๊น€
overflow: scroll;	์Šคํฌ๋กค๋ฐ”๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งŒ ์Šคํฌ๋กค๋ฐ”๊ฐ€ ํ‘œ์‹œ
overflow: auto;		์Šคํฌ๋กค๋ฐ”๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งŒ ์Šคํฌ๋กค๋ฐ”๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ, 
					์Šคํฌ๋กค๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋‹ค

content-box๋Š” ๋ฐ•์Šค์˜ ํฌ๊ธฐ๋ฅผ ์š”์†Œ์˜ ์ฝ˜ํ…์ธ (content) ์˜์—ญ์˜ ํฌ๊ธฐ๋กœ ์ •์˜
border-box๋Š” ํ…Œ๋‘๋ฆฌ์™€ ํŒจ๋”ฉ์„ ํฌํ•จํ•˜์—ฌ ์ „์ฒด ํฌ๊ธฐ๋ฅผ ์ •์˜

box-sizing: content-box; ๊ธฐ๋ณธ๊ฐ’
box-sizing: border-box;

JavaScriptโ“

๐Ÿ˜Š ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ~

$('์„ ํƒ์ž').show();
$('์„ ํƒ์ž').hide();

์ด์šฉํ•ด์„œ ๋ฌธ๊ตฌ, ๋ชจ๋‹ฌ์ฐฝ์„ ๋ณด์—ฌ์ฃผ๊ฑฐ๋‚˜ ๊ฐ์ถ”๊ธฐ~

๐Ÿ˜Šํ˜„์žฌ ํƒœ๊ทธ์˜ ๋ถ€๋ชจ ํƒœ๊ทธ์˜ ํ˜•์ œ์˜ ์ž์‹ํƒœ๊ทธ!

$(this).parents().siblings().children(): parents() 

ํ˜„์žฌ ์š”์†Œ์˜ ๋ถ€๋ชจ ๊ทธ ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ ๋“ฑ์„ ๋ชจ๋‘ ํฌํ•จํ•œ๋‹ค
๊ทธ๋Ÿฐ ๋‹ค์Œ siblings() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ถ€๋ชจ ์š”์†Œ๋“ค์˜ ๋ชจ๋“  ํ˜•์ œ ์š”์†Œ๋ฅผ ์„ ํƒ
๋งˆ์ง€๋ง‰์œผ๋กœ children() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ํ˜•์ œ ์š”์†Œ๋“ค์˜ ๋ชจ๋“  ์ž์‹ ์š”์†Œ๋ฅผ ์„ ํƒ

$(this).parent().siblings().children(): parent() 

ํ˜„์žฌ ์š”์†Œ์˜ ์ง์ ‘์ ์ธ ๋ถ€๋ชจ ์š”์†Œ๋งŒ์„ ์„ ํƒํ•œ๋‹ค
๊ทธ๋Ÿฐ ๋‹ค์Œ siblings() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ถ€๋ชจ ์š”์†Œ์˜ ๋ชจ๋“  ํ˜•์ œ ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ณ 
๋งˆ์ง€๋ง‰์œผ๋กœ children() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ํ˜•์ œ ์š”์†Œ๋“ค์˜ ๋ชจ๋“  ์ž์‹ ์š”์†Œ๋ฅผ ์„ ํƒ

ํ•ด๋‹น ์š”์†Œ์˜ index ๊ฐ’ ์ถ”์ถœ

const index = $(this).index();

๐Ÿ˜Š Swipe ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

swiper ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์‹œ ์ผ์ •ํ•œ ์†๋„๋กœ ํ๋ฅด๋Š” ํšจ๊ณผ ์ฃผ๊ณ  ์‹ถ์„๋•Œ
.swiper-wrapper{} CSS์—
transition-timing-function : linear ๋ฅผ ์ถ”๊ฐ€ํ•˜์ž!

linear: ์ผ์ •ํ•œ ์†๋„๋กœ ๋ณ€ํ™”
ease: ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‹œ์ž‘๊ณผ ๋์—์„œ๋Š” ์ฒœ์ฒœํžˆ ์ง„ํ–‰ํ•˜๊ณ  ์ค‘๊ฐ„ ๋ถ€๋ถ„์—์„œ๋Š” ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰
ease-in: ์ฒœ์ฒœํžˆ ์‹œ์ž‘ํ•˜์—ฌ ๋์—์„œ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰
ease-out: ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•˜์—ฌ ๋์—์„œ ์ฒœ์ฒœํžˆ ์ง„ํ–‰
ease-in-out: ์ฒœ์ฒœํžˆ ์‹œ์ž‘ํ•˜์—ฌ ์ค‘๊ฐ„์—์„œ๋Š” ๋น ๋ฅด๊ฒŒ, ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๋์—์„œ๋Š” ์ฒœ์ฒœํžˆ ์ง„ํ–‰

profile
์šฐ์–ด์–ด์•„์•„์•™

0๊ฐœ์˜ ๋Œ“๊ธ€