본문 바로가기
이펙트 만들기/Search 이펙트 만들기

서치 이펙트 04

by 코딩달림 2022. 9. 29.
728x90

서치 이펙트

자바스크립트를 이용한 검색 기능 효과 만들기 입니다.


서치 이펙트 03 - find( )를 이용한 속성 검색

find( ) 메서드를 사용해 검색 또는 목록 클릭 시 해당 속성의 설명이 출력되는 효과입니다.


1. 검색창 만들기

검색 창과 속성 목록, 속성의 설명이 쓰여질 공간을 만듭니다.

소스보기
-HTML-
<main id="main">
    <div class="search__wrap">
        <span>find( )를 이용하여 속성을 검색하면 설명 보여주기</span>
        <h1>CSS 속성 검색하기</h1>

        <div class="search__box">
            <label for="search">검색하기</label>
            <input type="text" id="search" placeholder="CSS 속성 및 유형을 검색하세요.">
        </div>

        <div class="search__desc">
            속성을 검색하시면 설명이 표시됩니다!!!
        </div>

        <div class="search__info">
            <div>전체 속성 갯수 : <span class="num"></span></div>
        </div>

        <div class="search__list">

        </div>
    </div>
</main>
-CSS-
/* main */
#main {
    margin: 50px 10px;
}
.search__wrap {
    max-width: 1400px;
    margin: 0 auto;
    border: 3px solid var(--htmlColor);
    border-radius: 20px;
    background-color: #f1f3f6;
    padding: 30px;
    text-align: center;
}
.search__wrap > span {
    font-size: 20px;
    margin-bottom: 20px;
    display: inline-block;
}
.search__wrap > h1 {
    font-family: 'Tmon';
    color: var(--htmlColor);
    font-size: 6vw;
    margin-bottom: 10px;
}
.search__box {
    margin-bottom: 20px;
}
.search__box label {
    position:absolute;
    clip:rect(0 0 0 0);
    width:1px;
    height:1px;
    margin:-1px;
    overflow:hidden
}
.search__box input {
    border: 2px solid var(--htmlColor);
    padding: 15px 40px;
    width: 70%;
    border-radius: 50px;
    font-size: 20px;
}
.search__list {}
.search__list li {
    text-align: left;
    line-height: 1.7;
}
.search__list li.show {
    display: block;
}
.search__list li.hide {
    display: none;
}
.search__list span {
    display: inline-block;
    padding: 10px 20px;
    border: 1px solid var(--htmlColor);
    border-radius: 50px;
    margin: 5px;
    transition: all 0.3s;
    cursor: pointer;
}
.search__list span:hover {
    background-color: var(--htmlColor);
    color: #fff;
}
.search__info {
    text-align: right;
    margin-bottom: 30px;
    padding-bottom: 10px;
    border-bottom: 2px solid var(--htmlColor);
}
.search__info .type {
    text-align: center;
    margin-bottom: 10px;
}
.search__info .keyword {
    text-align: center;
    margin-bottom: 10px;
}
.search__info .keyword span {
    border: 2px solid var(--htmlColor);
    border-radius: 50px;
    padding: 10px;
    display: inline-block;
    margin-bottom: 4px;
}
.search__info .keyword span:hover {
    background-color: var(--htmlColor);
    color: #fff;
    cursor: pointer;
}

.search__desc {
    padding: 21px 40px 20px 60px;
    margin-bottom: 50px;
    background: #fff;
    border-radius: 50px;
    display: inline-block;
    background-color: var(--htmlColor);
    color: #fff;
    background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='11' cy='11' r='8' stroke='%23ffffff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M16.5 16.958L21.5 21.958' stroke='%23ffffff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: 22px 17px;
}

이번 효과는 저번 효과의 틀을 그대로 사용한데다 대부분을 스크립트로 처리하기에 HTML 파트가 상당히 단순화되었습니다.

2. 검색 효과 만들기

