티스토리 뷰
// html 태그로 직접 입력하지 않고 배열 안에 객체를 선언해서 span 태그를 자바스크립트로 추가
const cssProperty = [
{name: "all", desc: "all 속성은 CSS 속성을 재설정하는데 사용하는 약식 속성이다"},
{name: "animation", desc: "animation 속성은 애니메이션 속성을 설정하기 위한 통합 속성이다"},
{name: "animation-delay", desc: "animation 속성은 애니메이션이 시작되는 시간을 설정한다"},
{name: "animation-direction", desc: "animation-direction 속성은 애니메이션이 움직이는 방향을 설정한다"},
{name: "animation-fill-mode", desc: "animation-fill-mode 속성은 애니메이션이 실행 중인 시간 외에 적용되는 값을 정의한다"},
{name: "animation-iteration-count", desc: "animation-iteration-count 속성은 애니메이션이 중지되기 전에 애니메이션의 주기가 재생되는 횟수를 지정하는 데 사용된다"},
{name: "backdrop-filter", desc: "CSS를 사용하여 요소 뒤의 콘텐츠에 필터 효과를 적용할 수 있다"},
{name: "backface-visibility", desc: "backface-visibility 속성은 뷰어를 향할 때 변형된 요소의 뒷면이 보이는지 여부를 결정한다"},
{name: "caption-side", desc: "caption-side 속성은 테이블 자체에 대한 테이블 캡션(caption)의 위치를 지정한다 캡션이 배치될테이블의 어느 쪽에 있는지 지정한다"},
{name: "flex", desc: "요소의 배치에 대한 전체적인 설정"},
{name: "grid", desc: "요소들을 격자 모양으로 나누어 설정한다, "},
{name: "justify-content", desc: "요소들을 가로축(중심축)으로 정렬한다"},
{name: "left", desc: "요소의 왼쪽 위치를 설정한다"},
{name: "margin", desc: "요소의 바깥쪽 여백 크기를 설정한다"}
];
const searchBox = document.querySelector("#search-Box"); // 검색 창에 대한 정보
const cssCount = document.querySelector(".count"); // css 요소의 개수 부분
const cssDesc = document.querySelector(".desc"); // css 속성 설명 부분
const cssList = document.querySelector(".list"); // css 속성 목록
cssProperty.map((element, index) => { // css 이름과 속성이 저장되어 있는 배열의 요소와 인덱스 접근
cssCount.innerText = "전체 목록 개수 " + (index + 1) + "개"; // css 속성 개수(인덱스 수)를 텍스트로 사이트에 표시
cssList.innerHTML += "<span>"+ element.name +"</span>"; // span 태그 추가, 속성의 이름 표시
});
searchBox.addEventListener("keyup", () => { // 사용자가 검색할 값을 입력한 뒤(키를 눌렀다가 떼었을때)
const searchWord = searchBox.value; // 사용자가 검색할 값을 searchWord 변수에 저장
findProperty(searchWord); // 입력한 속성값을 찾는 함수 실행
});
document.querySelectorAll(".list span").forEach(span => { // css 속성 버튼에 대한 태그들에 접근
span.addEventListener("click", () => { // 버튼을 클릭하는 이벤트
const listProperty = span.innerText; // span 태그의 속성 이름을 listProperty에 저장
findProperty(listProperty); // 클릭한 속성 이름을 찾는다
});
});
function findProperty(searchProperty) {
const targetData = cssProperty.find((data) => data.name === searchProperty); // css 속성 정보가 들어있는 배열에서 찾는 값이 들어 있는지 확인
//(같은 값이 있으면 반환, 없으면 undefined)
if(targetData == null) { // 찾는 데이터가 없을때
cssDesc.textContent = "해당 속성은 존재하지 않습니다, 다시 검색해 주세요"; // 해당 속성이 존재하지 않는다는 텍스트 표시
return; // if문 종료
}
cssDesc.innerHTML = targetData.desc; // css 설명에 찾을 값을 저장(.list 태그에 설명 값을 표시)
}
'Script Sample > Search Effect' 카테고리의 다른 글
searchEffect06 - sort() / reverse() (0) | 2022.02.15 |
---|---|
searchEffect05 - filter() (0) | 2022.02.15 |
searchEffect03 - charAt() (0) | 2022.02.08 |
searchEffect02 - includes() (1) | 2022.02.07 |
searchEffect01 - IndexOf() (2) | 2022.02.07 |
댓글
© 2018 webstoryboy