๊ฒ์ ์ดํํธ ๋ง๋ค๊ธฐ 06
์ด๋ฒ ์๊ฐ์๋ ๊ทธ ๋์ ๋ฐฐ์ ๋ JavaScript๋ฅผ ์ด์ฉํ์ฌ ๊ฒ์ ์ดํํธ๋ฅผ ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด๋ฒ ํ์ต ๋ด์ฉ์ ์ ํ์ฉํ์ฌ ๊ทธ๋์ ๋ฐฐ์ ๋ CSS ์์ฑ๋ค์ ๊ฒ์์ฐฝ ํ์์ผ๋ก ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋๋ก
๋ง๋ค์ด๋ณด๋๋ก ํฉ์๋ค. ๋์ค์ ๋ชจ๋ฅด๋ ๊ฒ ์๊ฒผ์ ๋ ๊ณต๋ถํ๊ธฐ ํธํ๊ฒ ๋ง์ด์ฃ !
์, ๊ทธ๋ผ ์์ํด๋ณผ๊น์?
HTML ์์ค ๋ณด๊ธฐ
๊ฒ์ ์ดํํธ 06์ HTML ์์ค์ ๋ถ์ฐ ์ค๋ช
(์ฃผ์ ์ฒ๋ฆฌ๋จ)์ด๋ค.
CSS ์์ค๋ฅผ ํจ๊ป ๋ณด๊ณ ์ถ๋ค๋ฉด ๋งจ ์๋์ 'CSS ์์ค ๋ณด๊ธฐ' ๋ฒํผ์ ๋๋ฅผ ๊ฒ.
<body>
<header id="header">
<h1>Search</h1>
<nav>
<ul>
<li><a href="searchEffect01.html">01</a></li>
<li><a href="searchEffect02.html">02</a></li>
<li><a href="searchEffect03.html">03</a></li>
<li><a href="searchEffect04.html">04</a></li>
<li><a href="searchEffect05.html">05</a></li>
<li class="active"><a href="searchEffect06.html">06</a></li>
</ul>
</nav>
</header>
<!-- // header -->
<main id="main">
<div class="search__wrap">
<span>sort(), reverse()๋ฅผ ์ด์ฉํ์ฌ ์ ๋ ฌํ๊ธฐ</span>
<h1>CSS ์์ฑ ์ ๋ ฌํ๊ธฐ</h1>
<div class="search__click">
<ul>
<li><a href="#c" class="btn1">๋ฐ๋๋ก ์ ๋ ฌ</a></li>
<li><a href="#c" class="btn2">๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ</a></li>
<li><a href="#c" class="btn3">์ค๋ฆ์ฐจ์ ์ ๋ ฌ</a></li>
<li><a href="#c" class="btn4">์ํ๋ฒณ์(a~z)</a></li>
<li><a href="#c" class="btn5">์ํ๋ฒณ์(z~a)</a></li>
<li><a href="#c" class="btn6">๋๋ค ์ ๋ ฌ</a></li>
</ul>
</div>
<div class="search__info">
<div>์ ์ฒด ์์ฑ ๊ฐ์ : <span class="num">0</span></div>
</div>
<div class="search__list">
<ul class="line">
</ul>
</div>
</div>
</main>
<!-- // main -->
<footer id="footer">
<a href="mailto:kde66034@gmail.com">kde66034@gmail.com</a>
</footer>
<!-- //footer -->
</body>
JavaScript ์์ค ๋ณด๊ธฐ
๊ฒ์ ์ดํํธ 06์ JavaScript ์์ค์ ๋ถ์ฐ ์ค๋ช (์ฃผ์ ์ฒ๋ฆฌ๋จ)์ด๋ค. ์์ cssList์ CSS์ ์์ฑ๋ค์ ์ถ๋ ฅํ ๊ณต๊ฐ์ ์ ์ฅํ๊ณ , cssProp์๋ ๋น ๋ฐฐ์ด์ ์ ์ฅ์ํจ ๋ค์ ์ฌ๋ฐฐ์น๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์ ์๋๋ก ํ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๊ณ , ๋ฐ๋ยท๋ด๋ฆผ์ฐจ์ยท์ค๋ฆ์ฐจ์ยท์ํ๋ฒณ(a-z/z-a)์ ์ ๋ ฌ ์คํฌ๋ฆฝํธ์ ๋ฒํผ ํด๋ฆญ์ ํด๋น ์ ๋ ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์๋๋ก addEventListener๋ฅผ ์ด์ฉํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ง ๋ค. ๋ง์ง๋ง์ผ๋ก ๋๋ค ์ ๋ ฌ์ ๊ฒฝ์ฐ ํผ์ ์์ด์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ง๋๋ก ํ๋ค.
// CSS ์์ฑ ๋ฆฌ์คํธ ์ ์ฅ
const cssProperty = [
{ num: 1, name: "accent-color", desc: "ํน์ ์์์ ์์์ ์ง์ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค." },
{ num: 2, name: "align-content", desc: "์ฝํ
์ธ ์์ดํ
์ ์ํ๊ด๊ณ ์ ๋ ฌ ์ํ๋ฅผ ์ค์ ํฉ๋๋ค." },
{ num: 3, name: "align-items", desc: "์ฝํ
์ธ ์์ดํ
์ ๋ด๋ถ ์ํ๊ด๊ณ ์ ๋ ฌ ์ํ๋ฅผ ์ค์ ํฉ๋๋ค." },
]
const cssList = document.querySelector(".search__list .line"); // css ์์ฑ๋ค ์ถ๋ ฅํ ๊ณต๊ฐ
const cssProp = [];
// ๋ฐ์ดํฐ ์ถ๋ ฅํ๊ธฐ
const updateList = () => {
let listCSS = "";
cssProperty.forEach((data, index) => {
listCSS += `<li>${data.num}. <strong>${data.name}</strong> : ${data.desc}</li>`;
cssProp.push(`<li>${data.num}. <strong>${data.name}</strong> : ${data.desc}</li>`);
});
cssList.innerHTML = listCSS;
}
updateList();
// ๋ฐ๋๋ก ์ ๋ ฌ
function sortReverse(){
cssProperty.reverse();
updateList();
}
// ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
function sortDescending(){
cssProperty.sort((a,b) => {
return b.num - a.num;
});
updateList();
}
// ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
function sortAscending(){
cssProperty.sort((a,b) => {
return a.num - b.num;
});
updateList();
}
// ์ํ๋ฒณ ์ ๋ ฌ(a~z)
function sortAlphabet(){
cssProperty.sort((prev,cur) => {
const [upperPrev, upperCur] = [prev.name.toUpperCase(), cur.name.toUpperCase()]
if (upperPrev > upperCur) return 1;
if (upperPrev < upperCur) return -1;
});
updateList();
}
// ์ํ๋ฒณ ์ ๋ ฌ(z~a)
function sortAlphabetZ(){
cssProperty.sort((prev, cur) => {
const [upperPrev, upperCur] = [prev.name.toUpperCase(), cur.name.toUpperCase()]
if (upperPrev < upperCur) return 1;
if (upperPrev > upperCur) return -1;
});
updateList();
}
// ๋ฐ๋๋ก ์ ๋ ฌ ํด๋ฆญ
document.querySelector(".btn1").addEventListener("click", () => {
sortReverse();
});
// ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ ํด๋ฆญ
document.querySelector(".btn2").addEventListener("click", () => {
sortDescending();
});
// ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํด๋ฆญ
document.querySelector(".btn3").addEventListener("click", () => {
sortAscending();
});
// ์ํ๋ฒณ ์ ๋ ฌ(a~z) ํด๋ฆญ
document.querySelector(".btn4").addEventListener("click", () => {
sortAlphabet();
});
// ์ํ๋ฒณ ์ ๋ ฌ(z~a) ํด๋ฆญ
document.querySelector(".btn5").addEventListener("click", () => {
sortAlphabetZ();
});
// ํผ์
์์ด์ธ ์๊ณ ๋ฆฌ์ฆ
function shuffle(data) {
for(let i=data.length-1; i>=0; i--){
const randomIndex = Math.floor(Math.random() * (i + 1));
// console.log(randomIndex);
[data[i], data[randomIndex]] = [data[randomIndex], data[i]];
cssList.innerHTML += data[i];
}
}
document.querySelector(".btn6").addEventListener("click", () => {
cssList.innerHTML = "";
shuffle(cssProp);
});
'Effect > Search Effect' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Search Effect] ๊ฒ์ ์ดํํธ 07 (1) | 2022.10.21 |
---|---|
[Search Effect] ๊ฒ์ ์ดํํธ 05 (4) | 2022.09.29 |
[Search Effect] ๊ฒ์ ์ดํํธ 04 (3) | 2022.09.28 |
[Search Effect] ๊ฒ์ ์ดํํธ 03 (7) | 2022.08.22 |
[Search Effect] ๊ฒ์ ์ดํํธ 02 (2) | 2022.08.17 |
๋๊ธ