소스보기
const cssProperty = [
    { name: "accent-color", desc: "속성은 특정 요소에 색상을 지정할 때 사용됩니다." },
    { name: "align-content", desc: "콘텐츠 아이템의 상하관계 정렬 상태를 설정합니다." },
    { name: "align-items", desc: "콘텐츠 아이템의 내부 상하관계 정렬 상태를 설정합니다." },
    { name: "align-self", desc: "개별적인 콘텐츠 아이템의 정렬 상태를 설정합니다." },
    { name: "all", desc: "요소의 속성을 초기화 또는 상속을 설정합니다." },
    { name: "animation", desc: "애니메이션과 관련된 속성을 일괄적으로 설정합니다." },
    { name: "animation-delay", desc: "애니메이션 지연 시간을 설정합니다." },
    { name: "animation-direction", desc: "애니메이션 움직임 방향을 설정합니다." },
    { name: "animation-duration", desc: "애니메이션 움직임 시간을 설정합니다." },
    { name: "animation-fill-mode", desc: "애니메이션이 끝난 후의 상태를 설정합니다." },
    { name: "animation-iteration-count", desc: "애니메이션의 반복 횟수를 설정합니다." },
    { name: "animation-name", desc: "애니메이션 keyframe 이름을 설정합니다." },
    { name: "animation-play-state", desc: "애니메이션 진행상태를 설정 합니다." },
    { name: "animation-timeline", desc: "x" },
    { name: "animation-timing-function", desc: "애니메이션 움직임의 속도를 설정 합니다." },
    { name: "appearance", desc: "운영체제 및 브라우저에 기본적으로 설정되어 있는 테마를 기반으로 요소를 표현합니다." },
    { name: "aspect-ratio", desc: "요소의 크기를 비율대로 조정할 수 있게 합니다." },
    { name: "backdrop-filter", desc: "요소 뒤 영역에 흐림이나 색상 시프트 등 그래픽 효과를 적용할 수 있는 속성입니다." },
    { name: "backface-visibility", desc: "입체적인 모습의 뒷면의 가시성을 결정하는 속성이다." },
    { name: "background", desc: "백그라운드 속성을 일괄적으로 설정 합니다." },
    { name: "background-attachment", desc: "배경 이미지의 고정 여부를 설정 합니다." },
    { name: "background-blend-mode", desc: "배경을 혼합했을 때 그래픽 효과를 설정 합니다." },
    { name: "background-clip", desc: "백그라운드 이미지의 위치 기준점을 설정 합니다." },
    { name: "background-color", desc: "백그라운드 색을 설정 합니다." },
    { name: "background-image", desc: "백그라운드 이미지 속성을 설정 합니다." },
    { name: "background-origin", desc: "백그라운드 이미지의 위치 기준점을 설정하기 위한 속성입니다." },
    { name: "background-position", desc: "백그라운드 이미지의 위치 영역을 설정 합니다." },
    { name: "background-position-x", desc: "백그라운드 이미지의 x축 위치 영역을 설정 합니다." },
    { name: "background-position-y", desc: "백그라운드 이미지의 y축 위치 영역을 설정 합니다." },
    { name: "background-repeat", desc: "백그라운드 이미지 반복 여부를 설정 합니다." },
    { name: "background-size", desc: "백그라운드 이미지 사이즈를 설정 합니다." },
    { name: "block-size", desc: "기록 모드에 따라서, 요소의 블록의 수평과 수직 크기를 정의합니다." },
    { name: "border", desc: "테두리 속성을 일괄적으로 설정 합니다." },
    { name: "border-block", desc: "X" },
    { name: "border-block-color", desc: "x" },
    { name: "border-block-end", desc: "x" },
    { name: "border-block-end-color", desc: "x" },
    { name: "border-block-end-style", desc: "x" },
    { name: "border-block-end-width", desc: "x" },
    { name: "border-block-start", desc: "x" },
    { name: "border-block-start-color", desc: "x" },
    { name: "border-block-start-style", desc: "x" },
    { name: "border-block-start-width", desc: "x" },
    { name: "border-block-style", desc: "x" },
    { name: "border-block-width", desc: "x" },
    { name: "border-bottom", desc: "아래쪽 속성을 일괄적으로 설정 합니다." },
    { name: "border-bottom-color", desc: "테두리 아래쪽 색 속성을 설정합니다." },
    { name: "border-bottom-left-radius", desc: "아래 왼쪽 모서리 굴곡을 설정합니다." },
    { name: "border-bottom-right-radius", desc: "아래 오른쪽 모서리 굴곡을 설정합니다." },
    { name: "border-bottom-style", desc: "아래쪽 테두리의 스타일 속성을 설정합니다." },
    { name: "border-bottom-width", desc: "아래쪽 테두리의 두께 속성을 설정합니다." },
    { name: "border-collapse", desc: "테이블의 테두리를 겹칠지, 떨어트릴지를 설정합니다." },
    { name: "border-color", desc: "모든 면의 테두리 색상을 설정 합니다." },
    { name: "border-end-end-radius", desc: "요소의 테두리 반경을 설정 합니다." },
    { name: "border-end-start-radius", desc: "요소의 테두리 반경을 설정 합니다." },
    { name: "border-image", desc: "요소의 주위에 이미지를 설정 합니다." },
    { name: "border-image-outset", desc: "테두리 상자와 테두리 이미지의 거리를 설정 합니다." },
    { name: "border-image-repeat", desc: "모서리 영역을 테두리 이미지 크기에 맞춰 설정 합니다." },
    { name: "border-image-slice", desc: "설정한 이미지를 여러개의 영역으로 나눕니다." },
    { name: "border-image-source", desc: "테두리 이미지로 사용할 원본 이미지를 설정 합니다." },
    { name: "border-image-width", desc: "테두리 이미지의 너비를 설정 합니다." },
    { name: "border-inline", desc: "스타일 시트의 한 위치에 개별 논리적 인라인 테두리 속성 값을 설정 합니다." },
    { name: "border-inline-color", desc: "모든 인라인 테두리 색상을 설정 합니다." },
    { name: "border-inline-end", desc: "인라인 엔드 border 속성 값을 설정합니다." },
    { name: "border-inline-end-color", desc: "개별 논리적 인라인 끝 테두리 색상을 설정 합니다." },
    { name: "border-inline-end-style", desc: "인라인 끝 테두리 스타일을 설정 합니다." },
    { name: "border-inline-end-width", desc: "논리적 인라인 끝 테두리 너비를 설정 합니다." },
    { name: "border-inline-start", desc: "개별 논리적 인라인 시작 테두리 속성 값을 설정 합니다." },
    { name: "border-inline-start-color", desc: "논리적 인라인 시작 테두리 색상을 설정 합니다." },
    { name: "border-inline-start-style", desc: "논리적 인라인 시작 테두리 스타일을 설정 합니다." },
    { name: "border-inline-start-width", desc: "논리적 인라인 시작 테두리 너비를 설정 합니다." },
    { name: "border-inline-style", desc: "논리적 인라인 테두리 스타일을 설정 합니다." },
    { name: "border-inline-width", desc: "논리적 인라인 테두리 너비를 설정 합니다." },
    { name: "border-left", desc: "테두리 왼쪽 너비, 스타일, 색상을 설정 합니다." },
    { name: "border-left-color", desc: "요소의 왼쪽 테두리의 색상을 설정합니다." },
    { name: "border-left-style", desc: "요소의 왼쪽 테두리의 스타일 속성을 설정합니다." },
    { name: "border-left-width", desc: "요소의 왼쪽 테두리의 두께를 설정합니다." },
    { name: "border-radius", desc: "요소의 테두리 굴곡을 설정합니다." },
    { name: "border-right", desc: "요소의 오른쪽 테두리 속성을 일괄적으로 설정합니다." },
    { name: "border-right-color", desc: "요소의 오른쪽 테두리의 색상을 설정합니다." },
    { name: "border-right-style", desc: "요소의 오른쪽 테두리의 스타일 속성을 설정합니다." },
    { name: "border-right-width", desc: "요소의 오른쪽 테두리의 두께를 설정합니다." },
    { name: "border-spacing", desc: "테이블의 테두리 사이의 간격을 설정합니다." },
    { name: "border-start-end-radius", desc: "논리적 테두리 반경을 설정 합니다." },
    { name: "border-start-start-radius", desc: "논리적 테두리 반경을 설정 합니다." },
    { name: "border-style", desc: "요소의 테두리 스타일 속성을 설정합니다." },
    { name: "border-top", desc: "요소의 위쪽 테두리 속성을 일괄적으로 설정합니다." },
    { name: "border-top-color", desc: "요소의 위쪽 테두리의 색상을 설정합니다." },
    { name: "border-top-left-radius", desc: "요소의 위쪽 왼쪽 모서리의 굴곡을 설정합니다" },
    { name: "border-top-right-radius", desc: "요소의 위쪽 오른쪽 모서리의 굴곡을 설정합니다." },
    { name: "border-top-style", desc: "요소의 위쪽 테두리의 스타일 속성을 설정합니다." },
    { name: "border-top-width", desc: "요소의 위쪽 테두리의 두께를 설정합니다." },
    { name: "border-width", desc: "요소의 테두리의 두께를 설정합니다." },
    { name: "bottom", desc: "요소의 아래쪽에서의 위치를 설정합니다." },
    { name: "box-decoration-break", desc: "분할될 때 요소의 조각을 렌더링 하는 방법을 설정 합니다." },
    { name: "box-shadow", desc: "박스 그림자 효과를 설정 합니다." },
    { name: "box-sizing", desc: "브라우저가 요소의 크기를 어떻게 계산할지를 설정합니다." },
    { name: "break-after", desc: "박스 나누기가 작동하는 방식을 설정 합니다. 상자가 없으면 속성이 무시됩니다." },
    { name: "break-before", desc: "박스 나누기가 작동하는 방식을 설정 합니다. 상자가 없으면 속성이 무시됩니다." },
    { name: "break-inside", desc: "박스 나누기가 작동하는 방식을 설정 합니다. 상자가 없으면 속성이 무시됩니다." },
    { name: "caption-side", desc: "테이블 내용을 지정된 쪽에 배치 합니다." },
    { name: "caret-color", desc: "삽입 캐럿의 색상을 설정 합니다. 이것은 텍스트 입력 커서라고도 합니다." },
    { name: "clear", desc: "float 버그를 제거해줍니다." },
    { name: "clip", desc: "요소의 특정 부분만 나오도록 할 수 있습니다." },
    { name: "clip-path", desc: "이미지나 요소를 말 그대로 클립(잘라내기)할 수 있는 속성" },
    { name: "color", desc: "텍스트의 색상을 설정합니다." },
    { name: "color-scheme", desc: "렌더링할 수 있는 색 구성표를 나타냅니다." },
    { name: "column-count", desc: "요소의 내용을 지정된 수의 열로 나눕니다." },
    { name: "column-fill", desc: "열로 나눌 때 요소의 균형을 이루는 방법을 제어 합니다." },
    { name: "column-gap", desc: "열 사이의 간격 크기를 설정 합니다." },
    { name: "column-rule", desc: "다중 열 레이아웃에서 열 사이에 그려지는 선의 너비, 스타일 및 색상을 설정 합니다." },
    { name: "column-rule-color", desc: "다중 열 레이아웃에서 열 사이에 그려지는 선의 색상을 설정 합니다." },
    { name: "column-rule-style", desc: "다중 열 레이아웃에서 열 사이에 그려지는 선의 스타일을 설정 합니다." },
    { name: "column-rule-width", desc: "다중 열 레이아웃에서 열 사이에 그려지는 선의 너비를 설정 합니다." },
    { name: "column-span", desc: "다단 구성 시 여러 단을 차지하는 요소를 지정하기 위한 속성" },
    { name: "column-width", desc: "다중 열 레이아웃에서 이상적인 열 너비를 설정 합니다." },
    { name: "columns", desc: "내용을 그릴 때 사용할 열 수와 해당 열의 너비를 설정 합니다." },
    { name: "contain", desc: "각 위젯의 내부가 위젯의 경계 상자 외부에서 부작용이 발생하지 않도록 방지하는 데 사용할 수 있으므로 모두 독립적 인 위젯이 많이 포함 된 페이지에서 유용합니다." },
    { name: "content", desc: "한 값으로 요약됩니다. contnet 속성으로 추가한 기능은 '익명 콘텐츠' 입니다." },
    { name: "content-visibility", desc: "요소가 콘텐츠를 전혀 렌더링하는지 여부를 제어하고 강력한 포함 세트를 강제하여 사용자 에이전트가 필요할 때까지 많은 레이아웃 및 렌더링 작업을 잠재적으로 생략할 수 있습니다." },
    { name: "counter-increment", desc: "카운터 값을 주어진 값 만큼 늘리거나 줄 입니다." },
    { name: "counter-reset", desc: "카운터를 주어진 값으로 재설정 합니다." },
    { name: "counter-set", desc: "카운터를 주어진 값으로 설정 합니다." },
    { name: "cursor", desc: "요소 위에 마우스 커서가 올라갔을 때 보여줄 모양을 지정합니다." },
    { name: "direction", desc: "텍스트,테이블 열 및 가로 오버프롤의 방향을 설정 합니다." },
    { name: "display", desc: "요소를 어떻게 보여줄지를 결정합니다." },
    { name: "empty-cells", desc: "보이는 내용이 없는 셀 주위에 테두리와 배경을 표시할지 여부를 설정 합니다." },
    { name: "filter", desc: "흐림 효과나 변형 효과를 나타냅니다." },
    { name: "flex", desc: "플렉스 아이템이 자신의 컨테이너가 차지하는 공간에 맞추기 위해 크기를 키우거나 줄이는 방법을 설정하는 속성 입니다." },
    { name: "flex-basis", desc: "플렉스 초기 기본 크기를 설정 합니다." },
    { name: "flex-direction", desc: "아이템이 플렉스 컨테이너 안에 위치되는 방법을 설정 합니다." },
    { name: "flex-flow", desc: "플렉스 방향, 포장의 속성을 설정 합니다." },
    { name: "flex-grow", desc: "플렉스 아이템 요소가 컨테이너 내부의 정도를 제한합니다." },
    { name: "flex-shrink", desc: "플렉스 아이템 요소의 flex-shrink을 설정 합니다." },
    { name: "flex-wrap", desc: "플렉스 아이템을 wrap으로 감쌉니다." },
    { name: "float", desc: "레이아웃 흐름에서 벗어나 요소의 모서리가 페이지 왼쪽이나 오른쪽에 이동한다." },
    { name: "font", desc: "텍스트에 대해 설정 합니다." },
    { name: "font-family", desc: "선택한 항목에 우선 순위가 더 높은 글꼴 패밀리 이름을 추가 합니다." },
    { name: "font-feature-settings", desc: "다양한 모바일타입 피처를 설정 합니다." },
    { name: "font-kerning", desc: "글꼴에 커닝 정보의 사용을 설정 합니다." },
    { name: "font-language-override", desc: "서체에서 언어별 글리프의 사용을 제어 합니다." },
    { name: "font-optical-sizing", desc: "텍스트 렌더링이 다양한 크기로 보기에 최적화되어 있는지 여부를 설정 합니다." },
    { name: "font-size", desc: "폰트 크기를 설정 합니다." },
    { name: "font-size-adjust", desc: "현재 글꼴 크기를 기준으로 소문자 크기를 설정 합니다." },
    { name: "font-stretch", desc: "글꼴에서 일반, 축소 또는 확장된 면을 선택합니다." },
    { name: "font-style", desc: "글꼴의 스타일을 설정 합니다." },
    { name: "font-synthesis", desc: "브라우저가 굵은 글꼴과 이탤릭 글꼴을 합성하는 것을 허용할지 설정합니다." },
    { name: "font-variant", desc: "글꼴에 대한 모든 글꼴 변형을 설정 합니다." },
    { name: "font-variant-alternates", desc: "대체 글리프의 사용을 제어합니다." },
    { name: "font-variant-caps", desc: "문자에 대한 대체 글리프의 사용을 제어합니다." },
    { name: "font-variant-east-asian", desc: "일본어 및 중국어와 같은 동아시아 스크립트에 대한 대체 글리프 사용을 제어합니다." },
    { name: "font-variant-ligatures", desc: "텍스트 콘텐츠에 사용되는 합자 및 컨텍스트 형식을 제어합니다." },
    { name: "font-variant-numeric", desc: "숫자, 분수 및 서수 마커에 대한 대체 글리프의 사용을 제어합니다." },
    { name: "font-variant-position", desc: "위 첨자 또는 아래 첨자로 배치되는 더 작은 대체 글리프의 사용을 제어합니다." },
    { name: "font-variation-settings", desc: "변경하려는 특성의 4글자 축 이름을 해당 값과 함께 지정하여 가변 글꼴 특성에 대한 저수준 제어를 제공합니다." },
    { name: "font-weight", desc: "글꼴 두께를 설정 합니다." },
    { name: "forced-color-adjust", desc: "작성자가 강제 색상 모드에서 특정 요소를 선택할 수 있습니다." },
    { name: "gap (grid-gap)", desc: "정과 열 사이의 거리를 설정 합니다." },
    { name: "grid", desc: "표 형태의 레이아웃을 만들 수 있는 속성입니다." },
    { name: "grid-area", desc: "영역(Area) 이름을 설정합니다." },
    { name: "grid-auto-columns", desc: "암시적으로 생성된 그리드 열 트랙 또는 트랙 패턴의 크기를 지정합니다." },
    { name: "grid-auto-flow", desc: "자동 배치 알고리즘이 작동하는 방식을 제어하여 자동 배치 항목이 그리드로 흐르는 방식을 정확히 지정 합니다." },
    { name: "grid-auto-rows", desc: "암시적으로 생성된 그리드 행 트랙 또는 트랙 패턴의 크기를 지정 합니다." },
    { name: "grid-column", desc: "그리드 항목의 크기와 위치를 지정하고 그리드 영역의 인라인 시작 및 인라인 끝 가장자리를 지정합니다." },
    { name: "grid-column-end", desc: "그리드 열 내에서 그리드 항목의 끝 위치를 지정하여 그리드 영역의 블록 끝 가장자리를 지정 합니다." },
    { name: "grid-column-start", desc: "특정 item을 표시하기 시작할 열을 지정합니다." },
    { name: "grid-row", desc: "그리드 열 내에서 그리드 항목의 시작 위치를 지정합니다." },
    { name: "grid-row-end", desc: "그리드 행 네에서 그리드 항목의 끝 위치를 지정함으로써 그리드 영역의 인라인 끝 가장자리를 지정합니다." },
    { name: "grid-row-start", desc: "그리드 행 내에서 그리드 항목의 시작 위치를 지정함으로써 그리드 영역의 인라인 시작 가장자리를 지정합니다." },
    { name: "grid-template", desc: "그리드 열, 행 및 영역을 정의 합니다." },
    { name: "grid-template-areas", desc: "명명된 격자 영역을 지정하고 격자에 셀을 설정하고 이름을 할당합니다." },
    { name: "grid-template-columns", desc: "그리드 열의 너비를 설정 합니다." },
    { name: "grid-template-rows", desc: "그리드 행의 높이를 설정 합니다." },
    { name: "hanging-punctuation", desc: "문장 부호가 텍스트 줄의 시작 또는 끝에 매달려야 하는지 여부를 지정합니다." },
    { name: "height", desc: "요소의 높이를 설정 합니다." },
    { name: "hyphenate-character", desc: "하이픈 나누기 전에 줄 끝에서 사용되는 문자를 설정 합니다." },
    { name: "hyphens", desc: "여러 줄에 걸치는 텍스트에서 단어에 붙임표를 추가하는 방식을 설정 합니다." },
    { name: "image-orientation", desc: "이미지 방향에 대한 레이아웃 독립적 수정을 지정합니다." },
    { name: "image-rendering", desc: "렌더링에 대한 이미지를 제공합니다." },
    { name: "image-resolution", desc: "요소에서 사용되는 모든 래스터 이미지의 고유 해상도를 지정합니다." },
    { name: "ime-mode", desc: "IME(Input Method Editor)의 상태를 반환하거나 설정합니다." },
    { name: "initial-letter", desc: "떨어뜨림, 올리기 및 움푹 들어간 이니셜 문자에 대한 스타일을 설정 합니다." },
    { name: "initial-letter-align", desc: "단락 내에서 첫 글자의 정렬을 지정합니다." },
    { name: "inline-size", desc: "쓰기 모드에 따라 요소 블록의 가로 또는 세로 크기를 정의합니다." },
    { name: "inset", desc: "상하좌우값을 지정해 줄수 있는 css 속성." },
    { name: "inset-block", desc: "쓰기 모드, 방향 및 텍스트 방향에 따라 물리적 오프셋에 매핑되는 요소의 논리적 블록 시작 및 끝 오프셋을 정의합니다." },
    { name: "inset-block-end", desc: "요소의 쓰기모드, 방향 및 텍스트 방향에 따라 물리적 인세트에 매핑되는 요소의 논리적 블록 끝 오프셋을 정의합니다." },
    { name: "inset-block-start", desc: "요소의 쓰기모드, 방향 및 텍스트 방향에 따라 물리적 인세트에 매핑되는 요소의 논리적 블록 시작 오프셋을 정의합니다." },
    { name: "inset-inline", desc: "인라인 방향으로 요소의 논리적 시작 및 끝 오프셋을 정의합니다." },
    { name: "inset-inline-end", desc: "요소의 쓰기모드,방향 및 텍스트 방향에 따라 물리적 오프셋에 매핑되는 요소의 논리적 인라인 끝 삽입을 정의합니다." },
    { name: "inset-inline-start", desc: "요소의 쓰기모드, 방향 및 텍스트 방향에 따라 물리적 오프셋에 매핑되는 요소의 논리적 인라인 시작 삽입을 정의합니다." },
    { name: "isolation", desc: "요소가 새로운 쌓임 맥락을 생성해야 하는지 지정합니다." },
    { name: "justify-content", desc: "플렉스 컨테이너의 기본 축과 그리드 컨테이너의 인라인 축을 기준으로 아이템들을 정렬 합니다." },
    { name: "justify-items", desc: "상자의 모든 항목에 대한 기본값을 정의합니다." },
    { name: "justify-self", desc: "적절한 축을 따라 정렬 컨테이너 내부에서 상자가 정렬되는 방식을 설정 합니다." },
    { name: "left", desc: "배치된 요소의 수평 위치 지정에 참여합니다." },
    { name: "letter-spacing", desc: "글자 사이의 간격을 조절합니다." },
    { name: "line-break", desc: "한중일 3개국어의 텍스트 줄을 어디서 바꿀지 지정합니다." },
    { name: "line-height", desc: "라인 상자의 높이를 설정합니다. heigh와 값이 같을 경우 가운데정렬" },
    { name: "line-height-step", desc: "라인 상자 높이의 단계 단위를 설정 합니다." },
    { name: "list-style", desc: "모든 목록 스타일 속성을 설정 합니다." },
    { name: "list-style-image", desc: "목록 항목 마커로 사용할 이미지를 설정 합니다." },
    { name: "list-style-position", desc: "목록 항목에 대한 상대 위치를 설정 합니다." },
    { name: "list-style-type", desc: "목록 항목 요소의 마커를 설정 합니다." },
    { name: "margin", desc: "요소 사이의 간격을 설정 합니다." },
    { name: "margin-block", desc: "쓰기모드,방향 및 텍스트 방향에 따라 물리적 여백에 매핑되는 요소의 논리적 블록 시작 및 끝 여백을 정의합니다." },
    { name: "margin-block-end", desc: "쓰기모드,방향 및 텍스트 방향에 따라 물리적 여백에 매핑되는 요소의 논리적 블록 끝 여백을 정의합니다." },
    { name: "margin-block-start", desc: "쓰기모드,방향 및 텍스트 방향에 따라 물리적 여백에 매핑되는 요소의 논리적 블록 시작 여백을 정의합니다." },
    { name: "margin-bottom", desc: "아래 여백 영역을 설정 합니다." },
    { name: "margin-inline", desc: "쓰기모드,방향 및 텍스트 방향에 따라 물리적 여백에 매핑되는 요소의 논리적 인라인 시작 및 끝 여백을 모두 정의합니다." },
    { name: "margin-inline-end", desc: "쓰기모드,방향 및 텍스트 방향에 따라 물리적 여백에 매핑되는 요소의 논리적 인라인 끝 여백을 정의합니다." },
    { name: "margin-inline-start", desc: "쓰기모드,방향 및 텍스트 방향에 따라 물리적 여백에 매핑되는 요소의 논리적 인라인 시작 여백을 정의합니다." },
    { name: "margin-left", desc: "요소의 왼쪽에 여백 영역을 설정 합니다." },
    { name: "margin-right", desc: "요소의 오른쪽 여백 영역을 설정 합니다." },
    { name: "margin-top", desc: "요소의 상단 여백 영역을 설정 합니다." },
    { name: "margin-trim", desc: "컨테이너가 컨테이너의 가장자리에 인접한 자식의 여백을 트리밍할 수 있습니다." },
    { name: "mask", desc: "아이템이 부분적으로만 보여지게 하거나 혹은 완전히 가려서 보여지지 않게 할 수 있는 기능을 가지고 있습니다." },
    { name: "mask-border", desc: "요소 테두리의 가장자리를 따라 마스크를 만들 수 있습니다." },
    { name: "mask-border-mode", desc: "마스크 테두리에 사용되는 혼합 모드를 지정합니다." },
    { name: "mask-border-outset", desc: "요소의 마스크 테두리가 테두리 상자에서 설정되는 거리를 지정합니다." },
    { name: "mask-border-repeat", desc: "소스 이미지의 가장자리 영역이 요소의 마스크 테두리 크기에 맞게 조정되는 방식을 설정합니다." },
    { name: "mask-border-slice", desc: "이미지 세트를 영역으로 나눕니다." },
    { name: "mask-border-source", desc: "요소의 마스크 테두리를 만드는데 사용되는 소스 이미지를 설정 합니다." },
    { name: "mask-border-width", desc: "요소의 마스크 테두리 너비를 설정 합니다." },
    { name: "mask-clip", desc: "마스크의 영향을 받는 영역을 결정합니다." },
    { name: "mask-composite", desc: "현재 마스크 레이어 아래에 마스크 레이어가 있는 합성 작업을 나타냅니다." },
    { name: "mask-image", desc: "요소의 마스크 레이어로 사용되는 이미지를 설정 합니다." },
    { name: "mask-mode", desc: "정의된 마스크 참조가 광도 또는 알파 마스크로 처리되는지 여부를 설정 합니다." },
    { name: "mask-origin", desc: "마스크의 원점을 설정 합니다." },
    { name: "mask-position", desc: "정의된 각 마스크 이미지에 대해 설정된 마스크 위치 레이어를 기준으로 초기 위치를 설정합니다." },
    { name: "mask-repeat", desc: "마스크 이미지가 반복되는 방식을 설정 합니다." },
    { name: "mask-size", desc: "마스크 이미지의 크기를 설정 합니다." },
    { name: "mask-type", desc: "SVG 요소가 휘도 또는 알파 마스크로 사용되는지 여부를 설정 합니다." },
    { name: "max-block-size", desc: "지정된 대로 쓰기 방향과 반대 방향으로 요소의 최대 크기를 지정합니다." },
    { name: "max-height", desc: "요소의 최대 높이를 설정 합니다." },
    { name: "max-inline-size", desc: "쓰기 모드에 따라 요소 블록의 가로 또는 세로 최대 크기를 정의합니다." },
    { name: "max-width", desc: "요소의 최대 너비를 설정 합니다." },
    { name: "min-block-size", desc: "쓰기 모드에 따라 요소 블록의 최소 가로 또는 세로 크기를 정의합니다." },
    { name: "min-height", desc: "요소의 최소 높이를 합니다." },
    { name: "min-inline-size", desc: "쓰기 모드에 따라 요소 블록의 가로 또는 세로 최소 크기를 정의합니다." },
    { name: "min-width", desc: "요소의 최소 너비를 설정 합니다." },
    { name: "mix-blend-mode", desc: "배경을 혼합 합니다." },
    { name: "object-fit", desc: "img 나 video 요소와 같은 대체 요소의 콘텐츠 크기를 어떤 방식으로 조절해 요소에 맞출 것인지 지정합니다." },
    { name: "object-position", desc: "오브젝트 위치를 설정 합니다." },
    { name: "offset", desc: "정의된 경로에 따라 요소에 애니메이션을 적용하는데 필요한 모든 속성을 설정 합니다." },
    { name: "offset-anchor", desc: "실제로 경로를 따라 움직이는 요소를 따라 이동하는 요소의 상자 내부 지점을 지정합니다." },
    { name: "offset-distance", desc: "요소가 배치될 위치를 지정합니다." },
    { name: "offset-path", desc: "요소가 따라갈 모션 경로를 지정하고 상위 컨테이너 또는 SVG 좌표 시스템 내에서의 요소의 위치를 정의합니다." },
    { name: "offset-postion", desc: "요소가 따라 배치될 때 요소의 위치를 정의합니다." },
    { name: "offset-rotate", desc: "요소가 따라 배치될 때 요소의 방향을 정의합니다." },
    { name: "opacity", desc: "요소의 투명도를 설정 합니다." },
    { name: "order", desc: "플렉스 또는 그리드 컨테이너 안에서 현재 요소의 배치 순서를 지정합니다." },
    { name: "orphans", desc: "페이지, 영역 또는 열의 맨 아래에 표시되어야 하는 블록 컨테이너 최소 줄 수를 설정 합니다." },
    { name: "outline", desc: "요소의 윤곽선을 설정 합니다." },
    { name: "outline-color", desc: "요소의 윤곽선 색상을 설정 합니다." },
    { name: "outline-offset", desc: "윤곽선과 요소의 가장자리 또는 테두리 사이의 간격을 설정 합니다." },
    { name: "outline-style", desc: "윤곽선의 스타일을 설정 합니다." },
    { name: "outline-width", desc: "윤곽선의 두께를 설정 합니다." },
    { name: "overflow", desc: "내용이 박스보다 큰 경우 넘친 부분에 대해 설정 합니다." },
    { name: "overflow-anchor", desc: "콘텐츠 이동을 최소화하기 위해 스크롤 위치를 조정하는 브라우저의 스크롤 고정 동작을 옵트아웃하는 방법을 제공합니다." },
    { name: "overflow-block", desc: "콘텐츠가 상자의 블록 시작 및 블록 끝 가장자리를 오버플로할 때 표시되는 내용을 설정합니다." },
    { name: "overflow-clip-margin", desc: "클리핑되기 전에 요소가 경계를 벗어나 얼마나 멀리 칠할 수 있는지를 결정합니다." },
    { name: "overflow-inline", desc: "콘텐츠가 상자의 인라인 시작 및 끝 가장자리를 오버플로할 때 표시되는 내용을 설정합니다." },
    { name: "overflow-wrap", desc: "줄바꿈 위해 단어 쪼개기" },
    { name: "overflow-x", desc: "콘텐츠가 블록 수준 요소의 왼쪽 및 오른쪽 가장자리를 오버플로할 때 표시되는 내용을 설정합니다." },
    { name: "overflow-y", desc: "콘텐츠가 블록 수준 요소의 위쪽 및 아래쪽 가장자리를 오버플로할 때 표시되는 내용을 설정합니다." },
    { name: "overscroll-behavior", desc: "스크롤 영역의 경계에 도달할 때 브라우저가 수행하는 작업을 설정합니다." },
    { name: "overscroll-behavior-block", desc: "스크롤 영역의 블록 방향 경계에 도달할 때 브라우저의 동작을 설정합니다." },
    { name: "overscroll-behavior-inline", desc: "스크롤 영역의 인라인 방향 경계에 도달할 때 브라우저의 동작을 설정합니다." },
    { name: "overscroll-behavior-x", desc: "스크롤 영역의 수평 경계에 도달할 때 브라우저의 동작을 설정합니다." },
    { name: "overscroll-behavior-y", desc: "스크롤 영역의 수직 경계에 도달할 때 브라우저의 동작을 설정합니다." },
    { name: "padding", desc: "속성의 네 방향 여백을 설정 합니다." },
    { name: "padding-block-end", desc: "요소의 쓰기모드, 방향 및 텍스트 방향에 따라 물리적 패딩에 매핑되는 요소의 논리적 블록 끝 패딩을 정의합니다." },
    { name: "padding-block-start", desc: "요소의 쓰기모드, 방향 및 텍스트 방향에 따라 물리적 패딩에 매핑되는 요소의 논리적 블록 시작 패딩을 정의합니다." },
    { name: "padding-bottom", desc: "요소 내부의 아래쪽 여백을 설정 합니다." },
    { name: "padding-inline-end", desc: "요소의 쓰기모드,방향 및 텍스트 방향에 따라 물리적 패딩에 매핑되는 요소의 논리적 인라인 끝 패딩을 정의합니다." },
    { name: "padding-inline-start", desc: "요소의 쓰기모드,방향 및 텍스트 방향에 따라 물리적 패딩에 매핑되는 요소의 논리적 인라인 시작 패딩을 정의합니다." },
    { name: "padding-left", desc: "요소의 왼쪽 여백을 설정 합니다." },
    { name: "padding-right", desc: "요소의 오른쪽 여백을 설정 합니다." },
    { name: "padding-top", desc: "요소의 상단 여백을 설정 합니다." },
    { name: "page-break-after", desc: "페이지 인쇄시 분리에 관한 설정을 정의합니다." },
    { name: "page-break-before", desc: "프린터로 출력할 때 다음 페이지로 페이지를 넘기는 것을 지정하는 Property입니다." },
    { name: "page-break-inside", desc: "인쇄시 페이지 분리에 관한 설정을 정의합니다." },
    { name: "perspective", desc: "3D 위치 요소에 약간의 원근감을 주기 위해 z=0 평면과 사용자 사이의 거리를 결정합니다." },
    { name: "perspective-origin", desc: "뷰어가 보고 있는 위치를 결정합니다." },
    { name: "place-content", desc: "그리드나 플렉스 레이아웃에서 블록 및 인라인 방향을 따라 콘텐츠를 한 번에 정렬할 수 있습니다." },
    { name: "place-items", desc: "그리드나 플렉스 레이아웃에서 블록 및 인라인 방향을 따라 항목을 한 번에 정렬할 수 있습니다." },
    { name: "place-self", desc: "그리드나 플렉스 레이아웃에서 블록 및 인라인 방향으로 개별 항목을 한 번에 정리할 수 있습니다." },
    { name: "pointer-event", desc: "HTML 요소들의 마우스/터치 이벤트들(CSS hover/active, JS click/tap, 커서 드래그등)의 응답을 조정할 수 있는 속성이다." },
    { name: "position", desc: "속성이 배치될 최종 위치를 결정합니다." },
    { name: "print-color-adjust", desc: "출력 장치에서 요소의 모양을 최적화하기 위해 사용자 에이전트가 수행할 수 있는 작업을 설정합니다." },
    { name: "quotes", desc: "속성 또는 값을 사용하여 추가된 따옴표를 브라우저에서 렌더링하는 방법을 설정 합니다." },
    { name: "resize", desc: "요소의 크기를 조정할 수 있는지 여부와 가능한 경우 방향을 설정 합니다." },
    { name: "right", desc: "배치된 요소의 수평 위치 지정에 참여합니다." },
    { name: "rotate", desc: "속성과 별도로 회전 변환을 지정할 수 있습니다." },
    { name: "row-gap (grid-row-gap)", desc: "요소 행 사이의 간격을 설정 합니다." },
    { name: "ruby-align", desc: "베이스에 대한 다양한 루비 요소의 분포를 정의합니다." },
    { name: "ruby-position", desc: "기본 요소를 기준으로 루비 요소의 위치를 정의합니다." },
    { name: "scale", desc: "속성과 별개로 스케일 변환을 개별적으로 지정할 수 있습니다." },
    { name: "scroll-behavior", desc: "스크롤이 탐색 또는 CSSOM 스크롤 API에 의해 트리거될 때 스크롤 상자의 동작을 설정합니다." },
    { name: "scroll-margin", desc: "요소의 모든 스크롤 여백을 한 번에 설정하여 속성이 요소의 여백에 대해 수행하는 것과 유사한 값을 할당합니다." },
    { name: "scroll-margin-block", desc: "블록 차원에서 요소의 스크롤 여백을 설정 합니다." },
    { name: "scroll-margin-block-end", desc: "상자를 스냅포트에 맞추는 데 사용되는 블록 치수 끝에서 스크롤 스냅 영역의 여백을 정의합니다." },
    { name: "scroll-margin-block-start", desc: "상자를 스냅포트에 맞추는 데 사용되는 블록 차원의 시작 부분에서 스크롤 스냅 영역의 여백을 정의합니다." },
    { name: "scroll-margin-bottom", desc: "상자를 snapport에 맞추는 데 사용되는 스크롤 스냅 영역의 아래쪽 여백을 정의합니다." },
    { name: "scroll-margin-inline", desc: "인라인 차원에서 요소의 스크롤 여백을 설정합니다." },
    { name: "scroll-margin-inline-end", desc: "상자를 snapport에 맞추는 데 사용되는 인라인 차원의 끝에서 스크롤 스냅 영역의 여백을 정의합니다." },
    { name: "scroll-margin-inline-start", desc: "상자를 snapport에 맞추는 데 사용되는 인라인 차원의 시작부분에서 스크롤 스냅 영역의 여백을 정의합니다." },
    { name: "scroll-margin-left", desc: "상자를 snapport에 맞추는 데 사용되는 스크롤 스냅 영역의 왼쪽 여백을 정의합니다." },
    { name: "scroll-margin-right", desc: "상자를 snapport에 맞추는 데 사용되는 스크롤 스냅 영역의 오른쪽 여백을 정의합니다." },
    { name: "scroll-margin-top", desc: "상자를 snapport에 맞추는 데 사용되는 스크롤 스냅 영역의 위쪽 여백을 정의합니다." },
    { name: "scroll-padding", desc: "요소의 모든 면에 스크롤 패딩을 한 번에 설정 합니다." },
    { name: "scroll-padding-block", desc: "블록 차원에서 요소의 스크롤 패딩을 설정 합니다." },
    { name: "scroll-padding-block-end", desc: "스크롤포트의 최적보기 영역의 블록 차원에서 끝 가장자리에 대한 오프셋을 정의합니다." },
    { name: "scroll-padding-block-start", desc: "스크롤 포트의 최적보기 영역의 블록 차원에서 시작 가장자리에 대한 오프셋을 정의합니다." },
    { name: "scroll-padding-bottom", desc: "스크롤포트의 최적 보기영역 하단에 대한 오프셋을 정의합니다." },
    { name: "scroll-padding-inline", desc: "인라인 차원에서 요소의 스크롤 패딩을 설정 합니다." },
    { name: "scroll-padding-inline-end", desc: "스크롤 포트의 최적보기 영역의 인라인 차원에서 끝 가장자리에 대한 오프셋을 정의합니다." },
    { name: "scroll-padding-inline-start", desc: "스크롤 포트의 최적보기 영역의 인라인 차원에서 시작 가장자리에 대한 오프셋을 정의합니다." },
    { name: "scroll-padding-left", desc: "스크롤 포트의 최적 보기영역 왼쪽에 대한 오프셋을 정의합니다." },
    { name: "scroll-padding-right", desc: "스크롤 포트의 최적 보기영역 오른쪽에 대한 오프셋을 정의합니다." },
    { name: "scroll-padding-top", desc: "스크롤 포트의 최적 보기영역 상단에 대한 오프셋을 정의합니다." },
    { name: "scroll-snap-align", desc: "상자의 스냅 위치를 해당 스냅 컨테이너의 스냅포트 내에서 해당 스냅영역의 정렬로 지정합니다." },
    { name: "scroll-snap-coordinate", desc: "x" },
    { name: "scroll-snap-destination", desc: "x" },
    { name: "scroll-snap-points-x", desc: "x" },
    { name: "scroll-snap-points-y", desc: "x" },
    { name: "scroll-snap-stop", desc: "스크롤 컨테이너가 가능한 스냅 위치를 '통과'할 수 있는지 여부를 정의합니다." },
    { name: "scroll-snap-type", desc: "스냅 포인트가 있는 경우 스크롤 컨테이너에 스냅 포인트가 얼마나 엄격하게 적용되는지 설정합니다." },
    { name: "scrollbar-color", desc: "스크롤바 트랙과 썸의 색상을 설정 합니다." },
    { name: "scrollbar-width", desc: "작성자가 표시될 때 요소의 스크롤 막대의 최대 두께를 설정합니다." },
    { name: "shape-image-threshold", desc: "이미지를 값으로 사용하여 모양을 추출하는 데 사용되는 알파 채널 임계값을 설정합니다." },
    { name: "shape-margin", desc: "CSS 모양의 여백을 설정 합니다." },
    { name: "shape-outside", desc: "인접한 인라인 콘텐츠가 둘러싸야 하는 사각형이 아닐 수 있는 모양을 정의합니다." },
    { name: "tab-size", desc: "탭 문자(+ 0009 U)의 폭을 지정하는 데 사용합니다." },
    { name: "table-layout", desc: "셀,행 및 열 배치하는데 사용되는 알고리즘을 설정 합니다." },
    { name: "text-align ", desc: "블럭 안 요소의 정렬을 설정 합니다." },
    { name: "text-align-last", desc: "강제 줄 바꿈 직전의 블록이나 줄의 마지막 줄을 정렬하는 방법을 설정합니다." },
    { name: "text-combine-upright ", desc: "문자 조합을 단일 문자 공간으로 설정합니다." },
    { name: "text-decoration", desc: "텍스트에 꾸밈 요소를 설정 합니다." },
    { name: "text-decoration-color", desc: "텍스트에 추가되는 장식의 색상을 설정 합니다." },
    { name: "text-decoration-line", desc: "밑줄이나 윗줄과 같이 요소의 텍스트에 사용되는 장식의 종류를 설정 합니다." },
    { name: "text-decoration-skip", desc: "요소에 영향을 미치는 텍스트 장식이 건너뛰어야 하는 요소 콘텐츠의 부분을 설정합니다." },
    { name: "text-decoration-skip-ink", desc: "윗줄과 밑줄이 글리프 어센더 및 디센더를 전달할 때 그려지는 방법을 지정합니다." },
    { name: "text-decoration-style", desc: "지정된 선의 스타일을 설정 합니다." },
    { name: "text-emphasis", desc: "텍스트에 강조 표시를 적용합니다." },
    { name: "text-emphasis-color", desc: "강조 표시의 색상을 설정 합니다." },
    { name: "text-emphasis-position", desc: "루비 텍스트와 마찬가지로 강조 표시를 위한 공간이 충분하지 않으면 줄 높이가 높아집니다." },
    { name: "text-emphasis-style", desc: "강조 표시의 모양을 설정합니다." },
    { name: "text-indent", desc: "블록의 텍스트 줄 앞에 배치되는 빈 공간의 길이를 설정 합니다." },
    { name: "text-justify", desc: "텍스트에 적용해야 하는 맞춤 유형을 설정 합니다." },
    { name: "text-orientation", desc: "줄에서 텍스트 문자의 방향을 설정 합니다." },
    { name: "text-overflow", desc: "숨겨진 오버플로 콘텐츠가 사용자에게 신호되는 방식을 설정합니다." },
    { name: "text-rendering", desc: "텍스트를 렌더링할 때 최적화할 대상에 대한 정보를 렌더링 엔진에게 제공합니다." },
    { name: "text-shadow", desc: "그림자를 추가합니다." },
    { name: "text-size-adjust", desc: "일부 스마트폰 및 태블릿에서 사용되는 텍스트 인플레이션 알고리즘을 제어합니다." },
    { name: "text-transform", desc: "요소의 텍스트를 대문자로 표시하는 방법을 지정합니다." },
    { name: "text-underline-position", desc: "속성 값을 사용하여 설정되는 밑줄의 위치를 지정합니다." },
    { name: "top", desc: "태그 위치를 상단 기준으로 어느 높이에 위치시킬건지 설정합니다." },
    { name: "touch-action", desc: "터치스크린 사용자가 요소의 영역을 조작하는 방법을 설정합니다." },
    { name: "transform", desc: "요소에 회전, 크기조절, 기울이기, 이동 효과를 부여할 수 있습니다." },
    { name: "transform-box", desc: "속성이 관련된 레이아웃 상자를 정의합니다." },
    { name: "transform-origin", desc: "요소 변형의 원점을 설정합니다." },
    { name: "transform-style", desc: "요소의 자식이 3D 공간에 배치되는지 또는 요소 평면에서 병합 되는지 여부를 설정합니다." },
    { name: "transition", desc: "애니메이션 효과의 속도를 조절하는 방법을 제공합니다." },
    { name: "transition-delay", desc: "전환(transition) 효과가 나타나기 전까지의 지연 시간을 설정합니다." },
    { name: "transition-duration", desc: "전환(transition) 효과가 지속될 시간을 설정함." },
    { name: "transition-property", desc: "전환 효과를 적용할 CSS 속성을 설정 합니다." },
    { name: "transition-timing-function", desc: "전환 효과의 영향을 받는 CSS 속성에 대해 중간 값이 계산되는 방식을 설정합니다." },
    { name: "translate", desc: "속성과 별개로 개별적으로 변환을 지정할 수 있습니다." },
    { name: "unicode-bidi", desc: "속성과 함께 문서의 양방향 텍스트가 처리되는 방식을 결정합니다." },
    { name: "user-select", desc: "text 텍스트를 선택할 수 있습니다. element 텍스트를 선택할 수 있지만 요소 범위로 제한됩니다." },
    { name: "vertical-align", desc: "inline 또는 table-cell box에서의 수직 정렬을 지정합니다." },
    { name: "visibility", desc: "태그의 가시성을 결정합니다." },
    { name: "white-space", desc: "요소의 공백을 어떻게 처리할 지를 정의합니다." },
    { name: "widows", desc: "페이지, 영역 또는 열의 상단에 표시되어야 하는 블록 컨테이너의 최소 줄 수를 설정합니다." },
    { name: "width", desc: "요소의 너비를 설정 합니다." },
    { name: "will-change", desc: "요소에 예상되는 변화의 종류에 관한 힌트를 브라우저에게 제공하게 합니다." },
    { name: "word-break", desc: "텍스트들을 줄을 바꾸면서 표시해야 할때 텍스트를 어떤식으로 줄바꿈 해줄지 정하는 속성." },
    { name: "word-spacing", desc: "신약과 사이에, 태그와 사이의 거리를 설정합니다." },
    { name: "writing-mode", desc: "텍스트 줄을 가로 또는 세로로 배치할지 여부와 블록이 진행되는 방향을 설정합니다." },
    { name: "z-index", desc: "요소들의 수직 위치를 설정합니다." }
];
const searchList = document.querySelector(".search__list");
const searchInfo = document.querySelector(".search__info .num");
const searchBox = document.querySelector(".search__box input");
const searchDesc =  document.querySelector(".search__desc");


