'분류 전체보기'에 해당되는 글 151건

  1. 2011.03.30 HTML5의 새로운 태그를 IE에서도 사용하는 방법
  2. 2011.03.30 html5 브라우저 호환 준비하기
  3. 2011.03.30 HTML5 문서의 구조
  4. 2011.03.30 HTML5 시작하기
  5. 2011.03.30 IE8이하 버전에서 HTML5 사용하기
  6. 2011.03.25 무료 다운로드 사이트
  7. 2011.03.09 펌] 폼(Form) 디자인 잘했다는 소리를 듣기 위한 방법론
  8. 2011.02.14 텍스트 정렬에 관한 문제 2
  9. 2011.02.14 텍스트 세로 중앙 정렬에 관한 문제.
  10. 2011.01.27 택스트 on_off 탭메뉴 1

HTML5의 새로운 태그를 IE에서도 사용하는 방법

Html5 2011. 3. 30. 11:29
지지난 포스팅에서 HTML5의 새 태그를 이용해서 구조화 하는 방법

그리고 지난 포스팅에서 HTML5의 새 태그를 이용해서 구조화한 뒤

새 태그들을 블록엘리먼트화 하는 단계까지 해보았습니다.



그런데 우리는 이렇게 완성된 코드를 실행해보고도 한가지 심각한 문제에 봉착하게 됩니다.

IE에서는 HTML5의 새로운 태그를 새 태그로 인식하지 못합니다.



IE6,7의 developer toolbar나 IE8의 개발자 도구로

작성한 문서의 DOM을 살펴보면



HTML5의 새 태그들이 열기태그는 열기태그대로

닫기태그는 닫기태그대로 따로 노는 꼴(?)을 볼 수 있습니다.




너무 걱정하지 마세요.

IE에서 이 문제를 해결하기 위한 간단한 방법이 있습니다.

아래의 스크립트를 <head>에 삽입하면 IE는 새로운 태그들을 정상적인 엘리먼트로 인식합니다.

IE는 createElement로 새로운 DOM 노드를 생성할때

이렇게 생성된 태그들을 정상적인 엘리먼트로 인식하기 때문입니다.

여러분이 사용할 새 HTML5 태그에 대해서 createElement를 실행해주세요.


<script type="text/javascript">
document.createElement('header');
document.createElement('footer');
document.createElement('section');
document.createElement('aside');
document.createElement('nav');
document.createElement('article');
</script>



이 스크립트를 삽입한 후

문서의 DOM을 확인하시면




이렇게 구조화가 잘 된 것을 볼 수 있습니다.




여기서 한가지 팁을 더 알려드리자면

우리가 자바스크립트를 사용할때 흔히 쓰는 태그 <script>의 속성인 type="text/javascript"가

HTML5에서는 optional 속성과 기본 값이 되었습니다.

그렇기 때문에

<script type="text/javascript">을 <script>로 간단히 표현하셔도 무방합니다.


그렇다면 우리가 CSS를 넣을 때 쓰는 <style> 태그의 속성인 type="text/css"는 어떻게 되었을까요?

네 정답입니다.

HTML5에서는 style 태그의 type속성 역시 optional속성과 기본값으로 text/css를 취하기 때문에

<style type="text/css">를 <style>이라고 표현해도 무방합니다.

출처: 나를찾는 아이
http://trend21c.tistory.com/913

'Html5' 카테고리의 다른 글

html5 검사시 summary 오류  (0) 2012.10.08
iframe 사용  (0) 2011.04.05
html5 브라우저 호환 준비하기  (0) 2011.03.30
HTML5 문서의 구조  (0) 2011.03.30
HTML5 시작하기  (0) 2011.03.30
:

html5 브라우저 호환 준비하기

Html5 2011. 3. 30. 11:26
지난 포스팅에서 HTML5 태그를 이용하여 구조화를 해보았습니다.

이 코드를 브라우저에서 실행해보신 여러분들 여러분들이 원하시는 모양대로 나오던가요?

아마 그렇지 않다 라고 말씀하시는 분들이 많을 겁니다.


근래의 최신 버전의 브라우저들은 HTML5를 충분히 지원하는 경우도 있지만

그렇지 않은 경우가 많기 때문입니다.

그래서 우리는 이 구조화된 코드에 보충 작업을 해주어야 합니다.



대부분의 브라우저들은 HTML5 doctype을 완전히 지원하지 않아

새로운 HTML5의 태그들을 인지하고 있지 않습니다.

좀더 쉽게 설명하자면 "브라우저는 header, footer, section 태그를 모른다" 라는 뜻이지요.

그러나 브라우저들은 자신이 모르는 태그가 나타났을때 이를 유연하게 처리하려고 합니다.

하지만 한가지 이슈는 바로 이러한 새로운 태그들에는 default style이 없다는 것입니다.

그리고 대부분의 브라우저는 보통 새로운 태그들을 inline tag로 취급합니다.

그래서 HTML5의 새로운 태그들로 구조를 잡기 위해서는

