본문 바로가기

아래로 스크롤 해주세요!

My Reference Book

-

제가 배웠던것을 한곳에 정리해보았어요!

HTML

HTML 태그 톺아보기

HTML

자세히보기

CSS

CSS 속성 톺아보기

CSS

자세히보기

JAVASCRIPT

JS 실행문 톺아보기

JAVASCRIPT

자세히보기

최신댓글

JS 응용하기

서치 이펙트_03 만들어보기!

by C0Di 2022. 8. 23.
728x90

Search Effect 03

charAt()으로 첫번째 자리를 서로 비교해 자료를 찾고, hide된 갯수를 전체갯수에서 뺀뒤 찾은 갯수를 구현하는 법을 배워보겠습니다.


완성 예시


HTML

데이터 및 기본 구조를 아래와 같이 제작해줍니다.

HTML 구조 전체보기
<main id="main">
    <div class="search__wrap">
        <span>charAt()를 이용하여 CSS 속성 검색하기</span>
        <h1>CSS 속성 검색하기</h1>
        <div class="search__info">
            <div class="keyword">
                <span>a</span>
                <span>b</span>
                <span>c</span>
                <span>d</span>
                <span>e</span>
                <span>f</span>
                <span>g</span>
                <span>h</span>
                <span>i</span>
                <span>j</span>
                <span>k</span>
                <span>l</span>
                <span>m</span>
                <span>n</span>
                <span>o</span>
                <span>p</span>
                <span>q</span>
                <span>r</span>
                <span>s</span>
                <span>t</span>
                <span>u</span>
                <span>v</span>
                <span>w</span>
                <span>x</span>
                <span>y</span>
                <span>z</span>
            </div>
            <div>총 속성 갯수 : <span class="num">0</span></div>
            <div>찾은 속성 갯수 : <span class="num2">0</span></div>
        </div>
        <div class="search__list">
            
                <ul>
                    <li data-name="accent-color"><strong>accent-color</strong> : 다른 페이지 이동을 설정합니다.</li>
                    <li data-name="align-content"><strong>align-content</strong> : 콘텐츠 아이템의 상하관계 정렬 상태를 설정합니다.</li>
                    <li data-name="animation"><strong>animation</strong> : 애니메이션과 관련된 속성을 일괄적으로 설정합니다.</li>
                    <li data-name="animation-delay"><strong>animation-delay</strong> : 애니메이션 지연 시간을 설정합니다.</li>
                    <li data-name="animation-duration"><strong>animation-duration</strong> : 애니메이션 움직임을 설정합니다.</li>
                    <li data-name="animation-fill-mode"><strong>animation-fill-mode</strong> : 애니메이션이 끝난 후의
                        상태를설정합니다.</li>
                    <li data-name="animation-iteration-count"><strong>animation-iteration-count</strong> : 애니메이션의
                        반복횟수를 설정합니다</li>
                    <li data-name="animation-name"><strong>animation-name</strong> : 애니메이션 keyframe 이동을 설정합니다.</li>
                    <li data-name="animation-play-state"><strong>animation-name</strong> : 애니메이션 keyframe 이동을 설정합니다.
                    </li>
                    <li data-name="animation-timing-function"><strong>animation-timing-function</strong> : 애니메이션움직임의
                        속도를 설정합니다.</li>

                    <li data-name="backdrop-filter"><strong>backdrop-filter</strong> : 배경에 다양한 효과를 줍니다.</li>
                    <li data-name="background"><strong>background</strong> : 백그라운드 속성을 일괄적으로 설정합니다</li>
                    <li data-name="background-attachment"><strong>background-attachment</strong> : 배경 이미지의 고정
                        여부를설정합니다</li>
                    <li data-name="background-blend-mode"><strong>background-blend-mode</strong> : 배경을 혼합했을 때 그래픽효과를
                        설정합니다.</li>
                    <li data-name="background-clip"><strong>background-clip</strong> : 백그라운드 이미지의 위치 기준점을 설정합니다.
                    </li>
                    <li data-name="background-color"><strong>background-color</strong> : 백그라운드 색을 설정합니다.</li>
                    <li data-name="background-image"><strong>background-image</strong> : 백그라운드 이미지 속성을 설정합니다.</li>
                    <li data-name="background-origin"><strong>background-origin</strong> : 백그라운드 이미지의 위치 기준점을 설정하기위한
                        속성입니다.</li>
                    <li data-name="background-position"><strong>background-position</strong> : 백그라운드 이미지의 위치
                        영역을설정합니다.</li>
                    <li data-name="background-position-x"><strong>background-position-x</strong> : 백그라운드 이미지의 x축
                        위치영역을 설정합니다.</li>

                    <li data-name="background-position-y"><strong>background-position-y</strong> : 백그라운드 이미지의 x축
                        위치영역을 설정합니다.</li>
                    <li data-name="background-repeat"><strong>background-repeat</strong> : 백그라운드 이미지 반복 여부를 설정합니다.
                    </li>
                    <li data-name="background-size"><strong>background-size</strong> : 백그라운드 이미지 사이즈를 설정합니다.</li>
                    <li data-name="border"><strong>border</strong> : 테두리 속성을 일괄적으로 설정합니다.</li>
                    <li data-name="border-bottom"><strong>border-bottom</strong> : 아래쪽 속성을 일괄적으로 설정합니다.</li>
                    <li data-name="border-bottom-color"><strong>border-bottom-color</strong> : 테두리 아래쪽 색 속성을 설정합니다.
                    </li>
                    <li data-name="border-bottom-left-radius"><strong>border-left-radius</strong> : 아래 왼쪽 모서리
                        굴곡을설정합니다.</li>
                    <li data-name="border-bottom-right-radius"><strong>border-right-radius</strong> : 아래 오른쪽 모서리
                        굴곡을설정합니다.</li>
                    <li data-name="border-bottom-style"><strong>border-bottom-style</strong> :
                        border-bottom-style은아래쪽 테두리의 스타일 속성을 설정합니다.</li>
                    <li data-name="border-bottom-width"><strong>border-bottom-width</strong> :
                        border-bottom-width은아래쪽 테두리의 두께 속성을 설정합니다.</li>

                    <li data-name="border-collapse"><strong>border-collapse</strong> : border-collapse는 테이블의
                        테두리를겹칠지, 떨어트릴지를 설정합니다</li>
                    <li data-name="border-left"><strong>border-left</strong> : border-left는 요소의 왼쪽 테두리의 속성을
                        일괄적으로설정합니다.</li>
                    <li data-name="border-left-color"><strong>border-left-color</strong> : border-left-color는 요소의
                        왼쪽테두리의 색상을 설정합니다.</li>
                    <li data-name="border-left-style"><strong>border-left-style</strong> : border-left-style은 요소의
                        왼쪽테두리의 스타일 속성을 설정합니다.</li>
                    <li data-name="border-left-width"><strong>border-left-width</strong> : border-left-width는 요소의
                        왼쪽테두리의 두께를 설정합니다.</li>
                    <li data-name="border-radius"><strong>border-radius</strong> : border-radius는 요소의 테두리 굴곡을 설정합니다.
                    </li>
                    <li data-name="border-right"><strong>border-right</strong> :border-right은 요소의 오른쪽 테두리 속성을
                        일괄적으로설정합니다.</li>
                    <li data-name="border-right-color"><strong>border-right-color</strong> : border-right-color는
                        요소의오른쪽 테두리의 색상을 설정합니다.</li>
                    <li data-name="border-right-style"><strong>border-right-style</strong> : border-right-style은
                        요소의오른쪽 테두리의 스타일 속성을 설정합니다.</li>
                    <li data-name="border-right-width"><strong>border-right-width</strong> : border-right-width는
                        요소의오른쪽 테두리의 두께를 설정합니다.</li>

                    <li data-name="border-spacing"><strong>border-spacing</strong>border-spacing은 테이블의 테두리 사이의 간격을
                        설정합니다.</li>
                    <li data-name="border-style"><strong>border-style</strong>border-style은 요소의 테두리 스타일 속성을 설정합니다.
                    </li>
                    <li data-name="border-top"><strong>border-top</strong>border-top은 요소의 위쪽 테두리 속성을 일괄적으로 설정합니다.
                    </li>
                    <li data-name="border-top-color"><strong>border-top-color</strong>border-top-color는 요소의 위쪽 테두리의
                        색상을 설정합니다.</li>
                    <li data-name="border-top-left-radius">
                        <strong>border-top-left-radius</strong>border-top-left-radius는 요소의 위쪽 왼쪽 모서리의 굴곡을 설정합니다.
                    </li>
                    <li data-name="border-top-right-radius">
                        <strong>border-top-right-radius</strong>border-top-right-radius는 요소의 위쪽 오른쪽 모서리의 굴곡을 설정합니다.
                    </li>
                    <li data-name="border-top-style"><strong>border-top-style</strong>border-top-style은 요소의 위쪽 테두리의
                        스타일 속성을 설정합니다.</li>
                    <li data-name="border-top-width"><strong>border-top-width</strong>border-top-width는 요소의 위쪽 테두리의
                        두께를 설정합니다.</li>
                    <li data-name="border-width"><strong>border-width</strong>border-width는 요소의 테두리의 두께를 설정합니다.</li>
                    <li data-name="bottom"><strong>bottom</strong>bottom은 요소의 아래쪽에서의 위치를 설정합니다.</li>

                    <li data-name="box-sizing"><strong>box-sizing</strong>box-sizing은 브라우저가 요소의 크기를 어떻게 계산할지를 설정합니다.
                    </li>
                    <li data-name="color"><strong>color</strong>color는 텍스트의 색상을 설정합니다.</li>
                    <li data-name="content"><strong>content</strong>content는 가상 요소의 내용물을 표시합니다.</li>
                    <li data-name="display"><strong>display</strong>display는 요소의 표시 유형을 설정합니다.</li>
                    <li data-name="flex-wrap"><strong>flex-wrap</strong>flex-wrap은 flex의 겹칩 방법을 설정합니다.
                        wrap/nowrap/wrap-reverse</li>
                    <li data-name="float"><strong>float</strong>float는 float의 겹침을 설정합니다.</li>
                    <li data-name="font-family"><strong>font-family</strong>font-family는 텍스트의 폰트를 설정합니다.</li>
                    <li data-name="font-size"><strong>font-size</strong>font-size는 텍스트의 크기를 설정합니다.</li>
                    <li data-name="font-style"><strong>font-style</strong>font-style은 텍스트의 이탤릭체 스타일을 설정합니다.</li>
                    <li data-name="font-weight"><strong>font-weight</strong>font-weight는 텍스트의 두께를 설정합니다. 숫자가 높을 수록
                        두꺼워집니다.</li>

                    <li data-name="grid-area"><strong>grid-area</strong>grid-area는 요소에 grid구역을 지정합니다.</li>
                    <li data-name="grid-template-areas"><strong>grid-template-areas</strong>grid-template-areas는
                        grid의 열과 행을 나타낼 구역을 설정합니다.</li>
                    <li data-name="grid-template-columns">
                        <strong>grid-template-columns</strong>grid-template-columns는 grid의 각 열의 너비를 설정합니다.</li>
                    <li data-name="grid-template-rows"><strong>grid-template-rows</strong>grid-template-rows는 grid의
                        각 행의 높이를 설정합니다.</li>
                    <li data-name="height"><strong>height</strong>height는 요소의 높이를 설정합니다.</li>
                    <li data-name="justify-content"><strong>justify-content</strong>justify-content는 flex나 grid의 항목이
                        배치되는 방식을 설정합니다.</li>
                    <li data-name="left"><strong>left</strong>left는 가상요소의 왼쪽에서의 위치를 설정합니다.</li>
                    <li data-name="list-style"><strong>list-style</strong>list-style은 리스트의 글머리 기호/숫자 스타일을 설정합니다.
                    </li>
                    <li data-name="margin"><strong>margin</strong>margin은 요소의 바깥쪽 여백을 설정합니다</li>
                    <li data-name="margin-bottom"><strong>margin-bottom</strong>margin-bottom은 요소의 바깥 아래쪽 여백을 설정합니다.
                    </li>

                    <li data-name="margin-left"><strong>margin-left</strong>margin-left는 요소의 바깥 왼쪽 여백을 설정합니다.</li>
                    <li data-name="margin-right"><strong>margin-right</strong>margin-right는 요소의 바깥 오른쪽 여백을 설정합니다.
                    </li>
                    <li data-name="margin-top"><strong>margin-top</strong>margin-top은 요소의 바깥 위쪽 여백을 설정합니다.</li>
                    <li data-name="max-height"><strong>max-height</strong>max-height은 요소의 최대 높이를 설정합니다.</li>
                    <li data-name="max-width"><strong>max-width</strong>max-width는 요소의 최대 너비를 설정합니다.</li>
                    <li data-name="min-height"><strong>min-height</strong>min-height은 요소의 최소 높이를 설정합니다.</li>
                    <li data-name="min-width"><strong>min-width</strong>min-width는 요소의 최소 너비를 설정합니다.</li>
                    <li data-name="opacity"><strong>opacity</strong>opacity는 요소의 투명도를 설정합니다.</li>
                    <li data-name="overflow"><strong>overflow</strong>overflow는 컨테이너에 비해 너무 큰 콘텐츠를 요소가 처리하는 방법을 설정합니다.</li>
                    <li data-name="padding	"><strong>padding</strong>padding은 요소의 안쪽 여백을 설정합니다.</li>

                    <li data-name="padding-bottom"><strong>padding-bottom</strong>padding-bottom은 요소의 안쪽 아래 여백을 설정합니다</li>
                    <li data-name="padding-left"><strong>padding-left</strong>padding-left는 요소의 안쪽 왼쪽 여백을 설정합니다.
                    </li>
                    <li data-name="padding-right"><strong>padding-right</strong>padding-right는 요소의 안쪽 오른쪽 여백을 설정합니다.
                    </li>
                    <li data-name="padding-top"><strong>padding-top</strong>padding-top은 요소의 안쪽 위 여백을 설정합니다</li>
                    <li data-name="right"><strong>right</strong>right는 가상요소의 오른쪽에서의 위치를 설정합니다.</li>
                    <li data-name="text-align"><strong>text-align</strong>text-align은 텍스트의 정렬 방식을 설정합니다.</li>
                    <li data-name="text-decoration"><strong>text-decoration</strong>text-decoration은 텍스트의 장식을 설정합니다.
                    </li>
                    <li data-name="top"><strong>top</strong>top은 가상요소의 위쪽에서의 위치를 설정합니다.</li>
                    <li data-name="transition"><strong>transition</strong>transition은 css의 변환 시간을 설정합니다.</li>
                    <li data-name="width"><strong>width</strong>width는 요소의 너비를 설정합니다.</li>

                    <li data-name="word-break"><strong>word-break</strong>word-break는 텍스트의 단어 구분을 설정합니다. 단어 단위로 끊거나 글자 단위로 끊도록 제어할 수 있습니다.</li>
                    <li data-name="z-index"><strong>z-index</strong>z-index는 가상요소의 z축에서의 위치를 설정합니다.</li>

                    <li data-name="z-index"><strong>z-index</strong>요소의 위치가 겹칠 경우 순서를 정의합니다.</li>
                    <li data-name="writing-mode"><strong>writing-mode</strong>텍스트 줄을 가로 또는 세로로 배치할지 여부와 블록이 진행되는 방향을 설정합니다.</li>
                    <li data-name="word-spacing"><strong>word-spacing</strong>단어 사이의 간격을 정의합니다.</li>
                    <li data-name="word-break"><strong>border</strong>텍스트의 단어 구분을 설정합니다.</li>
                    <li data-name="will-change"><strong>border</strong>요소에 예상되는 변화의 종류에 관한 힌트를 브라우저에 제공케 합니다.</li>
                    <li data-name="width"><strong>width</strong>요소의 너비를 설정합니다.</li>
                    <li data-name="widows"><strong>widows</strong>페이지 , 영역 또는 열의 상단 에 표시되어야 하는 블록 컨테이너의 최소 줄 수를 설정합니다 .</li>
                    <li data-name="white-space"><strong>white-space</strong>줄바꿈, 공백, 줄 속성을 설정합니다.</li>
                    <li data-name="visibility"><strong>visibility</strong>요소를 보이지 않게 정의합니다.</li>
                    <li data-name="vertical-align"><strong>vertical-align</strong>텍스트의 상하 정렬 방식을 설정합니다.</li>

                    <li data-name="user-select"><strong>user-select</strong>요소의 텍스트를 선택할 지 정의합니다.</li>
                    <li data-name="unicode-bidi"><strong>unicode-bidi</strong>글자의 방향 속성을 설정합니다.</li>
                    <li data-name="translate"><strong>translate</strong>transform에 속해있는 translate는 transform과 같이 사용할 수 있습니다.</li>
                    <li data-name="transition-timing-function"><strong>transition-timing-function</strong>요소의 움직임 기능을 정의합니다.</li>
                    <li data-name="transition-property"><strong>transition-property</strong>transition의 적용 여부를 정의합니다.</li>
                    <li data-name="transition-duration"><strong>transition-duration</strong>화면 전환이 종료되기까지 걸리는 시간을 지정합니다.</li>
                    <li data-name="transition-delay"><strong>transition-delay</strong>속성이 transition 요청을 받은 이후 실제로 transition하기까지 기다려야하는 시간의 양을 지정합니다.</li>
                    <li data-name="transition"><strong>transition</strong>애니메이션 속도를 조절합니다.</li>
                    <li data-name="transform-style"><strong>transform-style</strong>요소의 움직임 스타일을 정의합니다.</li>
                    <li data-name="transform-origin"><strong>transform-origin</strong>요소의 움직임 방향 및 기준점을 설정합니다. transform 속성과 같이 설정하며 기준점에 따라 애니메이션의 방향을 설정 할 수
                        있습니다.</li>
                    <li data-name="transform-box"><strong>transform-box</strong>박스의 변형효과를 설정합니다.</li>
                    <li data-name="transform"><strong>transform</strong>컨텐츠 요소를 이동(translate), 회전(rotate), 확대(scale), 기울기(skew) 등의 효과를 줄 수 있습니다.
                        애니메이션 작업시 가장 많이 쓰는 요소입니다.</li>
                    <li data-name="touch-action"><strong>touch-action</strong>터치스크린 사용자가 요소의 영역을 조작하는 방법을 설정합니다.</li>
                    <li data-name="top"><strong>top</strong>해당 태그 위치를 위측 기준으로 어디에 위치시킬지 지정합니다.</li>
                    <li data-name="text-underline-position"><strong>text-underline-position</strong>속성값을 사용하여 설정되는 밑줄의 위치를 ​​지정합니다.</li>
                    <li data-name="text-transform"><strong>text-transform</strong>텍스트를 대문자나 소문자로 변경합니다.</li>
                    <li data-name="text-size-adjust"><strong>text-size-adjust</strong>일부 스마트폰 및 태블릿에서 사용되는 텍스트 인플레이션 알고리즘을 제어합니다.</li>
                    <li data-name="text-shadow"><strong>text-shadow</strong>텍스트에 그림자를 설정합니다.</li>
                    <li data-name="text-rendering"><strong>text-rendering</strong>텍스트를 렌더링할 때 최적화할 대상에 대한 정보를 렌더링 엔진에 제공합니다.</li>
                    <li data-name="text-overflow"><strong>text-overflow</strong>문자열 영역 속성을 설정합니다.</li>

                    <li data-name="text-orientation"><strong>text-orientation</strong>줄에서 텍스트 문자의 방향을 설정합니다</li>
                    <li data-name="text-justify"><strong>text-justify</strong>텍스트의 간격을 정의합니다.</li>
                    <li data-name="text-indent"><strong>text-indent</strong>설명</li>
                    <li data-name="text-emphasis-style"><strong>text-emphasis-style</strong>강조 표시의 스타일을 설정합니다.</li>
                    <li data-name="text-emphasis-position"><strong>text-emphasis-position</strong>강조 표시의 위치를 설정합니다.</li>
                    <li data-name="text-emphasis-color"><strong>text-emphasis-color</strong>강조 표시의 색상을 설정합니다.</li>
                    <li data-name="text-emphasis"><strong>text-emphasis</strong>텍스트에 강조 표시를 적용합니다.</li>
                    <li data-name="text-decoration-style"><strong>text-decoration-style</strong>글자 스타일을 정의합니다.</li>
                    <li data-name="text-decoration-skip"><strong>text-decoration-skip</strong>요소에 영향을 미치는 텍스트 장식이 건너뛰어야 하는 요소 콘텐츠의 부분을 설정합니다.</li>
                    <li data-name="text-decoration-line"><strong>text-decoration-line</strong>글자 라인 스타일을 설정합니다.</li>

                    <li data-name="text-decoration-color"><strong>text-decoration-color</strong>텍스트 장식의 색상을 설정합니다.</li>
                    <li data-name="text-decoration"><strong>text-decoration</strong>텍스트에 장식용 선을 추가합니다.</li>
                    <li data-name="text-combine-upright"><strong>text-combine-upright</strong>문자 조합을 단일 문자 공간으로 설정합니다.</li>
                    <li data-name="text-align"><strong>text-align</strong>텍스트의 정렬 방향을 의미합니다.</li>
                    <li data-name="table-layoute"><strong>table-layoute</strong>표의 레이아웃 크기를 정의합니다.</li>
                    <li data-name="tab-size"><strong>tab-size</strong>탭 문자(U+0009)의 너비를 조절합니다.</li>
                    <li data-name="shape-outside"><strong>shape-outside</strong>인접한 인라인 콘텐츠가 둘러싸야 하는 사각형이 아닐 수 있는 모양을 정의합니다.</li>
                    <li data-name="shape-margin"><strong>shape-margin</strong>모양의 여백을 설정합니다.</li>
                    <li data-name="shape-image-threshold"><strong>shape-image-threshold</strong>이미지를 값으로 사용하여 모양을 추출하는 데 사용되는 알파 채널 임계값을 설정합니다.</li>
                    <li data-name="scrollbar-width"><strong>scrollbar-width</strong>작성자가 표시될 때 요소의 스크롤 막대의 최대 두께를 설정할 수 있습니다.</li>

                    <li data-name="scrollbar-color"><strong>scrollbar-color</strong>스크롤바 트랙과 썸의 색상을 설정합니다.</li>
                    <li data-name="scroll-snap-type"><strong>scroll-snap-type</strong>스냅 포인트가 있는 경우 스크롤 컨테이너에 스냅 포인트가 얼마나 엄격하게 적용되는지 설정합니다.</li>
                    <li data-name="scroll-snap-stop"><strong>scroll-snap-stop</strong>스크롤 컨테이너가 가능한 스냅 위치를 "통과"할 수 있는지 여부를 정의합니다.</li>
                    <li data-name="scroll-snap-points-y"><strong>scroll-snap-points-y</strong>스냅 포인트가 적용되는 스크롤 컨테이너의 내용 내에서 스냅 포인트의 수직 위치를 정의합니다.</li>
                    <li data-name="scroll-snap-points-x"><strong>scroll-snap-points-x</strong>스냅 포인트가 적용되는 스크롤 컨테이너의 내용 내에서 스냅 포인트의 수평 위치를 정의합니다.</li>
                    <li data-name="scroll-snap-destination"><strong>scroll-snap-destination</strong>요소 스냅 포인트가 정렬되는 스크롤 컨테이너의 시각적 뷰포트 내에서 x 및 y 좌표의 위치를 ​​정의합니다.</li>
                    <li data-name="scroll-snap-coordinate"><strong>scroll-snap-coordinate</strong>물리보다는 논리상 방향과 차원 맵핑을 통해 레이아웃을 제어하는 능력을 제공하는 속성 및 값을 정의하는 CSS 모듈입니다.</li>
                    <li data-name="scroll-snap-align"><strong>scroll-snap-align</strong>상자의 스냅 위치를 해당 스냅 컨테이너의 스냅포트(정렬 컨테이너) 내에서 해당 스냅 영역(정렬 주제)의 정렬로 지정합니다.</li>
                    <li data-name="scroll-padding-top"><strong>scroll-padding-top</strong>스크롤포트의 최적 보기 영역 위쪽에 대한 오프셋을 정의합니다.</li>
                    <li data-name="scroll-padding-right"><strong>scroll-padding-right</strong>스크롤포트의 최적 보기 영역 오론쪽에 대한 오프셋을 정의합니다.</li>

                    <li data-name="scroll-padding-left"><strong>scroll-padding-left</strong>스크롤포트의 최적 보기 영역 왼쪽에 대한 오프셋을 정의합니다.</li>
                    <li data-name="scroll-padding-inline-start"><strong>scroll-padding-inline-start</strong>인라인 차원에서 시작 가장자리에 대한 오프셋을 정의합니다.</li>
                    <li data-name="scroll-padding-inline-end"><strong>scroll-padding-inline-end</strong>인라인 차원에서 끝 가장자리에 대한 오프셋을 정의합니다.</li>
                    <li data-name="scroll-padding-inline"><strong>scroll-padding-inline</strong>인라인 차원에서 요소의 스크롤 패딩을 설정합니다.</li>
                    <li data-name="scroll-padding-bottom"><strong>scroll-padding-bottom</strong>하단에 대한 오프셋을 정의합니다.</li>
                    <li data-name="scroll-padding-block-start"><strong>scroll-padding-block-start</strong>블록 차원에서 시작 가장자리에 대한 오프셋을 정의합니다.</li>
                    <li data-name="scroll-padding-block-end"><strong>scroll-padding-block-end</strong>블록 차원에서 끝 가장자리에 대한 오프셋을 정의합니다.</li>
                    <li data-name="scroll-padding-block"><strong>scroll-padding-block</strong>블록 차원에서 요소의 스크롤 패딩을 설정합니다.</li>
                    <li data-name="scroll-padding"><strong>scroll-padding</strong>요소의 패딩에 대한 속성 과 마찬가지로 요소의 모든 면에 스크롤 패딩을 한 번에 설정합니다.</li>
                    <li data-name="border"><strong>border</strong>설명</li>

                    <li data-name="scroll-margin-top"><strong>scroll-margin-top</strong>상자를 snapport에 맞추는 데 사용되는 스크롤 스냅 영역의 위쪽 여백을 정의합니다.</li>
                    <li data-name="scroll-margin-right"><strong>scroll-margin-right</strong>상자를 snapport에 맞추는 데 사용되는 스크롤 스냅 영역의 오른쪽 여백을 정의합니다.</li>
                    <li data-name="scroll-margin-left"><strong>scroll-margin-left</strong>상자를 snapport에 맞추는 데 사용되는 스크롤 스냅 영역의 왼쪽 여백을 정의합니다.</li>
                    <li data-name="scroll-margin-inline-start"><strong>scroll-margin-inline-start</strong>이 상자를 snapport에 맞추는 데 사용되는 인라인 차원의 시작 부분에서 스크롤 스냅 영역의 여백을 정의합니다.</li>
                    <li data-name="scroll-margin-inline-end"><strong>scroll-margin-inline-end</strong>상자를 snapport에 맞추는 데 사용되는 인라인 차원의 끝에서 스크롤 스냅 영역의 여백을 정의합니다.</li>
                    <li data-name="scroll-margin-inline"><strong>scroll-margin-inline</strong>인라인 차원에서 요소의 스크롤 여백을 설정합니다.</li>
                    <li data-name="scroll-margin-bottom"><strong>scroll-margin-bottom</strong>상자를 snapport에 맞추는 데 사용되는 스크롤 스냅 영역의 아래쪽 여백을 정의합니다.</li>
                    <li data-name="scroll-margin-block-start"><strong>scroll-margin-block-start</strong>블록 차원에서 요소의 스크롤 여백을 설정합니다.</li>
                    <li data-name="scroll-padding-block-end"><strong>scroll-padding-block-end</strong>블록 차원에서 끝 가장자리에 대한 오프셋을 정의합니다.</li>
                    <li data-name="scroll-padding-block"><strong>scroll-padding-block</strong>블록 차원에서 요소의 스크롤 패딩을 설정합니다.</li>
                    
                    <li data-name="scroll-padding"><strong>scroll-padding</strong>요소의 패딩에 대한 속성 과 마찬가지로 요소의 모든 면에 스크롤 패딩을 한 번에 설정합니다.</li>
                    <li data-name="scroll-margin-top"><strong>scroll-margin-top</strong>상자를 snapport에 맞추는 데 사용되는 스크롤 스냅 영역의 위쪽 여백을 정의합니다.</li>
                    <li data-name="scroll-margin-right"><strong>scroll-margin-right</strong>상자를 snapport에 맞추는 데 사용되는 스크롤 스냅 영역의 오른쪽 여백을 정의합니다.</li>
                    <li data-name="scroll-margin-left"><strong>scroll-margin-left</strong>상자를 snapport에 맞추는 데 사용되는 스크롤 스냅 영역의 왼쪽 여백을 정의합니다.</li>
                    <li data-name="scroll-margin-inline-start"><strong>scroll-margin-inline-start</strong>이 상자를 snapport에 맞추는 데 사용되는 인라인 차원의 시작 부분에서 스크롤 스냅 영역의 여백을 정의합니다.</li>
                    <li data-name="scroll-margin-inline-end"><strong>scroll-margin-inline-end</strong>상자를 snapport에 맞추는 데 사용되는 인라인 차원의 끝에서 스크롤 스냅 영역의 여백을 정의합니다.</li>
                    <li data-name="scroll-margin-inline"><strong>scroll-margin-inline</strong>인라인 차원에서 요소의 스크롤 여백을 설정합니다.</li>
                    <li data-name="scroll-margin-bottom"><strong>scroll-margin-bottom</strong>상자를 snapport에 맞추는 데 사용되는 스크롤 스냅 영역의 아래쪽 여백을 정의합니다.</li>
                    <li data-name="scroll-margin-block-start"><strong>scroll-margin-block-start</strong>블록 차원에서 요소의 스크롤 여백을 설정합니다.</li>
                    <li data-name="scroll-margin-block-end"><strong>scroll-margin-block-end</strong>상자를 스냅포트에 맞추는 데 사용되는 블록 치수 끝에서 스크롤 스냅 영역의 여백을 정의합니다.</li>
                    
                    <li data-name="scroll-margin-block"><strong>scroll-margin-block</strong>블록 차원에서 요소의 스크롤 여백을 설정합니다.</li>
                    <li data-name="scroll-margin"><strong>scroll-margin</strong>요소의 모든 스크롤 여백을 한 번에 설정하여 속성이 요소의 여백에 대해 수행하는 것과 유사한 값을 할당합니다.</li>
                    <li data-name="scroll-behavior"><strong>scroll-behavior</strong>크롤이 탐색 또는 CSSOM 스크롤 API에 의해 트리거될 때 스크롤 상자의 동작을 설정합니다.</li>
                    <li data-name="scale"><strong>scale</strong>2D 평면에서 요소의 크기를 조정하는 변환을 정의합니다.</li>
                    <li data-name="ruby-position"><strong>ruby-position</strong>기본 요소를 기준으로 루비 요소의 위치를 ​​정의합니다.</li>
                    <li data-name="ruby-align"><strong>ruby-align</strong>베이스에 대한 다양한 루비 요소의 분포를 정의합니다.</li>
                    <li data-name="row-gap (grid-row-gap)"><strong>row-gap (grid-row-gap)</strong>요소 행 사이 의 간격( 거터 ) 크기를 설정합니다.</li>
                    <li data-name="rotate"><strong>rotate</strong>2D 평면의 고정점을 중심으로 요소를 변형하지 않고 회전하는 변형을 정의합니다.</li>
                    <li data-name="right"><strong>right</strong>해당 태그 위치를 우측 기준으로 어디에 위치시킬지 지정합니다.</li>
                    <li data-name="resize"><strong>resize</strong>요소의 크기를 조정할 수 있는지 여부와 가능한 경우 방향을 설정합니다.</li>

                    <li data-name="quotes"><strong>quotes</strong>문단 안에서 사용하는 인용문입니다. 기본 모양은 큰따옴표로 감싸는 것입니다.</li>
                    <li data-name="print-color-adjust"><strong>print-color-adjust</strong>출력 장치에서 요소의 모양을 최적화하기 위해 사용자 에이전트 가 수행할 수 있는 작업을 설정합니다.</li>
                    <li data-name="position"><strong>position</strong>문서 상에 요소를 배치하는 방법을 지정합니다.</li>
                    <li data-name="pointer-events"><strong>pointer-events</strong>HTML 요소들의 마우스/터치 이벤트들(CSS hover/active, JS click/tap, 커서 드래그등)의 응답을 조정할 수 있는 속성이다.</li>
                    <li data-name="place-self"><strong>place-self</strong>rid 또는 Flexbox 와 같은 관련 레이아웃 시스템에서 블록 및 인라인 방향(예: 및 속성)으로 개별 항목을 한 번에 정렬할 수
                        있습니다</li>
                    <li data-name="lace-items"><strong>lace-items</strong>Grid 또는 Flexbox 와 같은 관련 레이아웃 시스템에서 블록 및 인라인 방향(예: 및 속성)을 따라 항목을 한 번에 정렬할 수
                        있습니다</li>
                    <li data-name="place-content<"><strong>place-content<</strong>Grid 또는 Flexbox 와 같은 관련 레이아웃 시스템에서 블록 및 인라인 방향(예: 및 속성)을 따라 콘텐츠를 한 번에 정렬할 수
                        있습니다.</li>
                    <li data-name="perspective-origin"><strong>perspective-origin</strong>3D를 표현할 때 원근점의 방향을 정의합니다.</li>
                    <li data-name="perspective"><strong>perspective</strong>3D를 표현할 때 원근점을 정의합니다.</li>
                    <li data-name="page-break-inside"><strong>page-break-inside</strong>현재 요소 내부page-break-inside 의 페이지 나누기를 조정합니다.</li>
                    <li data-name="page-break-before"><strong>page-break-before</strong>현재 요소 앞의 페이지 나누기 를 조정 합니다.</li>
                    <li data-name="page-break-after"><strong>page-break-after</strong>재 요소 뒤의 페이지 나누기 를 조정 합니다.</li>
                    <li data-name="padding-top"><strong>padding-top</strong>요소의 위쪽에 안쪽 여백 영역을 설정합니다.</li>
                    <li data-name="padding-right"><strong>padding-right</strong>요소의 왼쪽에 안쪽 여백 영역을 설정합니다</li>
                    <li data-name="padding-left"><strong>padding-left</strong>요소의 안쪽 왼쪽 여백을 설정합니다.</li>
                    <li data-name="padding-inline-start"><strong>padding-inline-start</strong>요소의 쓰기 모드, 방향성 및 텍스트 방향에 따라 물리적 패딩에 매핑되는 요소의 논리적 인라인 시작 패딩을 정의합니다.</li>
                    <li data-name="padding-inline-end"><strong>padding-inline-end</strong>요소의 쓰기 모드, 방향성 및 텍스트 방향에 따라 물리적 패딩에 매핑되는 요소의 논리적 인라인 끝 패딩을 정의합니다.</li>

                    <li data-name="padding-bottom"><strong>padding-bottom</strong>요소의 아래쪽에 안쪽 여백 영역을 설정합니다.</li>
                    <li data-name="padding-block-start"><strong>padding-block-start</strong>요소의 쓰기 모드, 방향 및 텍스트 방향에 따라 물리적 패딩에 매핑되는 요소의 논리적 블록 시작 패딩을 정의합니다.</li>
                    <li data-name="padding-block-end"><strong>padding-block-end</strong>요소의 쓰기 모드, 방향 및 텍스트 방향에 따라 물리적 패딩에 매핑되는 요소의 논리적 블록 끝 패딩을 정의합니다.</li>
                    <li data-name="padding"><strong>padding</strong>요소의 안쪽 여백 영역을 설정합니다.</li>
                    <li data-name="overscroll-behavior-y"><strong>overscroll-behavior-y</strong>스크롤 영역의 수직 경계에 도달할 때 브라우저의 동작을 설정합니다.</li>
                    <li data-name="overscroll-behavior-x"><strong>overscroll-behavior-x</strong>크롤 영역의 수평 경계에 도달할 때 브라우저의 동작을 설정합니다.</li>
                    <li data-name="overscroll-behavior-inline"><strong>overscroll-behavior-inline</strong>스크롤 영역의 인라인 방향 경계에 도달할 때 브라우저의 동작을 설정합니다.</li>
                    <li data-name="overscroll-behavior-block"><strong>overscroll-behavior-block</strong>스크롤 영역의 블록 방향 경계에 도달할 때 브라우저의 동작을 설정합니다.</li>
                    <li data-name="overscroll-behavior"><strong>overscroll-behavior</strong>스크롤 영역의 경계에 도달할 때 브라우저가 수행하는 작업을 설정합니다.</li>
                    <li data-name="overflow-y"><strong>overflow-y</strong>Y축을 기준으로 지정한 영역에 요소들이 벗어났을 때 속성을 설정합니다.</li>

                    <li data-name="overflow-x"><strong>overflow-x</strong>X축을 기준으로 지정한 영역에 요소들이 벗어났을 때 속성을 설정합니다.</li>
                    <li data-name="overflow-wrap"><strong>overflow-wrap</strong>어떤 문자가 내용 칸 밖으로 넘치지 않게 브라우저가 단어 마디 안에 줄을 바꿔야 할 것인지 아닌지를 정할 때 사용됩니다.</li>
                    <li data-name="overflow-inline"><strong>overflow-inline</strong>콘텐츠가 상자의 인라인 시작 및 끝 가장자리를 오버플로할 때 표시되는 내용을 설정합니다.</li>
                    <li data-name="overflow-clip-margin"><strong>overflow-clip-margin</strong>클리핑되기 전에 요소가 경계를 벗어나 얼마나 멀리 칠할 수 있는지를 결정합니다.</li>
                    <li data-name="overflow-block"><strong>overflow-block</strong>콘텐츠가 상자의 블록 시작 및 블록 끝 가장자리를 오버플로할 때 표시되는 내용을 설정합니다.</li>
                    <li data-name="overflow-anchor"><strong>overflow-anchor</strong>콘텐츠 이동을 최소화하기 위해 스크롤 위치를 조정하는 브라우저의 스크롤 고정 동작을 옵트아웃하는 방법을 제공합니다.</li>
                    <li data-name="overflow"><strong>overflow</strong>요소의 콘텐츠가 너무 커서 요소의 블록 서식 맥락에 맞출 수 없을 때의 처리법을 지정합니다.</li>
                    <li data-name="outline-width"><strong>outline-width</strong>요소 외곽선의 너비를 설정합니다.</li>
                    <li data-name="outline-style"><strong>outline-style</strong>요소 외곽선의 스타일을 설정합니다.</li>
                    <li data-name="outline-offset"><strong>outline-offset</strong>아웃라인의 간격을 정의합니다.</li>

                    <li data-name="outline-color"><strong>outline-color</strong>외곽선의 색상을 설정합니다.</li>
                    <li data-name="outline"><strong>outline</strong>모든 외곽선 속성을 한꺼번에 지정합니다.</li>
                    <li data-name="orphans"><strong>orphans</strong>페이지 , 영역 또는 열의 맨 아래 에 표시되어야 하는 블록 컨테이너의 최소 줄 수를 설정합니다.</li>
                    <li data-name="order"><strong>order</strong>flex 콘텐츠의 순서를 정의합니다.</li>
                    <li data-name="opacity"><strong>opacity</strong>요소의 불투명도를 설정합니다. 불투명도는 요소 뒤쪽 콘텐츠가 숨겨지는 정도로, 투명도의 반대입니다.</li>
                    
                    <!-- 복사용 -->
                    <li data-name="border"><strong>border</strong>설명</li>
                </ul>
         
        </div>
    </div>
    </div>