//출력하기
cssProperty.map((element, index) => {
    searchInfo.innerText = index + 1;
    searchList.innerHTML += `<span>${element.name}</span>`;  
});

//입력하기
searchBox.addEventListener("keyup", () => {
    const searchWord = searchBox.value;
    // console.log(searchWord);
    findProperty(searchWord);
});

//속성 찾기
function findProperty(searchData){
    const targetData = cssProperty.find((data) => data.name === searchData)    //csarchWord가 지역변수라 그냥 쓸수 없어서 매개변수로 가져옴

    if(targetData == null){
        searchDesc.textContent = "해당 속성은 존재하지 않습니다.";
        return;     //return은 결과값을 호출하는 의미도 있지만 종료(함수 중단)를 나타내는 의미도 있음
    };
    searchDesc.textContent = targetData.desc;   
};

첫번째로 map( ) 메서드를 사용해 배열속에 있는 객체 데이터를 출력해 속성 목록을 출력합니다.
map( ) 메서드는 forEach문과 비슷한 효과를 갖지만 forEach문과 다르게 배열을 호출할 수 있다는 차이점이 있습니다.

두번째로 이벤트 메서드를 사용해 키 입력 시 입력한 문자열을 변수에 저장합니다. 입력한 값을 호출하는 속성으로 value를 사용할 수 있습니다.
그 후 매개변수로 콜백함수를 써서 다음에 나올 함수를 실행합니다. 매개변수를 사용하는 이유는 문자열이 저장된 변수가 지역변수이기에 외부 함수에 사용하려면 전역변수로 만들던가 매개변수를 활용해야 하기 때문입니다.

