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;
});
});
'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 |
댓글