</main>

CSS

하단의 CSS 코드를 통해 간단하게 위치를 정해줍니다!

CSS 구조 전체보기

    *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: 'NexonLv1Gothic';
        color: var(--htmlColor);
    }

    *, *:before, *:after{
        box-sizing: border-box;
    }

    a {
        color: var(--htmlColor);
        text-decoration: none;
    }

    li{
        list-style: none;
    }

    :root {
        --htmlColor : #223547;
        --cssColor : #302247;
        --javascriptColor : #472231;
    }

    #header {
        display: flex;
    }
    #header h1 {
        margin: 10px;
    }
    #header nav {
        margin: 10px;
    }
    #header nav ul {}
    #header nav li {
        position: relative;
        display: inline;
    }
    #header nav li a{
        width: 30px;
        height: 30px;
        border: 1px solid var(--htmlColor);
        border-radius: 50%;
        display: inline-block;
        text-align: center;
        line-height: 30px;
        font-family: 'NexonLv1Gothic';
    }

    #header nav li.active a{
        background-color: var(--htmlColor);
        color: #fff;
    }

    #header nav li .sub {
        position: absolute;
        left: 0;
        top: 35px;
        width: 400px;
    }

    #header nav li .sub li a {
        width: auto;
        background-color: transparent;
        color: var(--htmlColor);
        border: 0;
        text-align: left;
        line-height: 1.2;
    }

    #header nav li .sub li.active a {
        text-decoration: underline;
    }

    /* main */
    #main{
        margin: 50px 10px;
    }
    .search__wrap{
        max-width: 1400px;
        margin: 0 auto;
        border: 2px solid var(--htmlColor);
        border-radius: 20px;
        background-color: #f1f3f6;
        padding: 30px;
        text-align: center;
    }

    .search__info .type{
        text-align: center;
        margin-bottom: 10px;
    }

    .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;
        white-space: nowrap;
    }

    .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__info{
        text-align: right;
        margin-bottom: 20px;
        padding-bottom: 10px;
        border-bottom: 2px solid var(--htmlColor);
    }

    .search__list {}

    .search__list li {
        text-align: left;
        line-height: 1.7;
    }

    .search__list li.hide {
        display: none;
    }

    .search__list li.show {
        display: block;
    }

    @media (max-width: 600px){
        .search__wrap{
            padding: 20px;
        }

        .search__wrap>span{
            font-size: 16px;
            margin-bottom: 10px;
        }
        .search__wrap>h1{
            font-size: 44px;
        }
        .search__box input {
            font-size: 16px;
            padding: 12px 30px;
        }
    }


    /* footer */

    #footer {
        text-align: center;
    }

    #footer a {
        color: #000;
        font-family: 'NexonLv1Gothic';
        padding-bottom: 50px;
    }

    #footer a:hover {
        text-decoration: underline;
    }
    