세번째로 find( )메서드를 사용해 입력한 데이터와 배열 변수 속 데이터가 일치하는 값을 변수에 저장합니다.
이 변수 값을 활용해 속성 설명을 출력하면 완성이 됩니다.

※ find( ) 메서드

find( ) 메서드는 주어진 판별 함수를 만족하는 첫 요소를 반환하며, 없을 시 undefined를 반환합니다.

find(e => e === 찾을 값)

3. 속성 목록 클릭 시 설명 출력

속성 리스트를 클릭 시에도 해당 속성의 설명이 출력되도록 작업합니다.

소스보기
//출력하기
cssProperty.map((element, index) => {
    searchInfo.innerText = index + 1;
    searchList.innerHTML += `${element.name}`;  
});

//입력하기
searchBox.addEventListener("keyup", () => {
    const searchWord = searchBox.value;
    // console.log(searchWord);
    findProperty(searchWord);
});

---------------------------- 추가된 부분 ---------------------------------
//속성 클릭 시 출력
const searchBtn = document.querySelectorAll(".search__list span"); 
searchBtn.forEach((e) => {
    const btnName = e.innerText;
    e.addEventListener("click", () => {
        findProperty(btnName);
    });
});
---------------------------- 추가된 부분 ---------------------------------

//속성 찾기
function findProperty(searchData){
    const targetData = cssProperty.find((data) => data.name === searchData)    //csarchWord가 지역변수라 그냥 쓸수 없어서 매개변수로 가져옴

    if(targetData == null){
        searchDesc.textContent = "해당 속성은 존재하지 않습니다.";
        return;     //return은 결과값을 호출하는 의미도 있지만 종료(함수 중단)를 나타내는 의미도 있음
    };
    searchDesc.textContent = targetData.desc;   
};

문자열이 저장된 변수를 forEach문과 이벤트 메서드를 사용해 클릭한 부분의 이름 데이터를 find( )메서드가 있는 함수로 콜백 함수를 실행하면 속성 목록을 클릭할 시에 동일한 효과가 발동됩니다.

'이펙트 만들기 > Search 이펙트 만들기' 카테고리의 다른 글

서치 이펙트 05  (3) 2022.09.30
서치 이펙트 03  (6) 2022.08.23
서치 이펙트 02  (3) 2022.08.18
서치 이펙트 01  (3) 2022.08.16

댓글


광고 준비중입니다.