๐ ๊ฒ์ ํจ๊ณผ : sort(), reverse()๋ฅผ ์ด์ฉํ์ฌ ์ ๋ ฌํ๊ธฐ
์ด๋ฒ ์๊ฐ์๋ sort(), reverse() ๋ฉ์๋๋ฅผ ํตํด ํด๋ฆญํ ๊ฒฝ์ฐ ํด๋น ์กฐ๊ฑด์ผ๋ก ์์ฑ์ ์ ๋ ฌํ๋ ์ค์ต์ ํด๋ณด๊ฒ ์ต๋๋ค.
+ ์ถ๊ฐ๋ก ๋๋ค์ผ๋ก ์์ฑ์ด ์ ๋ ฌ๋๋ ์ค์ต๋ ํด๋ณด๊ฒ ์ต๋๋ค......... ๐ฅฒ
#1. HTML / CSS ์ค์ ํ๊ธฐ
! HTML TIP !
search__click์์ li ์์์๊ฒ data-๋ฐ์ดํฐ๋ช
="๋ฐ์ดํฐ ๊ฐ"์ ์ค์ ํฉ๋๋ค. => ์ถํ ์คํฌ๋ฆฝํธ์ ์ฌ์ฉํ๊ธฐ ์ํจ! (ํด๋ฆญ์ด๋ฒคํธ, ์ซ์ ์นํ)
โ๏ธ HTML ์คํฌ๋ฆฝํธ ๋ณด๊ธฐ
<main id="main">
<div class="search__wrap">
<span>sort(), reverse()๋ฅผ ์ด์ฉํ์ฌ ์ ๋ ฌํ๊ธฐ</span>
<h1>CSS ์์ฑ ๊ฒ์ํ๊ธฐ</h1>
<div class="search__click">
<ul>
<li class="btn1"><a href="#">๋ฐ๋๋ก ์ ๋ ฌ</a></li>
<li class="btn2"><a href="#">๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ</a></li>
<li class="btn3"><a href="#">์ค๋ฆ์ฐจ์ ์ ๋ ฌ</a></li>
<li class="btn4"><a href="#">์ํ๋ฒณ์(a-z)</a></li>
<li class="btn5"><a href="#">์ํ๋ฒณ์(z-a)</a></li>
<li class="btn6"><a href="#">๋๋ค ์ ๋ ฌ</a></li>
</ul>
</div>
<div class="search__info">
<div>CSS ์ ์ฒด ์์ฑ : <span class="num">0</span></div>
</div>
<div class="search__list">
<ul class="line"></ul>
</div>
</div>
</main>
! CSS TIP !
๋ฒํผ์ ์คํ์ผ ๋ฐ ํ์ด์ง ์คํ์ผ์ ์ค์ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค!
โ๏ธ CSS ์คํฌ๋ฆฝํธ ๋ณด๊ธฐ
.search__click {
margin-top: 10px;
margin-bottom: 30px;
}
.search__click li {
display: inline;
}
.search__click li a {
display: inline-block;
border: 1px solid var(--htmlColor);
border-radius: 50px;
padding: 10px 20px;
margin: 5px 0;
}
.search__click li a:hover {
background-color: var(--htmlColor);
color: #fff;
#2. JAVASCRIPT : ์คํฌ๋ฆฝํธ
์ด๋ฒ ์คํฌ๋ฆฝํธ์์๋ sort(), reverse() ๋ฉ์๋, ๊ทธ๋ฆฌ๊ณ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ์คํฌ๋ฆฝํธ๋ฅผ ์์
ํด๋ณด๊ฒ ์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์๋์ ์คํฌ๋ฆฝํธ ์ฃผ์๊ณผ ํจ๊ป ์ดํด๋ณด๊ฒ ์ต๋๋ค!!
! JAVASCRIPT TIP !
1. ์ฌํ์ฉ ํจ์๋ฅผ ์ค์ ํ์ฌ ๋ณด๋ค ์คํฌ๋ฆฝํธ๋ฅผ ํธ๋ฆฌํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
2. ๋ณ์๋ช
.sort(): ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ๋ ฌํฉ๋๋ค.
3. ๋ณ์๋ช
.reverse(): ๋ฐ๋๋ก ์ ๋ ฌํฉ๋๋ค.
//cssProperty : ๋ฐ์ดํฐ ๊ฐ์ฒดํ ์ํค๊ธฐ
const cssProperty = [
{ num: 1, name: "accent-color", desc: " ์์์ ๊ฐ์กฐ ์์์ ์ง์ ํฉ๋๋ค. " },
{ num: 2, name: "align-content", desc: " ์ฝํ
์ธ ์ฌ์ด์ ์ฝํ
์ธ ์ฃผ์ ๋น ๊ณต๊ฐ์ ํ๋ ์ค ๋ฐ์ค'์ ๊ต์ฐจ์ถ ๋๋ ๊ทธ๋ฆฌ๋์ ๋ธ๋ก ์ถ์ ๋ฐ๋ผ ๋ฐฐ์นํ๋ ๋ฐฉ์์ ๊ฒฐ์ ํฉ๋๋ค." },
{ num: 3, name: "align-items", desc: " ๊ต์ฐจ์ถ์์ ์์ดํ
์ ๋ ฌ ํ๋ ์์ฑ์
๋๋ค. ์ฃผ๋ก flex์์ item๋ค์ ์ ๋ ฌํ ๋ ์ฌ์ฉ๋ฉ๋๋ค." },
{ num: 4, name: "align-self", desc: " ํน์ item์ ์ ๋ ฌ์ ๋ฐ๋ก ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค." },
{ num: 5, name: "all", desc: " CSS ์ฌ์ฉ์ ์ง์ ์์ฑ์ ์ ์ธํ ๋ชจ๋ ์์ฑ์ ์ด๊ธฐํํฉ๋๋ค. ์ด๊น๊ฐ, ์์๊ฐ, ์๋๋ฉด ๋ค๋ฅธ ์คํ์ผ์ํธ ์ถ์ฒ์ ๊ฐ๋ก ์ค์ ํ ์ ์์ต๋๋ค." },
{ num: 6, name: "animation", desc: " ์ ๋๋ฉ์ด์
๊ณผ ๊ด๋ จ๋ ์์ฑ์ ์ผ๊ด์ ๋ก ์ฒ๋ฆฌํฉ๋๋ค." },
{ num: 7, name: "animation-delay", desc: " ์ ๋๋ฉ์ด์
์ง์ฐ ์๊ฐ์ ์ค์ ํฉ๋๋ค." },
{ num: 8, name: "animation-direction", desc: " ์ ๋๋ฉ์ด์
์์ง์ ๋ฐฉํฅ์ ์ค์ ํฉ๋๋ค." },
{ num: 9, name: "animation-duration", desc: " ์ ๋๋ฉ์ด์
์์ง์ธ ์๊ฐ์ ์ค์ ํฉ๋๋ค." },
{ num: 10, name: "animation-fill-mode", desc: " ์ ๋๋ฉ์ด์
์ด ๋๋ ํ์ ์ํ๋ฅผ ์ค์ ํฉ๋๋ค." },
.
.
.
{ num: 382, name: "z-index", desc: " ์๋ฆฌ๋จผํธ์ ๊ฒน์ณ์ง๋ ์์๋ฅผ ์ง์ ํ๋ค." }
];
//์ ํ์
const cssList = document.querySelector(".search__list .line");
//๋ฐ์ดํฐ ์ถ๋ ฅํ๊ธฐ
const updateList = () => {
let listCSS = "";
cssProperty.forEach((data, index) => {
listCSS += `${data.num}. ${data.name} : ${data.desc} `
});
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((a,b) => {
return a.name.localeCompare(b.name);
});
updateList();
}
//์ํ๋ฒณ(z-a) ์ ๋ ฌ
function sortAlphabetZ(){
cssProperty.sort((a,b) => {
return b.name.localeCompare(a.name);
});
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();
});
//๋๋ค ๋ฐ๋ณต
//ํผ์
์์ด์ธ ์๊ณ ๋ฆฌ์ฆ
//1
document.querySelector(".btn6").addEventListener("click", (e) => {
e.preventDefault();
for( let i=cssProperty.length-1; i>=0; i--){
const radomIndex = Math.floor(Math.random() * (i + 1));
// console.log(radomIndex)
// ์๊น์ง ํ๊ณ ์ถ๋ ฅํ๋ฉด ์ค๋ณต ์ซ์๊ฐ ๋ฐ์ํ๋ค. ๋๋ฌธ์
// ๊ฐ์ฒด๊ตฌ์กฐ๋ถํดํ ๋น์ ์ฌ์ฉํ์ฌ ์์
ํ๋ค. = [1,2,3] = [3,2,1] : ์ด๋ ๊ฒ ์ฐ๋ฉด ์ค๋ณต๋ ์ซ์๊ฐ ๋์ค์ง ์๋๋ค.
[cssProperty[i], cssProperty[radomIndex]] = [cssProperty[radomIndex], cssProperty[i]]; // ์ค๋ณต ์ ๊ฑฐ... ๋ชจ๋ฅด๋ฉด ๊ฑ ์ธ์...
cssProperty.innerHTML += cssProperty[i];
}
updateList();
});
๋๊ธ