티스토리 뷰
const cssProperty = [ //'CSS 속성 설명' 데이터를 cssProperty 배열에 객체 형태로 저장
//a
{num:1, name:"all", desc:"all 속성은 CSS 속성을 재설정하는데 사용할 수 있는 약식 속성입니다."},
{num:2, name:"animation", desc:"animation 속성은 애니메이션 속성을 설정하기 위한 약식 속성입니다."},
{num:3, name:"animation-delay", desc:"animation-delay 속성은 애니메이션이 시작되는 시간을 설정합니다."},
{num:4, name:"animation-direction", desc:"animation-direction 속성은 애니메이션이 움직이는 방향을 설정합니다."},
{num:5, name:"animation-duration", desc:"animation-duration 속성은 애니메이션이 움직이는 시간을 설정합니다."},
{num:6, name:"animation-fill-mode", desc:"animation-fill-mode 속성은 애니메이션이 끝난 후의 상태를 설정합니다."},
{num:7, name:"animation-iteration-count", desc:"animation-iteration-count 속성은 애니메이션 반복 횟수를 설정합니다."},
{num:8, name:"animation-name", desc:"animation-name 속성은 애니메이션 키프레임 이름을 설정합니다."},
{num:9, name:"animation-play-state", desc:"animation-play-state 속성은 애니메이션의 진행상태를 설정합니다."},
{num:10, name:"animation-timing-function", desc:"animation-timing-function 속성은 애니메이션 움직임의 속도를 설정합니다."},
{num:11, name:"appearance", desc:"appearance 속성은 기본 양식 컨트롤이 렌더링되는 방식을 제어합니다."},
//b
{num:12, name:"backdrop-filter", desc: "backdrop-filter 속성은 요소 뒤에 필터효과를 설정합니다."},
{num:13, name:"backface-visibility", desc: "backdrop-visibility 속성은 요소 뒷면 출력 여부 설정합니다."},
{num:14, name:"background", desc: "background 속성은 배경 속성 값을 정의합니다."}
]
const searchBox = document.querySelectorAll(".search span"); //버튼
const cssList = document.querySelector(".list ul"); //속성 리스트
const cssCount = document.querySelector(".count"); //CSS 갯수
//데이터 출력
const updataList = function(){ //updateList 함수는 웹화면에 CSS속성 리스트를 출력해준다.
let listHTML = ''; //문자열을 받는 변수 listHTML생성
//for문을 이용해서 cssProperty name값을 출력하세요!
// for(let i = 0; i<cssProperty.length; i++){
// listHTML += `${cssProperty[i].name}`;
// }
//for of
// for(let data of cssProperty){
// listHTML += `${data.name}`;
// }
//forEach
cssProperty.forEach((data,index) => { //CSS속성 리스트가 들어있는 cssProperty배열 순회
listHTML += `${data.num}. ${data.name} : ${data.desc}`; //listHTML에 템플릿리터럴 표현으로 cssProperty의 값 저장
cssCount.textContent = `전체 목록 갯수 : ${index + 1}개`; //최종적으로 마지막 인덱스번호+1값이 들어간다.
});
cssList.innerHTML = listHTML; //cssList에 문자열 listHTML을 넣어준다.
}
updataList(); //웹화면에 CSS속성 리스트를 출력해주는 함수 호출
//반대 정렬
function reverse() { //reverse()함수 생성
cssProperty.reverse(); //reverse()메서드를 사용하여 cssProperty 배열에 저장된 값의 순서를 뒤집어준다. 원본데이터cssProperty값이 변경된다.
updataList(); //뒤집힌 cssPropery값이 출력
}
//오름차순 정렬
function sortAscending() { //sortAscending()함수 생성
cssProperty.sort((a,b) => { //sort()메서드를 사용하여 cssProperty배열의 순서를 num의 오름차순으로 정렬
return a.num - b.num;
});
updataList();
}
//내림차순 정렬
function sortDescending() { //sortDescending()함수 생성
cssProperty.sort((a,b) => { //sort()메서드를 사용하여 cssProperty배열의 순서를 num의 내림차순으로 정렬
return b.num - a.num;
});
updataList();
}
//알페벳 정렬(a~z)
function sortAlphabet() { //sortAlphabet()함수 생성
cssProperty.sort((a,b) => { //sort()메서드를 사용하여 cssProperty배열의 순서를 name의 오름차순으로 정렬
let x = a.name;
let y = b.name;
return x.localeCompare(y);
})
updataList();
}
//알페벳 정렬(z~a)
function sortAlphabetZ() { //sortAlphabetZ()함수 생성
cssProperty.sort((a,b) => { //sort()메서드를 사용하여 cssProperty배열의 순서를 name의 내림차순으로 정렬
let x = a.name;
let y = b.name;
return y.localeCompare(x);
})
updataList();
}
//반대로 버튼 클릭시 reverse()함수 호출
document.querySelector(".btn1").addEventListener("click", () => {
reverse();
});
//오름차순 버튼 클릭시 sortAscending()함수 호출
document.querySelector(".btn2").addEventListener("click", () => {
sortAscending();
});
//내림차순 버튼 클릭시 sortDescending()함수 호출
document.querySelector(".btn3").addEventListener("click", () => {
sortDescending();
});
//알파벳순(a~z) sortAlphabet()함수 호출
document.querySelector(".btn4").addEventListener("click", () => {
sortAlphabet();
});
//알파벳순(z~a) sortAlphabetZ()함수 호출
document.querySelector(".btn5").addEventListener("click", () => {
sortAlphabetZ();
});
'Script Sample > Search Effect' 카테고리의 다른 글
searchEffect05 - filter() (0) | 2022.02.15 |
---|---|
searchEffect04 - find() (0) | 2022.02.08 |
searchEffect03 - charAt() (0) | 2022.02.08 |
searchEffect02 - includes() (6) | 2022.02.07 |
searchEffect01 - indexOf() (1) | 2022.02.07 |
댓글
© 2018 webstoryboy