반응형
searchEffect05
filter() 메서드를 사용하여 CSS 속성의 중요도가 별점으로 표시 / 분류되도록 만들어봤습니다..
HTML
별점으로 속성을 분류할 버튼 영역(click)과 속성 갯수를 표시할(info)영역, 속성 내용이 들어갈(list)영역으로 나누어줍니다.
<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>전체 속성 갯수 : <span class="num">0</span></div>
</div>
<div class="search__list">
<ul class="line"></ul>
</div>
</div>
</main>
<!-- //main -->
JAVASCRIPT
HTML -> search__list에 출력해줄 css 속성을 변수 cssProperty에 저장합니다.
간단하게 전체 속성 갯수를 표시할 script를 작성하고, updateList 함수를 통해 search__list에 css 속성을 출력시킵니다.
별점 버튼에 click 이벤트를 부여하여 별 수에 따라 css 속성이 출력되도록 실행해주면 끝입니다.
(dataset을 사용하여 HTML의 data-star, num 속성값을 가져와 target, target2에 저장)
(cssProperty의 data중에 star 속성값을 target, target2와 비교하여 filterList 변수에 저장)
const cssProperty = [
{ star: 5, name: "accent-color", desc: "특정 요소에 색상을 지정할 때 사용됩니다." },
{ star: 5, name: "align-content", desc: "콘텐츠 아이템의 상하관계 정렬 상태를 설정합니다." },
{ star: 5, name: "align-items", desc: "콘텐츠 아이템의 내부 상하관계 정렬 상태를 설정합니다." },
{ star: 5, name: "align-self", desc: "개별적인 콘텐츠 아이템의 정렬 상태를 설정합니다." },
{ star: 5, name: "all", desc: "요소의 속성을 초기화 또는 상속을 설정합니다." },
...
];
const searchList = document.querySelector(".search__list ul");
const searchClick = document.querySelectorAll(".search__click ul li");
const starA = document.querySelectorAll(".search__click ul li a");
const searchInfo = document.querySelector(".search__info .num");
searchInfo.textContent = cssProperty.length;
let count = 0;
// 출력하기
function updateList(list) {
listCSS = "";
for (const data of list) {
listCSS += `<li>${data.name} : ${data.desc}<em>${starA[data.star].innerText}</em></li>`;
count++;
}
searchInfo.textContent = count;
count = 0;
searchList.innerHTML = listCSS;
}
updateList(cssProperty);
// 클릭하기
searchClick.forEach((star) => {
star.addEventListener("click", (el) => {
const target = star.dataset.star;
const target2 = star.dataset.num;
// console.log(target2)
const filterList = cssProperty.filter((data) => data.star == target || data.star >= target2);
// console.log(filterList2);
updateList(filterList);
});
});
반응형
'Effect' 카테고리의 다른 글
sliderEffect05 (0) | 2022.10.18 |
---|---|
parallax Effect07 (6) | 2022.10.06 |
parallax Effect06 (0) | 2022.09.30 |
mouseEffect06 (0) | 2022.09.30 |
mouseEffect05 (11) | 2022.09.28 |
댓글