마치 우리가 div와 같은 블록엘리먼트를 사용하듯이 블록레벨 엘리먼트로 바꿔줄 필요가 있습니다.


header, nav, article, footer, address {display: block;}


이렇게 말이죠.


여러분이 사용하실 HTML5의 새로운 태그들에 대해서 display:block을 선언해주시면

마치 div 엘리먼트를 다루듯이 사용하실 수 있습니다.


출처: 나를 찾는 아이

'Html5' 카테고리의 다른 글

iframe 사용  (0) 2011.04.05
HTML5의 새로운 태그를 IE에서도 사용하는 방법  (0) 2011.03.30
HTML5 문서의 구조  (0) 2011.03.30
HTML5 시작하기  (0) 2011.03.30
IE8이하 버전에서 HTML5 사용하기  (0) 2011.03.30
:

HTML5 문서의 구조

Html5 2011. 3. 30. 11:24

HTML5에는 문서의 구조를 만드는 markup에 있어서 유용하고 흥미로운 태그들이 추가되었습니다.

이 태그들을 사용함으로써 구조를 잡을때 무심코 쓰던 div를 줄이고, 보다 명확하게 구조화할수 있습니다.


<section>

section은 콘텐츠를 그룹핑할때 쓰입니다.
section안에 section이 존재할수 있기 때문에 중첩해서 사용이 가능합니다.




<header>


section의 헤더에 해당하는 콘텐츠를 마크업할때 쓰입니다.
우리가 보통 <div id="header">라고 쓰는 것을 대체할 수도 있고
<section> 안에서 <header>를 사용함으로써
section 콘텐츠의 header 콘텐츠 라는 것을 표현 할 수도 있습니다.



<footer>

우리가 <div id="footer">라고 사용하는 것을 대체 합니다.
copyright나, 회사주소와 같은 정보들이 포함되는 경우가 많지요.




<nav>

nav는 navigation의 줄임말입니다.
네비게이션 메뉴를 나타낼때 쓰입니다.



<article>

독립적인 글들을 나타낼때 쓰입니다. 블로그의 경우 각 포스팅을 표현할때 흔히 쓸 수 있는 태그 입니다.



<aside>

콘텐츠와 관계있는 부가 정보들을 표시할때 유용한 태그입니다.
우리가 흔히 사이드바 라고 표현하는 콘텐츠들을 담기에도 유용합니다.





HTML5 structure 마크업 예제


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>html5</title>
</head>
<body>
    <header>
        <h1><a href="#">HTML5</a></h1>
    </header>

    <nav>
        <ul>
            <li><a href="#">메뉴1</a></li>
            <li><a href="#">메뉴2</a></li>
            <li><a href="#">메뉴3</a></li>
            <li><a href="#">메뉴4</a></li>
        </ul>
    </nav>

    <section>
        <article>
        포스팅1
        </article>

        <article>
        포스팅2
        </article>

        <article>
        포스팅3
        </article>
    </section>

    <aside>
        <div>관련글</div>
        <ul>
            <li><a href="#">관련글1</a></li>
            <li><a href="#">관련글2</a></li>
            <li><a href="#">관련글3</a></li>
            <li><a href="#">관련글4</a></li>
        </ul>
    </aside>
    <footer>
        <p>Copyright © 2010 All Rights</p>
    </footer>
</body>
</html>





위 코드를 보시면 알 수 있듯이

우리가 구조화를 할때 쓰는 div 태그가 상당히 많이 줄었음을 알수 있습니다.

이로써 코드를 이해하기에 더욱 쉬워졌으며

중첩된 div를 사용할때 발생 했던 실수들(닫기 태그 삭제 등)을 줄일 수 있습니다.


출처: 나를찾는아이
http://trend21c.tistory.com/911

'Html5' 카테고리의 다른 글

iframe 사용  (0) 2011.04.05
HTML5의 새로운 태그를 IE에서도 사용하는 방법  (0) 2011.03.30
html5 브라우저 호환 준비하기  (0) 2011.03.30
HTML5 시작하기  (0) 2011.03.30
IE8이하 버전에서 HTML5 사용하기  (0) 2011.03.30
:

HTML5 시작하기

Html5 2011. 3. 30. 11:19
HTML5 시작에 머뭇머뭇거렸다면 다같이 흘깃 볼까요?



HTML5에 대해서 간략히 정리된 cheetsheet 입니다.



http://adactio.com/extras/pocketbooks/html5/


이미 웹퍼블리셔로서 왕성히 활동하고 있으며,

HTML4.01과, XHTML 을 이해하고 계신다면

이 문서만 봐도 HTML5에 대한 개념을 어느정도 잡으실수 있으실겁니다.

출처: 나를찾는아이 
http://trend21c.tistory.com/910

'Html5' 카테고리의 다른 글

iframe 사용  (0) 2011.04.05
HTML5의 새로운 태그를 IE에서도 사용하는 방법  (0) 2011.03.30
html5 브라우저 호환 준비하기  (0) 2011.03.30
HTML5 문서의 구조  (0) 2011.03.30
IE8이하 버전에서 HTML5 사용하기  (0) 2011.03.30
:

IE8이하 버전에서 HTML5 사용하기

Html5 2011. 3. 30. 11:14
자 이제까지 HTML5 문서를 만들기 위한 준비과정을 진행해보았습니다.

새로운 엘리먼트들에 대해서도 알아보았고

새로운 엘리먼트들에 대한 기본 CSS정의도 해보았고

IE에서 새로운 엘리먼트를 인식시키는 방법에 대해서도 알아보았습니다.


그럼 이제 좀 더 견고한 HTML5문서를 만들어 봅시다.



<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>HTML5</title>
<link rel="stylesheet" href="css/common.css" type="text/css" />
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!--[if lte IE 7]>
<script src="js/IE8.js"></script>
<![endif]-->
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" media="all" href="css/ie6.css" />
<![endif]-->
</head>
<body>
</body>
</html>




conditional comments를 이용하여 HTML5 호환을 위해 IE를 위한 몇가지 조치를 취한 완성된 HTML5 문서구조 입니다.

(conditional comments에 대해서 잘 모르시는 경우 구글링을 통해서 살펴보세요)


1.

<link rel="stylesheet" href="common.css" type="text/css" />

문서와 표현을 분리한 웹사이트에서 가장 근본이 되는 css 정의가 담긴 css 파일입니다.

이 안에 흔히 reset css라 불리는 초기화 css를 넣으세요.

그리고 HTML5의 새로운 엘리먼트를 위한 아래의 css를 추가로 선언합니다.


article,aside,canvas,details,figcaption,figure, footer,header,hgroup,menu,nav,section,summary {
    display:block;
}


HTML5에서 추가된 엘리먼트들을 모두 block엘리먼트로 선언하는 css 입니다.


2.

<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->



html5.js는 IE에서 html5 엘리먼트들을 인식시키기 위한 스크립트가 들어있습니다.

conditional comments를 이용하여 IE9 이하 버전에서만 읽히도록 하였습니다.
(IE9는 HTML5를 지원합니다.)

이 js 파일을 인클루드 하시면 HTML5엘리먼트를 IE에서 잘 인식하게 됩니다.

단, 이 js파일은 반드시 <head>안에 넣으셔야 합니다.

홈페이지 최적화 기술중에서 script파일을 문서의 하단에 넣는 방법을 권유하고 있기에

script 태그를 모두 문서 하단에 넣으시는 분들도 있으실 텐데

html5.js 파일의 경우 HTML5엘리먼트를 IE에서 인식시키는 스크립트가 들어있고

이 스크립트는 반드시 IE가 엘리먼트를 렌더링 하기 전에 실행되어야 합니다.

그렇기 때문에 html5.js는 꼭 <head>안에 넣으셔야 합니다.


http://code.google.com/p/html5shiv/



3.

<!--[if lte IE 7]>
<script src="js/IE8.js" type="text/javascript"></script>
<![endif]-->



IE7을 포함한 그 이하 버전의 브라우저에 IE8.js 파일을 인클루드 합니다.

IE8.js는 IE7 이하 브라우저에서 좀 더 브라우저 웹표준 호환성을 준수하도록 스크립트로 적절한 작업을 수행합니다.

IE6이하버전에서 png의 고질적인 문제도 함께 해결해줍니다.


http://code.google.com/p/ie7-js/




4.

<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" media="all" href="css/ie6.css" />
<![endif]-->


ie7보다 낮은 버전의 브라우저를 위한 CSS를 별도로 담기 위해

ie6.css 파일을 만들고 이를 링크합니다.

이파일은 굳이 만드시지 않아도 상관없지만

향후 HTML5로 마크업을 하고 스타일링을 하고, 최신의 CSS를 사용할때

발생할수 있는 문제를 효율적으로 처리하고자 함입니다.

최악의 브라우저라 불리는 IE6을 위한 것이지요.





휴 이제 HTML5문서를 만들기 위한 준비가 모두 끝났습니다.

이제 이렇게 만든 문서안에 HTML5의 새로운 엘리먼트들을 활용하여

문서를 채우는 일만 남았네요.

수고하셨습니다~

출처: 나를찾는아이 
http://trend21c.tistory.com/918

'Html5' 카테고리의 다른 글

iframe 사용  (0) 2011.04.05
HTML5의 새로운 태그를 IE에서도 사용하는 방법  (0) 2011.03.30
html5 브라우저 호환 준비하기  (0) 2011.03.30
HTML5 문서의 구조  (0) 2011.03.30
HTML5 시작하기  (0) 2011.03.30
:

무료 다운로드 사이트

diary 2011. 3. 25. 15:04


영문 무료 폰트

http://www.1001freefonts.com/

http://www.dafont.com/

http://www.abstractfonts.com/

 

로딩중 이미지

http://ajaxload.info/

http://www.loadinfo.net/

http://preloaders.net/

 

css 버튼

http://www.webdesignerwall.com/demo/css-buttons.html#

http://www.button-download.com/

 