Javascript : charAt()

만약(if) searchWord(.search__info:알파벳)의 첫번째 글자가 cssName(strong 태그)의 첫번째 글자와 같다면 hide 클래스를 넣어 숨길지 말지를 결정합니다.

데이터 서치용 스크립트 만들기

1. 전체 갯수는 searchList의 .length(배열의 갯수)를 이용해 총 갯수를 파악합니다.
2. forEach를 통해 searchInfo(.search__info .num)의 el(요소)를 활용합니다.
3. el(요소)에 클릭이 발생되면 searchWord라는 변수에 el(요소).innerText(사용자가 선택한 알파벳) 값을 넣고.
4. forEach를 다시 사용해 searchList의 el(요소)를 활용합니다
5. cssName이라는 변수를 만들고 그 안에는 el(요소)의 querySelector에 "strong" 태그를 넣고
6. 만약(if) searchWord(.search__info:알파벳)의 첫번째 글자가 cssName(strong 태그)의 첫번째 글자와 같다면
7. 같으면 숨긴걸 hide 클래스를 지움(remove) 안같으면 hide 클래스를 추가(add)

::번외
8. hidingNum 이라는 변수를 만들고 그 안에 모든 .search__list ul li에 클래스에 hide가 있는것을 선택
9. searchInfo2(.search__info .num2)에 searchList.length(전체갯수) - hidingNum.length(숨긴갯수)를 넣어서 알파벳을 선택한 갯수를 구합니다.

