π κ²μ ν¨κ³Ό : filter()λ₯Ό μ΄μ©νμ¬ μμ± μ€μλ μμΌλ‘ κ²μνκΈ°
μ΄λ² μκ°μλ filter ν΅ν΄ μ€μλ μμΌλ‘ ν΄λ¦ν κ²½μ° μμ±μ΄ λνλλ μ€μ΅μ ν΄λ³΄κ² μ΅λλ€.
+ μΆκ°λ‘ μ€μλ(λ³)μ΄ λͺκ° μ΄μμΌ κ²½μ° ν΄λΉ μμ±μ΄ λμ€λ μ€μ΅λ ν΄λ³΄κ² μ΅λλ€......... π₯²
#1. HTML / CSS μ€μ νκΈ°
! HTML TIP !
search__clickμμ li μμμκ² data-λ°μ΄ν°λͺ
="λ°μ΄ν° κ°"μ μ€μ ν©λλ€. => μΆν μ€ν¬λ¦½νΈμ μ¬μ©νκΈ° μν¨! (ν΄λ¦μ΄λ²€νΈ, μ«μ μΉν)
βοΈ HTML μ€ν¬λ¦½νΈ 보기
<main id="main">
<div class="search__wrap">
<span>filter()λ₯Ό μ΄μ©νμ¬ μμ± ν΄λ¦ μ μ€μλ μμΌλ‘ 보μ¬μ£ΌκΈ°</span>
<h1>CSS μμ± κ²μνκΈ°</h1>
<div class="search__click">
<ul>
<li data-star="0"><a href="#">βββββ</a></li>
<li data-star="1"><a href="#">β
ββββ</a></li>
<li data-star="2"><a href="#">β
β
βββ</a></li>
<li data-star="3"><a href="#">β
β
β
ββ</a></li>
<li data-star="4"><a href="#">β
β
β
β
β</a></li>
<li data-star="5"><a href="#">β
β
β
β
β
</a></li>
</ul>
<ul>
<li data-num="1"><a href="#">1κ° μ΄μ</a></li>
<li data-num="2"><a href="#">2κ° μ΄μ</a></li>
<li data-num="3"><a href="#">3κ° μ΄μ</a></li>
<li data-num="4"><a href="#">4κ° μ΄μ</a></li>
</ul>
</div>
<div class="search__info">
<div>CSS μ 체 μμ± : <span class="num">0</span></div>
<div>CSS μ ν μμ± : <span class="num2">0</span></div>
</div>
<div class="search__list">
<ul class="line"></ul>
</div>
</div>
</main>
<!-- //main -->
! CSS TIP !
μ΄μ κ²μ μ΄ννΈμ μ€νμΌμ΄ λμΌνλ©° μλ‘μ΄ κ΅¬μ‘°μΈ search__clickμ μ€νμΌμ μ€μ ν΄μ£Όμλ©΄ λ©λλ€!
βοΈ 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 : μ€ν¬λ¦½νΈ
μ΄λ² μ€ν¬λ¦½νΈμμλ filter() λ©μλ, κ·Έλ¦¬κ³ λ§€κ°λ³μλ₯Ό ν΅ν΄ μ€ν¬λ¦½νΈλ₯Ό μμ
ν΄λ³΄κ² μ΅λλ€.
μμΈν λ΄μ©μ μλμ μ€ν¬λ¦½νΈ μ£Όμκ³Ό ν¨κ» μ΄ν΄λ³΄κ² μ΅λλ€!
! JAVASCRIPT TIP !
1. for of : λ°λ³΅λ¬Έ
2. λ³μλͺ
.filter((element) => element 쑰건μ) : λ³μμμ ν΄λΉ 쑰건μ ν΄λΉνλ μμλ₯Ό κ°μ Έμ΅λλ€.
3. dataset = data-λ°μ΄ν°λͺ
="λ°μ΄ν° κ°"μ λͺ¨λ λΆλ¬μ€λ μμ±!
//01.μ νμ
//cssProperty : λ°μ΄ν° κ°μ²΄ν μν€κΈ°
const cssProperty = [
{ star: 1 , name: "accent-color", desc: " μμμ κ°μ‘° μμμ μ§μ ν©λλ€. " },
{ star: 5 , name: "align-content", desc: " μ½ν
μΈ μ¬μ΄μ μ½ν
μΈ μ£Όμ λΉ κ³΅κ°μ νλ μ€ λ°μ€'μ κ΅μ°¨μΆ λλ 그리λμ λΈλ‘ μΆμ λ°λΌ λ°°μΉνλ λ°©μμ κ²°μ ν©λλ€." },
{ star: 4 , name: "align-items", desc: " κ΅μ°¨μΆμμ μμ΄ν
μ λ ¬ νλ μμ±μ
λλ€. μ£Όλ‘ flexμμ itemλ€μ μ λ ¬ν λ μ¬μ©λ©λλ€." },
{ star: 1 , name: "align-self", desc: " νΉμ itemμ μ λ ¬μ λ°λ‘ νκ³ μΆμ λ μ¬μ©ν©λλ€." },
{ star: 1 , name: "all", desc: " CSS μ¬μ©μ μ§μ μμ±μ μ μΈν λͺ¨λ μμ±μ μ΄κΈ°νν©λλ€. μ΄κΉκ°, μμκ°, μλλ©΄ λ€λ₯Έ μ€νμΌμνΈ μΆμ²μ κ°λ‘ μ€μ ν μ μμ΅λλ€." },
{ star: 3 , name: "animation", desc: " μ λλ©μ΄μ
κ³Ό κ΄λ ¨λ μμ±μ μΌκ΄μ λ‘ μ²λ¦¬ν©λλ€." },
{ star: 3 , name: "animation-delay", desc: " μ λλ©μ΄μ
μ§μ° μκ°μ μ€μ ν©λλ€." },
{ star: 3 , name: "animation-direction", desc: " μ λλ©μ΄μ
μμ§μ λ°©ν₯μ μ€μ ν©λλ€." },
{ star: 3 , name: "animation-duration", desc: " μ λλ©μ΄μ
μμ§μΈ μκ°μ μ€μ ν©λλ€." },
.
.
.
{ star: 3 , name: "z-index", desc: " μ리먼νΈμ κ²Ήμ³μ§λ μμλ₯Ό μ§μ νλ€." }
];
const searchList = document.querySelector(".search__list ul"); //μμΉλ¦¬μ€νΈ
const searchClick = document.querySelectorAll(".search__click ul li"); //ν΄λ¦ μμ
const searchNum = document.querySelector(".search__info .num"); //μ 체μμ±
const starNum = document.querySelectorAll(".search__click ul li a") //λ³
//μ 체μμ±κ°―μνμ
searchNum.innerText = cssProperty.length + "κ°";
//02 μΆλ ₯νκΈ° : μΆλ ₯νκΈ°λ₯Ό ν¨μν μν€κΈ° : μ΄λ κ² ν κ²½μ° μ¬νμ©μ΄ κ°λ₯ν μ€ν¬λ¦½νΈκ° λλ€!
//2.맀κ°λ³μλ₯Ό λ°μμ μμ
function updateList(cssProperty2){
listCSS = "";
//for ofλ¬Έμ μ¬μ©νμ¬ λ°λ³΅.
//3.λ°μ 맀κ°λ³μ κ°μ λ€μ dataλΌλ λ³μμ μ μ₯μν¨λ€. μ¦ data == cssProperty
for( const data of cssProperty2 ){
//μμΉλ¦¬μ€νΈ ulμμ λ€μ΄κ° li리μ€νΈμ ꡬ쑰 μ€μ !
// listCSS += `<li>${data.name}: ${data.desc} <em>${data.star}</em></li>`;
//μ«μ λ³λ‘ μΉν λ°©λ²1
//λ³μλ₯Ό μ€μ νμ¬ ν
μ€νΈ λ³μ λ°μ΄ν°κ°μ λ£λλ€.
// listStar = starNum[data.star].innerText;
// listCSS += `<li>${data.name}: ${data.desc} <em>${listStar}</em></li>`;
// λ°©λ²2 : ifλ¬Έμ ν΅ν΄ 리μ€νΈμ ꡬ쑰 μ€ μ«μλ₯Ό λ³λ‘ μΉνν΄μ£ΌκΈ°.
if(data.star === 0){
listCSS += `<li>${data.name}: ${data.desc} <em> βββββ </em></li>`;
}
if(data.star === 1){
listCSS += `<li>${data.name}: ${data.desc} <em> β
ββββ </em></li>`;
}
if(data.star === 2){
listCSS += `<li>${data.name}: ${data.desc} <em> β
β
βββ </em></li>`;
}
if(data.star === 3){
listCSS += `<li>${data.name}: ${data.desc} <em> β
β
β
ββ </em></li>`;
}
if(data.star === 4){
listCSS += `<li>${data.name}: ${data.desc} <em> β
β
β
β
β </em></li>`;
}
if(data.star === 5){
listCSS += `<li>${data.name}: ${data.desc} <em> β
β
β
β
β
</em></li>`;
}
}
//μμΉλ¦¬μ€νΈμ μμ ꡬ쑰λ₯Ό innerHTMLμ ν΅ν΄ λ£μ΄μ€λ€.(μμλ₯Ό λ£μ΄μΌ νλ―λ‘!)
searchList.innerHTML = listCSS;
}
//1. 맀κ°λ³μλ‘ μμ λ³μκ° κ°μ Έμ¨ ν ν¨μμ μ μ₯
updateList(cssProperty);
//03. ν΄λ¦νκΈ°
//searchClickμ μμ λͺ¨λ μ ν ν μ΄λ²€νΈ ν΄λ¦ μ€μ (μ΄λ²€νΈ 리μ€λλ λ€μ€ μ νμκ° λΆκ°νλ―λ‘ λ°λ³΅λ¬Έμ ν΅ν΄ λ€μ€ μ€μ μ΄ κ°λ₯!)
searchClick.forEach(element => {
element.addEventListener("click",()=>{
//μμ htmlμμ searchClickμ liμ data-star μμ±μ κ°μ Έμ¨ ν targetλ³μμ μ μ₯
const target = element.dataset.star;
//λ§μ°¬ κ°μ§λ‘ μμ data-num μμ±μ λͺ¨λ κ°μ Έμ¨ λ€ target2μ μ μ₯!
const target2 = element.dataset.num;
//μ½λ°±ν¨μ
//filterμ findμ μ¬μ©λ²μ΄ κ°λ€. λ€λ§ 쑰건μ μΈ μ μλ€λ μ μμ λ€λ₯΄λ€!
const filterList = cssProperty.filter(data => data.star == target || data.star >= target2);
//맀κ°λ³μλ‘ μμ λ³μ κ°μ κ°μ Έμ ν¨μλ₯Ό μ€νμν¨λ€.
updateList(filterList);
});
});
#3. κ²°κ³Ό
'EFFECT' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[EFFECT] νλ΄λ μ€ ν¨κ³Ό07 : ν μ€νΈ ν¨κ³Ό (1) | 2022.10.21 |
---|---|
[EFFECT] κ²μ ν¨κ³Ό05 : sort(), reverse()λ₯Ό μ΄μ©νμ¬ μ λ ¬νκΈ° (0) | 2022.10.17 |
[EFFECT] νλ΄λ μ€ ν¨κ³Ό06 : ν μ€νΈ ν¨κ³Ό (2) | 2022.09.30 |
[EFFECT] κ²μ μ ν04 : map / find()λ₯Ό ν΅ν΄ κ²μκ° κ°μ Έμ€κΈ° (1) | 2022.09.29 |
[EFFECT] λ§μ°μ€ ν¨κ³Ό 05 : κΈ°μΈκΈ° ν¨κ³Ό / κΈμ¨ λ°μ ν¨κ³Ό (2) | 2022.09.29 |
λκΈ