세계 회사 CI,BI 다운

http://benchsite.co.kr/designdb/brand_list.html

 

포토샵  패턴 다운

http://www.kollermedia.at/pattern4u/

http://www.squidfingers.com/patterns/1/

 

포토샵 브러시 다운

http://qbrushes.net/

 

여러 가지 아이콘

http://www.freeiconsweb.com/index.html

 

아이폰 아이콘

http://www.keepthewebweird.com/iphone-icon-psd-template/

 

배경 텍스처 다운

http://www.textureking.com/

http://www.cgtextures.com/

 

무료 벡터 이미지

http://www.123freevectors.com/

 


웹디자이너를 위한 각종 소스 사이트 모음

http://www.forwebdesigners.com/


출처:
웹표준 스터디 카페
http://cafe.naver.com/webmarkup.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=730&

'diary' 카테고리의 다른 글

이미지 낙관 만들어 주는 곳  (0) 2011.05.18
[퍼옴] 차세대 웹브라우저 전쟁  (0) 2011.04.18
css 코딩 정석??  (0) 2011.04.07
디자이너에게 바란다.  (0) 2010.04.07
에디터가 불안정 한거 같은데....  (0) 2010.04.07
:

펌] 폼(Form) 디자인 잘했다는 소리를 듣기 위한 방법론

HTML 2011. 3. 9. 15:06

폼(Form) 디자인 잘했다는 소리를 듣기 위한 방법론

 

웹 디자인을 처음 하시는 분들에게 있어 폼 디자인은 어려움 그 자체입니다. 하지만 폼은 사용자와의 상호작용을 하는 웹의 특성 상 매우 중요하며 웹 디자이너라면 반드시 이해하고 넘어가야 할 관문입니다. 앞으로 설명하는 내용을 잘 참고하시어 다음부터 제작하는 폼 디자인은 매우 효율적으로 작성하는 웹 디자이너가 되시길 바랍니다.

 

 

좋은 폼 디자인을 하기 위해서는 다음의 4가지를 고려하여야 합니다.

 

  1. 요소 의미에 맞게 사용하기

  2. 접근성을 준수하여 제작하기

  3. 사용성을 고려하여 작성하기

  4. 보고 이해하기 좋게 디자인하기

 

폼 디자인을 잘못하면 사용자를 때때로 난처하게 하거나 곤란하게 만들 수 있습니다.

종종 폼을 사용하다 보면 사용자가 웹 문서를 보는 도중 엉뚱한 방향으로 페이지를 옮기거나,

원하지 않는 요소로 이동하는 경우가 생깁니다. 사용자에게는 참 난처할 수 밖에 없는 상황이 연출됩니다.

사용자에게 보다 편리함을 제공해주는 것이 디자이너와 개발자의 역할이라는 측면에서

많은 반성이 필요하겠죠? 자 그럼 앞으로 사용자에게 편리함을 제공해 줄 수 있는

좋은 폼 디자인 방법을 알아봅시다.

 

 

 

 

1. 의미가 올바른 구조를 작성하라.

  

A. 유사한 내용은 <fieldset> 요소로 감싸라.

일반적으로 폼 디자인 시에는 <form> 요소 내부에 <input /> 요소를 사용하여 작성합니다.

<form> 요소가 <input /> 요소 들을 감싸 않은 모양이죠. 문제는 내부에 <input /> 요소가 많을 경우입니다.

이처럼 내부에 많은 요소가 사용된다면 사용자의 입장은 물론 디자이너, 개발자의 입장에서도 쉽게 구분하여

이들을 파악하기란 어렵습니다. 이럴 경우 <filedset>을 사용하여 내부 요소를 비슷한 내용끼리 묶어준다면

모두가 손쉽게 내용을 이해할 수 있을 겁니다. 모두를 위한 디자인 [유니버셜 디자인]의 시작인거죠!

 

(예제 코드)

<form action="process.cgi" method="post"> 

<fieldset>
    <span>빌딩 주소</span><input type="text" />
    <span>도시</span><input type="text" />
    <span>전화번호</span><input type="text" />
    <span>우편번호</span><input type="text" />
</fieldset>

 

<fieldset>
    <span>빌딩주소</span><input type="text" />
    <span>도시</span><input type="text" />
    <span>전화번호</span><input type="text" />
    <span>우편번호</span><input type="text" />
</fieldset>
 

</form>

 

 

 

B. 구분한 <fieldset> 요소마다 <legend> 요소로 이름을 부여하라.

나뉘어진 <filedset> 요소를 구분하기 위하여 각 <fieldset>은 구분 식별자가 필요하겠죠? 다른 요소의 경우는

name, id 속성으로 구분하겠지만, <fieldset>은 내부에 <legend> 요소를 사용하여 구분 식별할 수 있습니다.

 

(예제 코드)

<form action="process.cgi" method="post">

<fieldset>

    <legend>아카데미 정글</legend>

    <span>빌딩 주소</span><input type="text" />
    <span>도시</span><input type="text" />
    <span>전화번호</span><input type="text" />
    <span>우편번호</span><input type="text" />