//선택자
const searchKeyword = document.querySelectorAll(".search__info .keyword span"); //알파벳
const searchList = document.querySelectorAll(".search__list ul li"); //목록 리스트
const searchInfo = document.querySelector(".search__info .num"); //전체 갯수
const searchInfo2 = document.querySelector(".search__info .num2"); //찾은 갯수

//전체 갯수 구하기
searchInfo.textContent = searchList.length;
searchKeyword.forEach((el)=>{

    el.addEventListener("click", () => {

        const searchWord = el.innerText;           //사용자가 클릭한 알파벳
        // console.log(searchWord);

        searchList.forEach(el => {
            const cssName = el.querySelector("strong").innerText;       //CSS속성 텍스트
            // console.log(cssName);

            //알파벳 첫 글자 == css 속성의 첫 글자
            if(searchWord.charAt(0) === cssName.charAt(0)){
                el.classList.remove("hide"); //같으면 숨긴걸 제거
            } else {
                el.classList.add("hide"); //안같으면 숨김 추가
            }
        });

        const hidingNum = document.querySelectorAll(".search__list ul li.hide");
        searchInfo2.textContent = searchList.length - hidingNum.length;
    });
});

728x90
반응형

'JS 응용하기' 카테고리의 다른 글

퀴즈 이펙트_06  (10) 2022.08.24
퀴즈 이펙트_05  (5) 2022.08.24
퀴즈이펙트_틀린문제 정리..  (2) 2022.08.18
서치 이펙트_02 만들어보기!  (6) 2022.08.17
서치 이펙트_01 만들어보기!  (6) 2022.08.16

댓글

#HASH_TAGS

-

1

화사한가요? 선택해주세요 오징어 1Kg 당 3000원 숙제가 다양해서 너무 좋아요 필터선택자 공부 울적하니 꽃을 달아봤습니다 scroll-snap-type scroll-snap-align 코딩 JQuery 이건 또 뭐람 오징어 두마리 포획 완료 슬라이드 결과 : 월요일 HTML 오늘 조업 마감했습니다. 멈추지 않는 ' j ' 시리-즈 테스트 ImageSlideEffect 메서드 오징어 한마리 수확 완료! 오늘은 내가바로 오징어! 코드 Method 테스트테스트 오늘도 웹표준은.. 내일은 즐거운 월요일 제이쿼리 다크모드