프로젝트 환경 | |||||||||
---|---|---|---|---|---|---|---|---|---|
문서 및 버전 | HTML5, CSS3, JavaScript | ||||||||
인코딩 | UTF-8 | ||||||||
웹 유형 | PC, Mobile | ||||||||
크로스 브라우징 | Chrome, Edge, Firefox, Opera, Safari | ||||||||
해상도 기준 | PC | 1920px | |||||||
Tablet | 1025px | ||||||||
Mobile | 768px |
분류폴더 | 서브폴더 | 파일명 | 설명 | ||||||
---|---|---|---|---|---|---|---|---|---|
css | reset.css 파일 다운로드 | [스타일] 초기화 | |||||||
layout.css | [스타일] 레이아웃 | ||||||||
common.css 파일 다운로드 | [스타일] 공통 | ||||||||
style.css | [스타일] 기본 스타일 | ||||||||
main.css | [스타일] 메인 | ||||||||
mobile.css | [스타일] 모바일 | ||||||||
js | common.js | [스크립트] 공통 | |||||||
images | logo | [이미지] 로고 | |||||||
img | [이미지] 공통 이미지 | ||||||||
ico | [이미지] 아이콘 | ||||||||
temp | [이미지] 임시 |
포지션 | 작업단계 | 내용 |
---|---|---|
기획 | 작업 전 |
WBS 파일 공유 및 납기 방식 크로스브라우징, 웹접근성 준수 여부 |
작업 중 |
검수 및 수정 요청 문의 방식 ex) 구글시트 |
|
디자인 | 작업 전 |
스타일 가이드 공통 컴포넌트 정의 수정 요청 문의 방식 ex) 피그마 코멘트, 엑셀 시트 에셋 파일 공유 ex) 로고, 아이콘 |
퍼블리싱 | 작업 전 |
깃허브 브랜치 관리 담당 정/부 작업 분량 분담 프로젝트 코드 컨벤션 수립 ex) Prettier, PostCSS |
작업 중 |
퍼블리싱 진척도 공유 코드 검토 및 개선 |
|
작업 후 |
스타일시트 최적화 퍼블리싱 소스 가이드 업데이트 |
|
개발 | 작업 전 |
프레임워크 선정 라이브러리 버전 파일 경로 ex) html, resource - css, js 등 레이아웃 구조 스크립트 작업 범위 * 탭, 스와이퍼 등 인터랙션 UI 제외 |
작업 중 |
AS-IS 활용 범위 (UI 스크립트) 레이아웃 디버깅 |
|
작업 후 |
레이아웃 안정화 |
작업단계 | 기술 구현 항목 | 구현 항목별 코멘트 | |||||||
---|---|---|---|---|---|---|---|---|---|
스토리보드 검토 | UI/UX 기술 구현 가능 여부 검토 | 구현 어려울 시 대체 기술 기획자 협의 | |||||||
UI/UX 접근성 제고 여부 검토 | 웹 컨텐츠 접근성 지침 2.1 을 기준으로 함 | ||||||||
접근성 미제고시 UI/UX 접근성 제고 요청 | |||||||||
웹 리소스 구조화 | 리소스 폴더 구조 설계 및 생성 | 개발자 협의 | |||||||
파일 네이밍 가이드 수립 | |||||||||
시안 검토 | 컨텐츠 분석 및 정보의 논리적 선형화 | 웹 컨텐츠 접근성 지침 2.1 을 기준으로 함 | |||||||
디자인에 따라 구역 분할 | |||||||||
논리구조에 따른 HTML 문서 구조화 | |||||||||
디자인에 따라 구역 분할 | 접근성 미제고시 시안 수정 요청 | ||||||||
공통 CSS, JS 가이드 작성 | |||||||||
디자인적 접근성 제고 여부 검토 | |||||||||
퍼블리싱 | CSS 가이드 수립, 문서내 ID / class 구조화 및 정리 | W3C Markup Validator 이용 | |||||||
웹 표준, 웹접근성 지침을 기준으로 JavaScript 사용불가 환경 마크업 진행 | |||||||||
마크업 유효성 검사 | |||||||||
CSS 작성 | IE 11, Chrome, FireFox, Safari 등 Major 웹 브라우저 동작 테스트 | ||||||||
브라우저 렌더링 화면과 시안 비교 | |||||||||
JavaScript 오류 테스트 | |||||||||
산출물 최종 확인 | 브라우저 테스트 | Major 웹 브라우저 렌더링 및 동작 테스트 | |||||||
웹 표준 검사 | |||||||||
문서의 논리적/의미론적 구조 수동 검사 |
W3C Markup Validator 이용 W3C CSS Validator 이용 |
||||||||
웹 접근성 최종 검토 | 정량 / 정성 평가 진행 |
웹 접근성 | 설명 |
---|---|
HTML, CSS validator을 통과했는가? | |
본문 바로가기 및 스킵네비게이션을 제공하는가? | 주메뉴 바로가기, 본문 가로가기 제공 |
텍스트가 아닌 콘텐츠에 적절한 대체 콘텐츠가 제공이 되어 있는가? | |
새창링크에 target= "_blank", title="새창 열림" 속성이 있는가? | |
링크 및 마우스 이벤트 요소가 키보드 컨트롤로 모두 접근 가능한가? | |
온라인 서식요소 (form , input)가 접근성 구조로 마크업 되어있는가? | label, title 제공 |
slide에 이전, 다음, 일시정지 버튼을 제공하는가? | |
table 요소가 데이터 테이블로서 사용되며 접근성에 맞게 마크업 되어 있는가? | scope="col", scope="row" 제공 |
Semantic Markup | |||||||||
---|---|---|---|---|---|---|---|---|---|
Tag | Description | ||||||||
article |
문서, 페이지, 애플리케이션, 또는 사이트 안에서 독립적으로 구분해 배포하거나 재사용할 수 있는 구획을 나타냅니다. 사용 예제로 게시판과 블로그 글, 매거진이나 뉴스 기사 등이 있습니다. | ||||||||
aside |
문서의 주요 내용과 간접적으로만 연관된 부분을 나타냅니다. 주로 사이드바 혹은 콜아웃 박스로 표현합니다. | ||||||||
detail |
"열림" 상태일 때만 내부 정보를 보여주는 정보 공개 위젯을 생성합니다. 요약이나 레이블은 summary 요소를 통해 제공할 수 있습니다. |
||||||||
figure |
독립적인 콘텐츠를 표현합니다. figcaption 요소를 사용해 설명을 붙일 수 있습니다. 피규어, 설명, 콘텐츠는 하나의 단위로 참조됩니다. |
||||||||
footer |
가장 가까운 구획 콘텐츠나 구획 루트의 푸터를 나타냅니다. 푸터는 일반적으로 구획의 작성자, 저작권 정보, 관련 문서 등의 내용을 담습니다. | ||||||||
header |
소개 및 탐색에 도움을 주는 콘텐츠를 나타냅니다. 제목, 로고, 검색 폼, 작성자 이름 등의 요소도 포함할 수 있습니다. | ||||||||
main |
문서 body 의 주요 콘텐츠를 나타냅니다. 주요 콘텐츠 영역은 문서의 핵심 주제나 앱의 핵심 기능에 직접적으로 연결됐거나 확장하는 콘텐츠로 이루어집니다. |
||||||||
mark |
현재 맥락에 관련이 깊거나 중요해 표시 또는 하이라이트한 부분을 나타냅니다. | ||||||||
nav |
문서의 부분 중 현재 페이지 내, 또는 다른 페이지로의 링크를 보여주는 구획을 나타냅니다. 자주 쓰이는 예제는 메뉴, 목차, 색인입니다. | ||||||||
section |
HTML 문서의 독립적인 구획을 나타내며, 더 적합한 의미를 가진 요소가 없을 때 사용합니다. 보통 |
||||||||
summary |
details 요소의 공개 상자에 대한 요약, 캡션 또는 범례를 지정합니다. summary 요소를 클릭하면 상위 details 요소의 상태가 열리고 닫힙니다. |
||||||||
time |
시간의 특정 지점 또는 구간을 나타냅니다. datetime 특성의 값을 지정해 보다 적절한 검색 결과나, 알림 같은 특정 기능을 구현할 때 사용할 수 있습니다. | ||||||||
특수기호 Entity name | |||||||||
Character | ₩ | " | & | < | > | · | |||
Entity Name | ₩ | < | & | < | > | | · | ||
참고 링크 | HTML 엔티티(새 창 열기) |
기본 규칙 | |
---|---|
- 이미지 네이밍의 조합은 카테고리_형태_의미_순서_상태로 조합한다. - 같은 이름의 이미지가 두 개 이상 존재 시 숫자로 구분한다. - 이미지 네이밍은 이미지 확장자 관계없이 순차 적용한다. - 이미지 예약어에는 숫자, 영문소문자, 언더바(_)을 조합하여 사용할 수 있다. |
|
규칙 | 예시 |
이미지 네이밍 조합 |
ico_arrow_active.svg ico_circle_tab_02_off.gif |
같은 이름의 이미지 존재 시 | ico_arrow_01.svg, ico_arrow_02.svg |
이미지 네이밍은 확장자 관계없이 순차적용 | btn_arr.gif, btn_arr_02.jpg |
기본 규칙 | ||
---|---|---|
- 네이밍은 - (하이픈) 사용을 기본으로 한다. - 네이밍에 대문자를 사용하지 않는다. - 하이픈(-)은 2개 이상의 단어를 조합할 때 사용한다. - 하이픈(-)을 이용해 4단계를 초과하여 사용하는 방법은 지양한다. - 다중 클래스 지정을 허용하나, 최대 4개 이상 사용하지 않는다. - 다중 클래스 결합 선택자 사용 시 포괄하는 요소의 순서대로 기입한다. - 네이밍으로 마크업 구조를 유추할 수 있게 구성하고 클래스 상세도를 지나치게 높이지 않는다. - CSS 최적화를 위해 가능한 속성값을 축약한다. - CSS 끝나는 지점에 세미콜론 ";"을 필수적으로 기입한다. |
||
규칙 | 좋은 예시 | 나쁜 예시 |
네이밍에 - (하이픈) 사용 |
.header-nav {color : black;}
|
.header_nav {color : black;}
|
- (하이픈) 4단계 초과 사용 지양 |
.header-nav-list {color : black;}
|
.header_nav-list-item-active-detail {color : black;}
|
다중 클래스 최대 4개이상 사용 지양 |
<button class="btn btn-pri ico-rt"><button/>
|
<button class="btn btn-pri ico-rt color-white click"><button/>
|
다중 클래스 결합 선택자 사용 시 포괄하는 요소의 순서대로 기입 |
h2.title {}
.form-input.search {}
input.form-input.search {}
|
// .search가 form-input보다 포괄범위가 낮으나 앞에 위치해 안좋은 예시
.search.form-input {}
|
마크업 구조를 유추할 수 있게 네이밍, 클래스 상세도를 최대한 낮게 유지 |
.page-header {}
.page-header-tlt {}
.page-header-desc {}
|
#wrap .contents section:nth-child(1) {}
#wrap .contents section:nth-child(1) h2.tlt {}
#wrap .contents section:nth-child(1) p.desc {}
|
CSS 최적화를 위해 가능한 속성값을 축약 |
{ color: #fff; }
{ background-position: 0 50%; } // 문자 표현 지양, 숫자 표현 지향
{ top: 0; }
|
{ color: #ffffff; }
{ background-position: left center; }
{ top: 0px; }
|
기본 규칙 |
데스크톱 퍼스트 원칙에 근거해 데스크톱 디바이스부터 우선적으로 작성합니다.
분기점을 max-width 로 추가하며, 내림차 순으로 정렬합니다.
예외적으로 데스크톱은 min-width 로 최상단에서 제어합니다.
|
---|---|
예시 |
// Small Desktop ~ Desktop
@media only screen and (min-width: 1441px){
.test {color:black;}
}
// Tablet ~ Small Desktop
@media only screen and (max-width: 1440px){
.test {color:black;}
}
// Mobile ~ Tablet
@media only screen and (max-width: 1024px){
.test {color:black;}
}
// ~ Mobile
@media only screen and (max-width: 768px){
.test {color:black;}
}
|