</fieldset>

 

<fieldset>

    <legend>와인 아카데미</legend>
    <span>빌딩 주소</span><input type="text" />
    <span>도시</span><input type="text" />
    <span>전화번호</span><input type="text" />
    <span>우편번호</span><input type="text" />
</fieldset>

</form>

 

 

 

C. <input /> 요소에 name 속성을 작성하라.

폼에 작성된 내용을 스크립트를 통해 서버로 보내기 위해서는 스크립트에서 제어할 수 있는 식별 이름이 필요합니다. 때문에 사용자가 입력하는 공간인 <input />에 name(이름) 속성을 작성하여야 합니다.

 

(예제 코드)

 

<fieldset>

    <legend>아카데미정글</legend>

    <span>빌딩 주소</span><input type="text" name="b_address" />
    <span>도시</span><input type="text" name="city" />
    <span>전화번호</span><input type="text" name="tel_number" />
    <span>우편번호</span><input type="text" name="post_number" />
</fieldset>

 

 

 

D. <span> 대신 <label> 요소를 사용하라.

<span> 요소를 사용하는 것은 아무런 의미없이 문서를 작성한 경우로 이는 잘못된 방법입니다.

이를 개선하기 위해서는 <span> 대신 <label> 요소를 사용하여 문서를 구조화 시켜주셔야 합니다. 

 

(예제 코드)

 

<fieldset>

    <legend>아카데미정글</legend>

    <label>빌딩 주소</label><input type="text" name="b_address" />
    <label>도시</label><input type="text" name="city" />
    <label>전화번호</label><input type="text" name="tel_number" />
    <label>우편번호</label><input type="text" name="post_number" />
</fieldset>

 

 

 

 

E. <label> 요소 for 속성을 제공하여 <input />의 id 속성과 연결하라.

<label> 요소의 for 속성은 관련된 <input /> 요소의 id 값과 연결됩니다.

이를 통해 사용자는 접근성 및 사용성 증대를 높힐 수 있습니다.

 

(예제 코드)

 

<fieldset>

    <legend>아카데미정글</legend>

    <label for="buidding_addr">빌딩 주소</label><input type="text" id="buildding_addr" name="b_address" />
    <label for="city_name">도시</label><input type="text" id="city_name" name="city" />
    <label for="phone">전화번호</label><input type="text" id="phone" name="tel_number" />
    <label for="postal">우편번호</label><input type="text" id="postal" name="post_number" />
</fieldset>

 

 

 

 

F. <option> 요소를 카테고리화 하기 위한 <optgroup> 요소를 사용하라.

<select> 요소 내부에 <option> 요소가 많을 경우, <optgroup> 요소를 사용하여 그룹화 하는 것이 좋습니다. 

옵션 요소들을 그룹화하고 label 속성으로 각 그룹의 타이틀을 작성하여 구분할 수 있습니다.

 

(예제 코드)

 

<select>
<optgroup label="USA">
    <option>Alabama</option>
    <option>Alaska</option>
    <option>Arizona</option>
</optgroup>
<optgroup label="Canada">
    <option>Alberta</option>
    <option>British Columbia</option>
    <option>Manitoba</option>
</optgroup>
</select>

 

 

 

 

G. 속성은 반드시 값을 명시해 준다.

과거 문법이 덜 엄격했던 HTML 문서 작성시와는 다르게 XHTML 1.0 이상 문서 작성 시에는 반드시 속성에

값을 명시해주어야 합니다.

 

(예제 코드)

 

<label for="live">Living?</label>
<input name="live" id="live" type="checkbox" checked="checked" disabled="disabled" />

 

 
 
 
 

H. <input type="submit" />보다는 <button>을 사용하는 것이 조작하기 좋다.

<input /> Submit 전송 버튼은 CSS로 꾸미기 매우 불편하다. 이를 대체할 유용한 방법으로 <button>을

사용하는 것이 디자인하기 좋다. 관련 글(Button 요소의 재 발견! <button> VS <input />)을 참고해보길

바란다.

 

 

 

 

2. 접근 가능하게 작성하여야 한다.

  

I. <input /> 요소에 tabindex를 넣어라.

마우스를 사용하는 일반 사용자에 비해 마우스를 사용하지 못하는 사람들(예를들어 시각 장애가 있는 사람들)이

바라보는 웹 페이지를 읽는 방법은 매우 어렵다. 왜냐하면 문서가 작성된 순서대로 스크린리더(화면낭독) 되기 때문. 이런 불편함을 해소하기 위해 디자인 단계에서 글의 중요도에 따라 우선 적으로 읽힐 수 있는 순서를 고려하여야 한다. 이를 위해 tabindex라는 속성으로 순서를 부여할 수 있다.

 

(예제 코드)

 

<input type="text" tabindex="2" />
<input type="text" tabindex="1" />
<input type="text" tabindex="3" />

 

 

 

 

J. 사용 목적이 타당하다면, accesskey 속성을 부여하라.

