사이트명: 네이버
제작기간: 2.5일
사용언어: HTML, CSS
분류: PC, 클론코딩
~ 2022년도 프로젝트 작업 시 문제점
- h1 ~ h5 태그를 크기를 중심으로 사용
- display:none, opacity:0, text-indent:-999px 과거 방법
보완사항
- 현재는 h1 ~ h5 태그를 상위 제목 순을 고려하여 사용 중.
- blind 사용 (display:none, opacity:0, text-indent:-999px 과거 방법 지양)
❗️ 기본적인 부분이지만, 이전 작업했던 '~2022년도 프로젝트'까지 잘못 사용하고 있었던 부분이 많았었단 걸 알 수 있었다. 기존에는 h1 ~ h5 태그를 크기를 중심으로 사용하고 있었고, 현재는 상위 제목 순을 고려하여 사용 중.
Semantic은 '의미의', '의미론적인'이라는 뜻을 가진 형용사
따라서 시맨틱 마크업이란 의미를 잘 전달하도록 문서를 작성하는 것을 말함
❗️ 웹접근성이라고 하면 우리나라에서는 장애인에 의한 편의 고려 라고만 생각하지 말고,
더 큰 범위에서는 정상적으로 쓸 수 없는 상황에 대해서 편의를 고려한다고 생각하는게 더 맞지않을까 싶다. '마우스가 고장났다거나, 키보드 사용이 제한이 된다거나'
스킵 네비게이션 작업
<div id="skip">
<a href="#newsstand">
<span>뉴스스탠드 바로가기</span>
</a>
<a href="#themecast">
<span>주제별캐스트 바로가기</span>
</a>
<a href="#sidenews">
<span>사이드뉴스 바로가기</span>
</a>
<a href="#shopcast">
<span>쇼핑캐스트 바로가기</span>
</a>
<a href="#account">
<span>로그인 바로가기</span>
</a>
</div>
❗️ 뉴스스탠드 썸네일 콘텐츠 테두리를 선으로 작업.
테이블로 작업하겠다는 생각이 우선 들었지만,
테이블 사용 시 빈 태그가 난무할 수 있기때문에 지양.
<div class="frame-area">
<i class="vt-line vt1"></i>
<i class="vt-line vt2"></i>
<i class="vt-line vt3"></i>
<i class="vt-line vt4"></i>
<i class="vt-line vt5"></i>
<i class="hr-line hr1"></i>
<i class="hr-line hr2"></i>
<i class="hr-line hr3"></i>
</div>
❗️ 네이버나 카카오는 가려진 텍스트의 처리를 모두 blind로 처리하였다.
성능저하의 원인이 되기도 하는 text-indent:-9999px 사용을 지양하고,
앞으로의 모든 프로젝트 작업은 전부 blind를 사용 예정.
웹 접근성을 위해 스크린리더가 꼭 읽어야 하는 필요한 정보 및 구조상 필요하지만 화면에는 보일 필요가 없는 곳에 클래스명을 지정해서 아래의 IR기법을 사용
.blind {
/* 우선 레이아웃에 영향을 끼치지 않도록 붕 띄워놓는다. */
position: absolute; //일단 붕 뜨게
/* 스크린리더가 읽을 수 있도록 기본적인 공간은 있어야 한다. */
width: 1px; height: 1px; //공간은 있어야함
/* 눈에 보이는 부분은 제거한다. */
overflow: hidden; //잘라버려야함.
clip: rect(0,0,0,0); //클리핑마스크 좌포를 전부 0으로 잡음.
margin: -1px; 옆으로 //밀어준다.
}
clip: rect(top right bottom left)
clip 속성은 요소의 특정 부분만 나오도록 할 수 있다. 즉, 어떤 요소에 대해 보여주고 싶은 영역을 지정하는 속성이다.
position 속성 값이 absolute 혹은 fixed인 요소여야하고, 만약 overflow 속성 값이 visible일 경우에는 적용 되지 않음
❗️ ul, li에 border값을 주고, 특정 li에는 border값을 빼는 방법으로 늘 작업했었는데,
네이버 사이트 이 부분에서는 가상선택자를 이용하여 전체 테두리를 구성하는게 보다 효과적이었다.
.sc-story .story-list::before {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
content: '';
border: 1px solid #dae1e6;
z-index: -1;
}