Web Layout
웹 접근성과 웹 표준 | WSA ( Web Standard and Accessibility )
웹접근성과 웹표준 ebOOK 바로가기
웹 표준 | Web Standards
: 여러 Browser 환경에서 표준 확인하고 지원할 수 있어야 함
- W3C( World Wide Web Consortiums )에서 만듦
참고도서 : 제프리 젤드만의 웹표준 가이드
웹 접근성 | Web Accessibility
The power of the Web is in its university. Access by everyone regardless of disability is an essential aspect.
Tim Berners - Lee , W3C Director and inventor of the World Wide Web
- Pysical Disability : 시각장애, 청각장애, 지체장애, 뇌병변장애
- Environmental Disability : 다양한 Platform, Cross Browsing, SEO(Serch Engine Optimization), 저사양 저속회선
- 내가 만든 서비스를 사용하는 사람은 일반적인 대중 뿐만이 아니다. 접근하는 방법이 달라도 누구나 동일한 서비스를 이용할 수 있어야한다.
웹 표준을 지키는 것으로 웹 접근성을 강화할 수 있다.
HTML5
: C와 같은 Compiled Language가 아닌 Interpreted Language이다.
- HTML5 탄생 이전 최초버전은 1993년, 이전 최신은 1999년에 발표됨
- non-semantic tags, exceptions 문제 되었음
- W3C의 XML1.0 (Extentional HTML) : <강사><이름>김데레사이름>강사>
- Semantic 속성 강조, closing 처리 엄격화
- WHATWG(Web Hypertext Application Technology Working Group) : 애플, 모질라, 오페라 + 크롬, 익스플로러
- W3C가 XHTML2.0의 실패를 인정한 후 WHATWG의 표준안을 대부분 수용하여 HTML5가 탄생하게 됨
- 목적: 하위호환성(HTML4 + XML 문법 모두 허용하게 됨. Coding Convention 존재)
<title>
요소
Web Page 제작 3단계
-
선형화 (구조) 단계 : Linearize Structure
: Markup을 할 때는 디자인이 아닌 Contents의 논리적 순서, 구조를 생각하는 것이 핵심
-
의미있는 요소로 마크업 : Semantic Element
- header는
<header>
, footer는 <footer>
요소를 사용
- navigation
<nav>
- main은
<main>
(중복 사용 x), side정보는 <aside>
<airticle>
: 독립적으로 존재하는 contents
<section>
: 장이나 절 등으로 나눌 수 있는 contents group
→ Contents에 대한 분석이 필요
<header>
<nav>
</header>
<div>
<main>
<article>
<footer>
- ### 2-1. WAI-ARIA
-
RIA(Reach Internet Application)을 위한 접근성 권고안
<div>
: division. Computer가 <div>
tag만으로 role 알기 어려움
- role attribute : global attribute
<div role="banner">
<nav>
</div>
<div role="group">
<div role="main">
<div role="article">
<footer>
- Native로 focus 받을 수 있는 요소들
<a href="">
<form>
에 속하는 <button>
요소 등
- button 쓰지 못한다면 ARIA로 개선
<a role="button">
-
Naming
: UI 방향(top, left, bottom)이 아니라 Contents 의미에 따라서 네이밍
- Pascal : MainContent
- Carmel : mainContent
- Snake : main_content
- Cebab : main-content
- 요즘은 id 말고 class로 주로 naming
<div .container / .wrapper>로 전체 감싸줌!
<header .header>
<nav .navigation>
<div .visual>
<main .main>
<article .slogan>
<div .footer-bg> (footer 배경 칠하기 위한 배경)
<footer .footer>
CSS Box Model (Layout)
Content-box (defualt)
: padding, margin, border 늘어날 때마다 실제 box가 차지하는 크기가 커짐
Border-box
: width, height에 padding과 border가 포함되는 방식
- Padding : border 안 쪽 여백
- Margin : border 바깥쪽 여백. Transparent(투명)
- Top right bottom left : top을 기준으로 시계방향으로
- W, h 없고 auto면 실제 content 크기로 결정됨
- Child의 BFC는 parent만큼 (parent size를 넘을 수 없음)
- Grid : system 기반 design
HTML5의 Contents Model
CSS Spec | Cascading Style Sheet
CSS spec
- REC (Recommendation) : 표준권고
Align Center
- margin trick 이용. margin은 투명이기 때문에 size가 늘어난 게 아니고 이동했다고 착각
- margin auto : full width - elemtent’s width = margin이 됨
- margin 0 auto : width값이 있을 때 margin 자동 연산 해주는 것. 투명하지만 비어있는 것이 아니기 때문에 다른 것이 올 수 없음
Normal Flow
: Markup한 순서대로 화면에 나타나는 것
Flex Box
Css-tricks의 flexbox-guide
- flex container
- 정렬할 아이템의 parent, 즉 flex container가 될 요소에 display: flex를 적용한다.
.containter {
display: flex;
}
- flex-direction
- row
- row-reverse
- justify-content
- explorer11에서 space-evenly 못 씀
- 처음부터 30px씩 padding 주고 그 안에 space-between 쓰면 어떨까
- space-around를 쓰고 가장자리에 padding 15px씩 주면 어떨까
- flex item
- flex container의 child, 즉 정렬될 item들
- order : default = 0
.main{
background: lime;
display: flex;
flex-direction: column;
}
.group2 {
order: -1
}
결과:
order 가장 작은(앞선) group2가 group1 위로 올라옴
Without Flex!
- Flex 못 쓸 때 (IE 하위버전 지원해야할 때) 배치를 위해 사용할 수 있는 기법들
- Float : left, right
- group1에 float: left 속성을 적용하면 normal flow를 벗어난다.
float 개체 밑에는 inline 요소가 올 수 없다. → 밀어냄!
-
float된 개체가 차지하는 영역을 제외한 line box
에만 또다른 float 개체가 배치될 수 있다.
-
- float속성이 적용된 개체는 높이를 차지하지 않으므로 모든 자식 요소가 float되면 부모는 높이를 잃어버린다.
-
그룹 1, 2, 3이 float 처리되어 슬로건과 푸터 영역이 맨 위로 올라오는 문제.
-
clear 속성
- clear : left, right, both 등 지정한 방향에 float된 개체가 오는 것을 허용하지 않겠다는 뜻이다.
- clear : reft 적용시 왼 쪽에 float된 개체가 있을 경우 그 개체의 높이만큼의 margin을 부여해 밑으로 내려간다.
- block 요소에만 적용할 수 있다.
-
Margin Collapsing
: Normal flow인 개체의 상, 하 margin은 겹쳐진다.
- Clear로 인해서 float height만큼 부여된 margin에 내가 추가한 margin이 포함되어 적용되지 않는 것처럼 보일 수 있음
-
Clearfix : container 요소에 Virtual Selector로 clear 속성을 줘서 자식을 float로 배치시키는 모듈
- ::before : suado element
- 가상의 첫번째 자식요소를 만들어준다.
- inline으로 만들어짐 > clear 쓰기 위해서 display;block으로 만들어야함
- Content 속성(tag 안의 text node) 없으면 의미 없음
- ::after : suado element - 가상의 마지막 자식요소를 만들어준다.
/* float issue를 해결하기 위한 모듈 */
.clearfix::after{
content: "";
display: block;
clear: both;
}
2. display:inline > inline 요소 사이에 공백(여백X) 생겨서 잘 안 씀