accesskey 속성은 input 요소에 키보드 단축키를 제공할 수 있다. 단축키는 키보드 자판의 Alt (Option)와

함께 사용하면 된다. 물론 모든 input 요소에 accesskey를 부여할 필요는 없다. 하지만 분명 필요한 요소도

있다. 예를들면 Search box(검색 창)의 경우이다. 아래 코드처럼 단축키 속성을 부여한다면 사용자는 쉽게

검색할 수 있을 것이다. 여기서 주의할 점은 사용자는 단축키를 모른다는 것이다. 그렇기 때문에 단축키를

명시해서 사용자로 하여금 사전에 알 수 있도록 조치를 취하는 것이 필요하다.

 

(예제 코드)

 

<label for="search"><span class="shortcut">S</span>earch</label>
<input type="text" name="s" id="search" accesskey="s" />

 

 

 

 

K. 사용자로 하여금 현재 활성화된 창을 각인 시켜라. 굿 포커싱!

이 방법은 CSS :hover 가상 클래스(슈도 클래스라고도 부름)를 이용하여 시각적으로 사용자에게 현재 활성화된

input 요소를 알 수 있도록 도와준다. 시각적으로 접근성을 향상 시킬 수 있다. 다만 아쉬운 점은 IE7 이하

브라우저에서는 이 방법은 지원되지 않는다. 왜냐하면 IE6의 경우 <a> 요소에만 :hover 가 적용되며,

아래 사용된 속성 선택자의 경우 IE7은 인식하지 못하기 때문이다. 하지만 그렇다고 해서 아주 방법이 없는

것은 아니다. IE7.js를 이용하는 방법과 javascript, jQuery 등을 이용하는 방법으로 보조가 가능하다.

물론 javascript가 지원 되지 않는 환경에서는 적용되지 않는다.

 

(예제 코드)

 

input[type=text]:hover {
     background-color:#ffff66; /* 배경색 변경 */
     border-color:#999999; /* 테두리색 변경 */
}

 

 

 

 

L. 스크린리더기를 이용하는 사람들도 있다는 것을 염두에 두어라.

모든 사람들은 쉽고 일목요연한 폼 디자인을 선호한다. 모든 사람들 안에는 스크린리더기를 이용하는 사람들도

포함된다. 이를 염두에 두고, 모든 input 요소에는 label 요소로 명확함을 전달하여야 한다.

 

아래 사용된 속성 선택자의 경우 IE7은 인식하지 못하기 때문이다. 하지만 그렇다고 해서 아주 방법이 없는

것은 아니다. IE7.js를 이용하는 방법과 javascript, jQuery 등을 이용하는 방법으로 보조가 가능하다.

물론 javascript가 지원 되지 않는 환경에서는 적용되지 않는다.

 

 

 

 

 

 

3. 기능적 실용성을 고려하라.

  

M. 올바른 컨텐츠 타입을 사용하라.

대다수의 경우 form에 enctype 속성을 설정하지 않는다. enctype의 초기 설정 값은 다음과 같다.

enctype="application/x-www-form-urlencoded" 대부분의 경우 이 속성을 설정하지 않아도 무방하나,

form 내부에 <input type="file" />이 있는 경우는 enctype 속성의 값을 "multipart/form-data"로

설정해줘야 한다. 왜냐하면 일반적으로 초기 값일 경우 form 안의 데이타를 text 형식으로 서버에 보내지만,

이미지나 실행 파일 같은 binary 파일은 초기 설정 값으로는 전송할 수 없기 때문이다. enctype=

"multipart/form-data" 으로 설정해주면 text가 아닌 binary 형식으로 form 안의 데이타를 전송할

수 있다.

 

(예제 코드)

 

<form action="verify.php" method="get" enctype="multipart/form-data">
    &tl;label for="avatar">Upload your Avatar : </label>
    <input type="file" name="avatar" id="avatar" />
</form>

 

  
 
 
 
 

N. get/post 전송 방식의 차이를 제대로 알고 사용하라.

get 또는 post는 form 내부의 데이터를 전송하는 방식을 말한다. 이 둘은 같은 역할을 하지만 명백하게

다른 점이 존재하는데 get 방식에 비해 post 방식이 비교적 정보 보안적이 측면이 더 낫다. get 방식의 경우

form 내부 데이터 전송 시 URL 뒤에 정보를 붙여서 보내기 때문에 눈에 보인다는 점이다. 만약 비밀번호를

폼에 넣어 보낼 경우 get 방식을 사용한다면 낭패다 ㅡ.,ㅡ;; 다 보일테니 말이다. 유의해야 할 부분이다.

post 방식은 get 방식에 비해 안전하다.

 

 

get 

post 

보안

post에 비해 덜 보안적.

get에 비해 보안적.

데이터 제한 

제한, URL 허용 길이

제한 없음.

데이터타입 제한

오직 ASCII 문자만 허용.

제한 없음. Binary 역시 사용 가능.

뒤로가기 버튼,

재 전송 버튼 눌렀을 경우

사용자가 입력한 내용을 재 작성해야 함.

