๋ฐ˜์‘ํ˜•

๊ฐœ๋ฐœ ๐Ÿพ/HTML,CSS 13

์‹œ์Šคํ…œ scroll ์ปค์Šคํ…€ ํ•˜๊ธฐ

์›น์‚ฌ์ดํŠธ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์Šคํฌ๋กค๋ฐ”๋Š” ์ค‘์š”ํ•œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI) ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋ณธ ์Šคํฌ๋กค์€ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์š”์ฆ˜์€ ์Šคํฌ๋กค์˜ ๋””์ž์ธ๋„ ๋งŽ์ด ๊ณ ๋ ค๋˜์„œ ๋‚˜์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ์Šคํฌ๋กค์€ ์–ด๋–ป๊ฒŒ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜๋ฉด๋ ๊นŒ์š”~? ::scroll ์ด๋ผ๋Š” ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ์˜์™ธ๋กœ ๊ฐ„๋‹จ ํ•˜๋‹ต๋‹ˆ๋‹ค. .scroll { &::-webkit-scrollbar { width: 7px; height: 7px; } &::-webkit-scrollbar-track { background: transparent; } &::-webkit-scrollbar-thumb { background: #3c3c3c; border-radius: 45px; } &::-webkit-scrollbar-thu..

ํฐํŠธ๋ฅผ ํ•œ๊ธ€๊ณผ ์˜์–ด,์ˆซ์ž ๋”ฐ๋กœ ์ ์šฉํ•˜๊ธฐ (feat. unicode-range)

์ฐธ์กฐ1: https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/unicode-range ์ฐธ์กฐ2: https://www.fileformat.info/info/unicode/char/26/index.htm ์œ ๋‹ˆ์ฝ”๋“œ๋ฌธ์žํ‘œ: https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_2000~2FFF ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด ์ด๋Ÿฐ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ๊ธ€์„ ๋‚˜๋ˆ”๊ณ ๋”•์œผ๋กœ ํ•ด์ฃผ์‹œ๊ณ , ์˜๋ฌธ,์ˆซ์ž๋Š” OpensSans๋กœ ํ•ด์ฃผ์„ธ์š”! ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด๋˜ ์‹œ์ ˆ์—๋Š” ์ˆซ์ž๋งˆ๋‹ค ํด๋ž˜์Šค๋ฅผ ์ฃผ์–ด font๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ ์šฉ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ •๋ง ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋”๋ฆฌ๊ตฌ์š”! ๋ฐ”๋กœ unicode-range๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. unico..

Live sass compiler ์‚ฌ์šฉํ•˜๊ธฐ

์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” node์—์„œ package.json์œผ๋กœ ์ˆ˜์ž‘์—…(?)์œผ๋กœ ์ž๋™ ์ปดํŒŒ์ผ๋˜๋Š” ํ™˜๊ฒฝ์„ ์„ธํŒ…ํ–ˆ์—ˆ๋Š”๋ฐ, (๋ณด๋Ÿฌ๊ฐ€๊ธฐ) ์ด๋ฒˆ์—๋Š” vscode์—์„œ ์ œ๊ณต๋˜๋Š” Live Sass Compiler๋ผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ํ•˜๊ธฐ VSCode๋ฅผ ์—ด๊ณ  ํ™•์žฅํ”„๋กœ๊ทธ๋žจ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ณณ์—์„œ sass๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. install์„ ํด๋ฆญํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ์ธก ํ•˜๋‹จ์— Watch Sass๋ฅผ ํด๋ฆญํ•˜๋ฉด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ปดํŒŒ์ผ์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ปดํŒŒ์ผ์ด ๋ฉ๋‹ˆ๋‹ค. CSS๊ฒฝ๋กœ ์„ค์ •ํ•˜๊ธฐ vscode setting ๋ž€์—์„œ scss์—์„œ css๋กœ ์ปดํŒŒ์ผ ์‹œ css๊ฐ€ ์ €์žฅ๋  ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™ผ์ชฝ ํ•˜๋‹จ Manage ๋ฒ„ํŠผ์—์„œ Setting์„ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. sass๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ฐฉ๊ธˆ ์„ค์น˜ํ•œ Li..

Node ๊ธฐ๋ฐ˜ SASS ์ž…๋ฌธํ•˜๊ธฐ

์˜ค๋žœ๋งŒ์— html, css, javascript๋กœ ์ฝ”๋”ฉ์„ ํ•ด์•ผ ํ•˜๋‹ค ๋ณด๋‹ˆ, ์˜ ๊ธฐ์กด์ฒ˜๋Ÿผ ํ•˜๊ธฐ์—๋Š” ๊ท€์ฐจ๋‹ˆ์ฆ˜์ด ์ƒ๊ฒจ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜… ๊ทธ๋™์•ˆ์€ ๋”ฑํžˆ ๊ด€์‹ฌ ๊ฐ–์„ ๋งŒํ•œ ์ผ์€ ์—†์—ˆ์œผ๋‚˜ ๊ท€์ฐฎ์€ ๊ฑด ๋„ˆ๋ฌด ์‹ซ์œผ๋‹ˆ ์—†๋˜ ๊ด€์‹ฌ์ด ์ƒ๊ธฐ๊ฒŒ ๋˜๋ฉด์„œ ์ด๋ฒˆ ๊ธฐํšŒ์— ์ž…๋ฌธํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๊ณ  ํ•˜๋‚˜์”ฉ ๋”ฐ๋ผํ•˜๊ฑฐ๋‚˜ ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ๊ณต๋ถ€ํ•ด๋„ ์ข‹์ง€๋งŒ, ์ „๋ฐ˜์ ์œผ๋กœ ํ•œ ๋ฒˆ ์งง๊ฒŒ ๊ฒ‰ํ•ฅ๊ธฐ ์‹์œผ๋กœ ์ž‘์„ฑํ•ด๋ณด๊ณ  ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด ์ดํ•ดํ•˜๋Š”๋ฐ ์ข€ ๋” ๋„์›€์ด ๋˜์ง€ ์•Š์„๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค. ์ฐธ์กฐ: https://sass-lang.com/ 1. ํ™˜๊ฒฝ์„ธํŒ… ๊ทธ๋Ÿด ๋ฆฌ ์—†๊ฒ ์ง€๋งŒ node๊ฐ€ ์—†๋‹ค๋ฉด ์„ค์น˜ ๊ธฐ์กด ๋ฒ„์ „(node-sass, libsass)๋Š” ํ์ง€๋˜์—ˆ๋‹ค๊ณ  ํ•˜๋‹ˆ Dart Sass๋ฅผ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ํ•˜๋„ค์š”. npm install -g sass // ๋งŒ์•ฝ ์จ๋ณด๊ณ  ๋‹ค์‹œ ์‚ญ์ œํ•˜๊ณ  ์‹ถ๋‹ค..

CSS์—์„œ ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ

์ฐธ์กฐ : https://developer.mozilla.org/ko/docs/Web/CSS/Using_CSS_custom_properties IE์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€์›์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋„์™€์ฃผ๋Š”css-var-ponyfill์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๊ธดํ•œ๋ฐ, ์•„๋ฌด๋ฆฌ ์„ค์ •ํ•ด๋„ ํ•ด๊ฒฐ์ฑ…์„ ๋ชป ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ข€ ๋” ํŒŒ๋ณด๊ณ  ํ•ด๊ฒฐ์ฑ…์ด ๋‚˜์˜ค๋ฉด ์ถ”ํ›„ ํฌ์ŠคํŒ…ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. element์™€ root์—์„œ ์„ ์–ธํ•จ์œผ๋กœ์จ ์Šค์ฝ”ํ”„(scope)๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. element์—์„œ ์ง€์ •๋œ ๋ณ€์ˆ˜๋Š” ํ•ด๋‹น element๊ฐ€ ๋ถ€๋ชจ๊ฐ€ ์•„๋‹ˆ๋ฉด ์ ์šฉ์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. :root { --box-size: 50px; } .box1 { --main-color: orange; } :root๋Š” ์ „์—ญ์„ ๋œปํ•˜๊ณ . box1 ์€. box1์„ ํฌํ•จํ•œ ํ•˜์œ„ ele..

select ํƒœ๊ทธ ์ปค์Šคํ…€ ํ•˜๊ธฐ, ํ˜น์€ ์ง์ ‘ ๋งŒ๋“ค๊ธฐ (feat. javascript)

1. Select CSS Customizing Select ํƒœ๊ทธ์˜ ์™ธํ˜•์€ ์ฃผ๋กœ ๊ฐ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ •์˜ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ์‹œํ”ผ ํฌ๋กฌ(์™ผ์ชฝ), IE(์˜ค๋ฅธ์ชฝ) ์ด ๋˜‘๊ฐ™์ด ๋ณด์ด๋ฉด์„œ๋„ ๋ฏธ์„ธ ํ•˜๊ฒŒ ๋‹ค๋ฆ„๋‹ˆ๋‹ค. ๊ณตํ†ต์ ์œผ๋กœ ๋‘˜ ๋‹ค ๊ทธ๋ฆฌ ์˜ˆ์˜๊ฒŒ ์ƒ๊ธฐ์ง„ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์ ํŠธ ๋ณ„๋กœ ์Šคํƒ€์ผ์— ๋งž๊ฒŒ css๋ฅผ ํ†ตํ•ด ์™ธํ˜•์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ด์ฆˆ๋‚˜ ํฐํŠธ ์ปฌ๋Ÿฌ ๋“ฑ์€ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ผ๋ถ€ ์ œํ•œ์ ์œผ๋กœ ํ†ต์ œ๋˜๊ธฐ ๋•Œ๋ฌธ์— (ํ™”์‚ดํ‘œ ์ด๋ฏธ์ง€ ๋“ฑ) ์•ฝ๊ฐ„์˜ ํŽธ๋ฒ•(?)์„ ํ†ตํ•˜์—ฌ ์™ธํ˜•์„ ๋ณ€๊ฒฝ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1-1. Select ๊ธฐ๋ณธ ํ™”์‚ดํ‘œ ์—†์• ๊ธฐ fruits ๐ŸŠ apple orange grape melon /* IE */ select::-ms-expand { display: none; } .select { -o-appearance: none; ..

input search x ๋ฒ„ํŠผ ์‚ญ์ œ ๋ฐ ํด๋ฆฌ์–ด ๋ฒ„ํŠผ ์ง์ ‘ ๋งŒ๋“ค์–ด ๋„ฃ๊ธฐ

input์˜ ํƒ€์ž…์„ search๋กœ ์ง€์ •ํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ input ์ดˆ๊ธฐํ™” ๋ฒ„ํŠผ์„ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. ๋””์ž์ธ์„ ์ค‘์š”์‹œ ํ•˜๋Š” ์ผ๋ถ€ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ด๊ฒƒ๋งˆ์ € ์ปค์Šคํ…€ํ•ด์ฃผ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์‹ค์ƒ ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ € ์ž์ฒด๋ฅผ ์ปค์Šคํ…€ ํ•  ์ˆ˜๋Š” ์—†๊ณ , ์ด๋ฅผ ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•œ ๋’ค ์ถ”๊ฐ€๋กœ ๋””์ž์ธ๊ณผ ๊ธฐ๋Šฅ์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์€ ๋ฒˆ๊ฑฐ๋กœ์šด ์ž‘์—…์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„  ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ ์ƒ์„ฑํ•œ ์ดˆ๊ธฐํ™” ๋ฒ„ํŠผ์„ ์—†์• ๋ ค๋ฉด ๋‹จ์ˆœํžˆ input์˜ ํƒ€์ž…์„ text๋กœ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ css์—์„œ ํ•ด๊ฒฐํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. /* IE์˜ ๊ฒฝ์šฐ */ input::-ms-clear, input::-ms-reveal{ display:none; } /* ํฌ๋กฌ์˜ ๊ฒฝ์šฐ */ input::-webkit-search-decoration, ..

๊ฐ€์šด๋ฐ์„œ ์ขŒ์šฐ๋กœ ํŽผ์ณ์ง€๊ฒŒ ํ•˜๊ธฐ

๋ฉ”๋‰ด๋ฅผ hover ํ–ˆ์„ ๋•Œ ์•„๋ž˜์—์„œ underline์ด ๊ฐ€์šด๋ฐ๋ถ€ํ„ฐ ์—ด๋ฆฌ๋Š” ๋ชจ์…˜์„ ๊ตฌํ˜„ํ•ด ๋ณด๊ณ  ์‹ถ์–ด์„œ ๋งŒ๋“ค์–ด๋ดค์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชจ์…˜์ž…๋‹ˆ๋‹ค. ๐Ÿ˜Š ํ•ด๋‹น ๋ชจ์…˜์€ border ๋‚˜ text-decoration ์œผ๋กœ๋Š” ๊ตฌํ˜„ํ•  ์ˆ˜์—†๊ณ , a ํƒœ๊ทธ์˜ :after๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. HOME ABOUT Q&A ๋จผ์ € ๋งˆํฌ์—…์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์–ด์ฐจํ”ผ :after ๋ฅผ ์‚ฌ์šฉํ•  ๊บผ๋ผ ๋ณ„๋‹ค๋ฅธ ํƒœ๊ทธ๊ฐ€ ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค. ๋จผ์ € a:after ์— absolute ์†์„ฑ์„ ์ฃผ์–ด a ๋ณด๋‹ค ์•„๋ž˜์— ์œ„์น˜์‹œ์ผœ์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  transform์˜ scale์„ ์‚ฌ์šฉ ํ•˜๋Š”๊ฒŒ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. scale ์†์„ฑ์€ ํ˜„์žฌ์˜ element๋ฅผ ํ™•๋Œ€ ์‹œ์ผœ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ํ•ฉ๋‹ˆ๋‹ค. .wrap { padding: 15px; } .wrap > a { position: re..

์ฒดํฌ๋ฐ•์Šค CSS ์ปค์Šคํ…€

์ฒดํฌ๋ฐ•์Šค๋Š” ๋Œ€๋ถ€๋ถ„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋””์ž์ธํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. input ํƒ€์ž…์„ checkbox๋กœ ์‚ฌ์šฉ์‹œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๊ณต๋˜๋Š” ์ฒดํฌ๋ฐ•์Šค์˜ ํ˜•ํƒœ๋Š” ๋ณ€ํ˜•ํ•˜๋Š” ๊ฒƒ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. CSS์—์„œ ์…€๋ ‰ํ„ฐ์™€ labelํƒœ๊ทธ๋ฅผ ์ด์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ์ปค์Šคํ…€์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 1. ๋งˆํฌ์—… input์˜ id์™€ label์˜ for ์†์„ฑ ๊ฐ‘์„ ๋™์ผํ•˜๊ฒŒ ํ•ด์•ผ input์˜ ์ฒดํฌ ์—ฌ๋ถ€๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ฒดํฌ๋ฐ•์Šค 2. ์Šคํƒ€์ผ ์ปค์Šคํ…€ ๋ฐฉ์‹์„ ์ด๋ ‡์Šต๋‹ˆ๋‹ค. - ๊ธฐ์กด checkbox๋ฅผ ์ˆจ๊น€ - checkbox + label์„ ํ†ตํ•ด ์ฒดํฌ๋ฐ•์Šค ํ˜•ํƒœ๋ฅผ ๋งŒ๋“ฆ - checkbox:checked + label ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒดํฌํ–ˆ์„ ๋•Œ์— ํ˜•ํƒœ๋ฅผ ๋งŒ๋“ฆ .checkboxwrap .checkbox{display: none!important;} .checkboxwrap..

CSS ํŒจํ„ด ์ด์•ผ๊ธฐ - BEM, SMACSS, OOCSS

1. SMACSS ( Scalable and Modular Architecture for CSS ) : CSS๋ฅผ [๊ธฐ๋ณธ(base), ๋ ˆ์ด์•„์›ƒ(layout), ๋ชจ๋“ˆ(module), ์ƒํƒœ(state), ํ…Œ๋งˆ(theme)]5๊ฐ€์ง€๋ฅผ ๋ฒ”์ฃผํ™”๋กœ ํŒจํ„ดํ™” ํ•˜๊ณ ์ž ํ•จ = categorization 1. Base.css [= reset.css] body, p, table, form, fieldset, legend, input, button ... { margin: 0; padding: 0; } 2. layout : ์ฃผ์š”์†Œ(id) + ํ•˜์œ„์š”์†Œ(class) ์˜ˆ : 2๊ฐœ์˜ ๋ ˆ์ด์›ƒ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ• ๊ฒฝ์šฐ [ 1.์œ ์—ฐํ•œ๋ ˆ์ด์•„์›ƒ 2.๊ณ ์ •์ ๋ ˆ์ด์•„์›ƒ ] #header { width: 400px; } #aside { width: 30px; ..

๋ฐ˜์‘ํ˜•