사용자에게 경고를 함. 

인코딩

application/x-www-form-urlencoded 

multipart/form-data 또는

application/x-www-form-urlencoded

 

(예제 코드)

 

<form action="you.php" method="get">
    <label for="fname">First Name</label>
    <input type="text" name="fname" id="fname" value="Bill" />
    <label for="lname">Last Name</label>
    <input type="text" name="lname" id="lname" value="Gates" />
</form>

 

  
  
 
 

O. 검증은 클라이언트/서버 양쪽에서 진행할 수 있도록 만들어라.

form 내부의 데이타를 보내기 전에 클라이언트 쪽에서 자바스크립트를 이용하여 데이타 내용이 유효한지 검사하는 것 이외에 혹시 모를 자바스크립트 미지원 시 유효성 검사를 진행할 서버쪽에도 검증 시스템을 만들어놔야 접근성을 높힐 수 있다.

 

  

  

 
 

P. AJAX를 이용하여 보다 사용성을 높여라. 단, 자바스크립트 미지원시도 고려하라.

AJAX를 이용하여 페이지를 새로 고침하지 않고 현재 페이지에서 사용자에게 내용을 전달하는 것은 사용자에게 많은 사용의 편리를 제공할 수 있다.jQuery 또는 당신이 선호하는 자바스크립트 라이브러리를 사용하여 작성해보는 것은 어떨지 고민해봐라. 단 개발 시 Javascript 미지원 시에도 처리가 가능하도록 설계하여야 함을 명심히라.

'HTML' 카테고리의 다른 글

dl, dt, dd 요소  (0) 2011.07.08
비디오  (0) 2011.05.12
HTML5 표준 기술과 서비스 생태계 변화  (0) 2011.01.24
아이프레임 투명하게 만드는 방법  (0) 2010.11.18
파비콘  (0) 2010.05.14
:

텍스트 정렬에 관한 문제 2

CSS 2011. 2. 14. 15:08
완벽한 해결은 아니지만...ie7 이하버전에서 해결했기에 올려본다.


<div class="userTab">    
    <ul>
     <li class="on"><span><a href="#">국회의사당</a></span></li>
     <li><span><a href="#">한국방송공사</a></span></li>
     <li><span><a href="#">여의도공원</a></span></li>
     <li><span><a href="#">증권선물거래소</a></span></li>
     <li><span><a href="#">63빌딩</a></span></li>
    </ul>
</div>

/* 공용 */
.userTab {float:left; width:32px; margin-right:3px;}
.userTab li {height:134px; padding:0 3px; text-align:center; margin-bottom:1px; background:url('../images/layout/user_tab_off.gif') no-repeat; font-size:15px; font-weight:bold;}
.userTab li a {color:#c0c8d3; cursor:pointer;}
.userTab li.on{background:url('../images/layout/user_tab_on.gif') no-repeat;}
.userTab li.on a {color:#fff;}
.userTab li span {display:table-cell; height:134px; vertical-align:middle;}

/* ie7 전용을 만들었다. ie6 도 주석처리해서 넣어주면 될듯. */

.userTab li {position:relative; margin:0; padding:0; height:133px;}
.userTab li span {position:absolute; left:2px; top:50%; width:26px; height:auto !important;}
.userTab li span a {position:relative; top:-50%;}

ie7이하버전에서 해결책은 위 빨간색. 포지션으로 해결.


위 이미지 탭 부분 텍스트가 가로세로 중앙정렬로 나오게 된다.

'CSS' 카테고리의 다른 글

대체 텍스트 안보이게 하기  (0) 2011.04.06
css3 라운드박스  (0) 2011.04.05
텍스트 세로 중앙 정렬에 관한 문제.  (0) 2011.02.14
css 텍스트 말줄임  (1) 2011.01.04
텍스트 줄바꿈 처리 word-break, white-space  (0) 2011.01.04
:

텍스트 세로 중앙 정렬에 관한 문제.

CSS 2011. 2. 14. 11:48
코딩을 하다보면 아래와 같은 상황이 꽤 빈번하게 발생한다. 이번 프로젝트에서도 당연히 나왔다. 현재 해결이 안되어 놔두고 있는데 요지를 살펴보면 W3C에서는 권장하지 않는다는 것이다. 뭐 이것도 css3에서는 관련 태그가 나온걸 보니 보강되어 진듯 하다.

이것 하나때문에 htc를 사용하는것도 내키지 않고 li 태그를 마크업 무시하고 테이블로 바꾸는것도, 빈 이미지를 삽입하는 것도 내키지 않아 방법을 고민중이긴 한데 css2로는 해결이 불가능해 보인다.

table-cell 이 ie6,7만 없다면 가장 좋은 방법인데....이걸 사용할 수 없으니 너무 답답하다. 후....

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

virtical-align 은 inline 속성을 가진 요소에만 직접 적용하여 사용할 수 있습니다. 즉, 블럭요소에는 적용되지 않습니다.
위와같이 적용하면 알파벳 d가 아닌 div 요소 자체를 수직정렬 시키는 모양이 되는데 div 는 block 속성을 가지고 있으므로 수직정렬 되지 않습니다. .page 내부의 요소를 수직정렬 시키려면 다음과 같이 하셔야 합니다.

.page * { vertical-align:middle; display:inline;} /*공용선택자를 사용해서 page 내부의 모든 요소를 inline 형태로 재정의 하였음*/

<div class="page"><img src="http://standardmag.org/images/cdk_logo.gif" width="172" height="100" /><p>Hello!</p></div>

이 때 div 요소는 수직정렬시키는데 아무런 영향을 미치지 않고 img 와 p 태그 가 서로 의존적인 형태로 수직정렬 됩니다.
img 요소의 높이가 p 보다 높기 때문에 img 요소를 기준으로 p 가 수직 정렬된 형태 입니다.
예제를 보아 알 수 있듯 엘리먼트 혼자서는 수직정렬 되지 않고 주변의 inline 요소들과 함께 어울렸을 때 주변 요소를 상대적인 기준으로 잡은 다음 자신의 수직 위치를 결정하게 됩니다.

예외적으로 td 에는 vervical-align 을 적용시켜서 내부 요소를 수직정렬 시킬 수 있습니다.
하지만 다른 요소(div 와 같은 블럭요소)에는 안됩니다.

본래 div 태그에 대하여 display:table-cell; vertical-align:middle 속성을 주면 div 요소가 td 처럼 렌더링 되기 때문에 손쉽게 수직정렬 시킬 수 있지만 이 부분은 IE6~7 모두 렌더링 되지 않는 버그가 있습니다. IE 는 display:table-cell 이라는 속성을 무시하기 때문입니다.

W3C 스펙을 가만히 살펴보면 저렇게 텍스트로 된 콘텐트를 박스모델 안에서 수직정렬 되도록 하는 것을 지원하지 않고 있습니다. 개인적인 견해로 볼 때 가능하면 그러한 방식을 사용하지 말라는 의미로 해석되기도 합니다. 한편 이미지 등의 표현요소를 배경에서 중앙정렬 시키는 것은 쉽습니다. 하지만 텍스트 콘텐트는 박스모델의 기본 속성에 따라서 최상단으로 부터 순서대로 표현되도록 하는 것이 좋겠습니다.

 

출처 : http://forum.standardmag.org/viewtopic.php?id=915

 

여기서 핵심은 * 를 붙이는 것이다.

'CSS' 카테고리의 다른 글

css3 라운드박스  (0) 2011.04.05
텍스트 정렬에 관한 문제 2  (0) 2011.02.14
css 텍스트 말줄임  (1) 2011.01.04
텍스트 줄바꿈 처리 word-break, white-space  (0) 2011.01.04
td 안에 div height:100% 만들기  (0) 2010.12.08
:

택스트 on_off 탭메뉴 1

jQuery 2011. 1. 27. 16:06
만든걸 응용하면 이미지도 금방해결볼듯....탭메뉴 제대로 굴러가는 소스를 찾다찾다 그냥 넘겼는데 공부하는겸 한번 짜봤다.

3번에 걸쳐 간소화 시켰다. 숫자를 함수로 만들면 더 간단해질듯.... 

//아...이미진 좀 다른데? ㅋㅋㅋ

JQuery
$(document).ready(function(){
 $('#tab ul>li').click(function(){
  $('#tab ul>li').removeClass('on');
  $(this).addClass('on'); 
  $('#tabDocBox > div').removeClass('block'); 
 });  
 $('#tabDoc1').click(function(){  
  $('#tabDocBox .Doc1').addClass('block');   
 });
 $('#tabDoc2').click(function(){  
  $('#tabDocBox .Doc2').addClass('block');  
 });
 $('#tabDoc3').click(function(){  
  $('#tabDocBox .Doc3').addClass('block');   
 });
});

style
li {list-style:none;}
.block {display:block !important;}
#tab {overflow:hidden;}
#tab li{float:left; width:100px; height:35px; text-align:center; border:1px #ccc solid; cursor:pointer;}
.Doc1,
.Doc2,
.Doc3 {height:50px; border:1px red solid; display:none;}
.on {font-weight:bold;}

Html
<div id="tab">
   <ul>
    <li class="on" id="tabDoc1">menu1</li>
    <li id="tabDoc2">menu2</li>
    <li id="tabDoc3">menu3</li>
   </ul>
    </div>
    <div id="tabDocBox">
     <div class="Doc1 block">
   내용1 간소화 시작
     </div>
   <div class="Doc2">
   내용2 간소화 하고있냐?
     </div>
   <div class="Doc3">
   내용3 간소화 종료
     </div>
   </div>

'jQuery' 카테고리의 다른 글

텍스트 메뉴 롤오버  (0) 2011.06.01
슬라이드 메뉴  (0) 2011.05.23
JQuery 플러그인  (0) 2011.04.06
tree 메뉴  (0) 2010.10.14
슬라이드 스타일 1  (0) 2010.10.08
: