보통 css 에서 폰트 속성을 지정할 때 아래와 같이 하지요...

{font-family:굴림; font-size:9pt; color:black}

이것을 좀 더 간단하게 지정할 수 있습니다.

{font:9pt "굴림"; color:black}
by Anna 안나 2008. 6. 30. 18:13
현재 작업하고있는 사이트의 자체 요구사항(Needs For Me)중 한가지가 크로스 브라우징이다. 모든 브라우저에서 이상없게 구현하기 위해선 CSS가 걸레가 될듯 싶고, 최소한 Firefox, IE6, IE7, Opera까지는 동일한 Layout을 보장받고 싶다. 작업하면서 특정 브라우저에 맞춰서 작업하다보면 다른 브라우저에선 여지없이 깨지는 상황을 겪게되었다. 가장 적은 삽질로 동일한 Layout을 보장 받을 수 있는 나름의 Tip은 Firefox를 base로 작업하고 IE7 Hack적용, IE6Hack적용 즉, 첫번째 작업의 기본브라우저를 Firefox로 한다. 두번째 IE7에서 Layout을 확인하고, 깨지는 부분에 대해서 IE7용 Hack을 적용한다. 세번째 IE6에서 Layout을 확인하고, 깨지는 부분에 대해서 IE6용 Hack을 적용한다. 이런경우 오페라는 거의 보너스로 Layout이 잘 맞는다. 더불어 IE7, IE6 적용 Hack은 다음과 같다. Only IE7 : *:first-child+html #dividname {

} Only IE6: *html #divname {

} --------------------------------------------- 이상 간단한 팁이었습니다. 꼭 위처럼 하지 않으셔도 됩니다. 하지만, 제딴엔 가장 효율적이라 생각되는 방법을 적어놓은것 뿐입니다.^^
by Anna 안나 2008. 6. 21. 19:59
패딩과 마진의 문제라면 DTD 설정을 하시면 파폭과 익스 모두에서 동일한 "박스모델"을 가지게 됩니다.
이부분을 검색 해보시면 보다 많은 정보를 접하실수 있습니다.

익스 : width = 박스의 width (패딩 마진등의 영향을 받지 않습니다 )
그외 브라우져 : width = width + padding + margin + border
여기서 DTD (검색신공)를 선언 해주시면
익스 + 그외 브라우져에서 동일한 박스 모델을 가져요.
by Anna 안나 2008. 6. 21. 19:23
IE7 의 렌더링 방식이 IE6과 다르다.
CSS testing of Selector and Pseudo selectors 를 보면 IE7 은 FF 에 더 가까와 지고 있다.
그래서 바야흐로 브라우저 3개를 켜고 코딩을 해야하는 시대가 온 것이다.

이를 해결하기 위한 방법 중 하나는 Selector Hack 을 이용하는 것이다. .context_bar_form_field
{
height: 15px; // 모든 브라우저
#height: 15px; // IE 전용
_height: 21px; // IE6.0 과 이전버젼용
} 우선 파폭에 맞추어 개발을 한 후 E7 에서 점검한다. 수정할 부분이 있다면 # 접두어를 붙여 수정해 준다. #이 붙은 것은 FF 에서 무시한다. 하지만 IE 는 재설정 해준다.
다음에 IE6 을 열고 수정하면서 _ 를 접두어로 붙여 새로 재설정 한다. IE7 은 '-' 가 붙은 것을 무시한다.

또 다른 방법은, .title h3 {height: 21px; }
.title > h3 {height: auto; min-height: 21px; }
이렇게 하는 방법도있다. 맨 아래줄은 파이어폭스와 IE7만 적용된다.

한가지 주의할 점은
body
{
text-align:-moz-center; /*FF*/
#text-align:center; /*IE */
}
속성 키워드 자체가 다른 것이 많다. 주의 할 것! 위에서 처럼 속성값 자체가 다른 경우가 있다. 그러니 안된다고 hack 만 쳐다보고 있으면 밤세야 한다.

내가 보기에 가장 좋은 방법은 Conditional Comments 를 사용하는 것이다.
복잡하게 한 파일에 구질구질 작성하지 말고 파일을 분리해 버리는 것이다.

참고 :http://webborg.blogspot.com/2007/01/css-compatibility-ie6-ie7-firefox-and.html
<head>
<title>my css hacked page</title>
<link rel="stylesheet" type="text/css" href="styles.css" />
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" href="iehacks.css">
<![endif]-->
<body>
<div class="watermark">....</div>...
이렇게 분리해서 각개격파하는 것이 좋을 듯 싶다. E 용인 Expression을 사용하여 본다면 a { expression(어쩌구 문법) } 이렇게 해서 a 태그 즉, 링크에 걸린 항목에 대하여 Expression은 적용 시킬 수 있을것입니다. 그럼 예로.. 링크주소중에 pdf 라은 확장자가 있다면 링크 앞에 자동으로 PDF 아이콘을 띄워봅시다. a {
padding-left: expression(this.href.indexOf('.pdf') > 0 ? '20px' : '');
background: expression(this.href.indexOf('.pdf')>0 ? 'transparent url(pdf.gif) no-repeat center left' : '');} 이건 IE 용입니다. Firefox에선 이렇게 하시면 됩니다. a[href $='.pdf']{
padding-left: 20px;
background: transparent url(pdf.gif) no-repeat center left;} 음... 불여시에서 사용하는게 훨씬 간편하네요 @@;; [href $='.pdf'] 이 구문에서 $는 .pdf로 끝나는 것을 의미합니다. .pdf로 시작하는 것을 찾으려면 $대신에 ^을 사용하시면 됩니다. [href ^='.pdf']가 되겠죠. 그냥 포함 되어 있는지를 찾는 거라면 *을 사용하시면 됩니다. <style>
a[href $='.pdf']{
padding-left: 20px;
background: transparent url(pdf.gif) no-repeat center left;}

a {
padding-left: expression(this.href.indexOf('.pdf') > 0 ? '20px' : '');
background: expression(this.href.indexOf('.pdf')>0 ? 'transparent url(pdf.gif) no-repeat center left' : '');}
</style> <a href="test.pdf">test1</a><br/><a href="test.gif">test2</a>
by Anna 안나 2008. 5. 31. 13:26
원문 보기
by Anna 안나 2008. 5. 30. 23:17
<select name=Target1 style="font-family:굴림; font-size:10; color:#ffffff; background-color:#000000;">
<option selected>menu</option>
<option>menu1</option>
<option>menu2</option>
<option>menu3</option> </select> 링크 걸기
<select name=Target1 onblur="this.selectedIndex = 0" onchange="window.open(this.options[this.selectedIndex].value,'main')" style="font-family:굴림; font-size:10; color:#ffffff; background-color:#000000;">
<option selected>menu</option>
<option value=문서경로>menu1</option>
<option value=문서경로>menu2</option>
<option value=문서경로>menu3</option> </select> font-family : 글꼴
font-size : 글자 크기
color : 글자 색
background-color : 글상자 배경 색
onmouseover backgroundColor : 마우스를 가져갔을 때의 버튼 색
onmouseover backgroundColor : 마우스를 가져가지 않았을 때의 버튼 색
border-width : 테두리 투께
transparent : 투명
by Anna 안나 2008. 5. 30. 23:00
CSS hack 이란?
브라우저의 구현 차이나 버그를 이용하여 CSS의 적용대상에서 일부 브라우우저를 제외하거나, 특정 브라우저만을 대상으로 CSS를 적용하는 방법을 'CSS핵' 이라고 합니다.
크로스브라우징을 위한 응급대처 같은 방법이라고 생각하시면 되고, 핵일부는 CSS의 문법상 올바르지 않은 것도 있을 수 있습니다.

여러 핵들이 있지만, 자주 사용하는 핵을 살펴보겠습니다.

1. 스타핵 (star hack)
셀렉트 앞에 *html 을 붙히며 Win IE 4~6, Mac IE 4~5 등에 스타일이 적용되며 다른 브라우저에는 적용되지 않습니다.
view plaincopy to clipboardprint? *html p{ padding:3px; } /* 맨앞에 *html 을 붙혀줍니다. */ *html p{ padding:3px; } /* 맨앞에 *html 을 붙혀줍니다. */
2. 언더스코어 핵 (underscore hack)
속성의 가장 앞부분에 언더스코어(_)를 붙이며 Win IE 4~6 등에서 스타일이 적용되고 다른브라우저에서는 적용되지 않습니다.
view plaincopy to clipboardprint? p { _padding:3px; } /* padding 앞에 _ 를 붙혀줍니다. */ p { _padding:3px; } /* padding 앞에 _ 를 붙혀줍니다. */
3. 해시 핵 (hash hack)
속성의 앞에 # 를 붙이며 Win IE 4~6, Mac IE 5, Opera 7, Mozila, Firefox 등에 스타일이 적용되고 다른 브라우저에는 적용되지 않습니다. (CSS의 문법상 속성의 앞에 #를 두는 것은 문법적으로 바르지 않습니다.)
view plaincopy to clipboardprint? p { #padding:3px; } /* padding(속성) 앞에 #를 붙힙니다. */ p { #padding:3px; } /* padding(속성) 앞에 #를 붙힙니다. */
4. 스타 7 핵 (star 7 hack)
셀렉트 앞에 html* 를 붙이며 Win IE 5.5~6, Map IE 5, Safari 등에서 스타일이 적용되고 다른 브라우저에서는 적용되지 않습니다. html* 과 선택자 사이에 공백을 두시면 안됩니다.
view plaincopy to clipboardprint? html*p { padding:3px; } html*p { padding:3px; }
5. IE7 전용핵셀렉트 앞에 *:first-child+html 를 붙히며, IE 7에만 적용이 됩니다.
view plaincopy to clipboardprint? *:first-child+html p { padding:3px; } *:first-child+html p { padding:3px; }
이밖에도 브라우저 배제를 위한 핵과 박스모델 핵 패스필터 등이 있지만, 제가 주로 사용하는 핵을 위주로 적어봤습니다.

hack 을 자주 사용하면 새로운 브라우저에 영향을 끼칠수도 있으며, 업무효율을 떨어뜨리는 요인이 될수도 있으니, 응급대처 방법이라고 생각하시고 사용하시는게 올바른 판단이라고 생각됩니다.
by Anna 안나 2008. 5. 30. 22:59
TRIO HTML 매뉴얼 Netscape - Javascript Guide http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/ - Navigator object hierarchy Diagram http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/navobj.htm#1005423 Mozilla(Firefox) - Gecko DOM Reference http://developer.mozilla.org/en/docs/Gecko_DOM_Reference - HTML Element Cross Reference http://developer.mozilla.org/en/docs/HTML_Element_Cross_Reference - Core JavaScript 1.5 Reference http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference - JavaScript Methods Index http://developer.mozilla.org/en/docs/JavaScript_Methods_Index
- JavaScript Properties Index http://developer.mozilla.org/en/docs/JavaScript_Properties_Index - CSS References http://developer.mozilla.org/en/docs/Category:CSS:References MSDN HTML and DHTML Reference - Objects http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects.asp
- Properties http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties.asp
- Methods http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/methods.asp
- Collections http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/collections.asp
- Events http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/events.asp
- HTML Elements http://msdn.microsoft.com/workshop/author/html/reference/elements.asp?frame=true
by Anna 안나 2008. 5. 9. 17:03
브라우저의 버그를 hack으로 해결할 수 있는 부분이 많이 있습니다만 그보다 사이트의 CSS구조를 설계할때 각 브라우저의 속성을 파악해고 조금만 더 주의해서 설계를 하시면 hack을 사용하지 않고도 해결할 수 있는 부분이 많이 있습니다. hack을 사용할때는 조금 더 신중하게 사용하시는게 좋습니다. 특히 예전 버전의 브라우저에 적용되었던 hack이 새로운 브라우저에 영향을 끼칠 가능성이 있으며 CSS를 변경 할 때 업무효율을 저하시키는 한 요인이 될 것 입니다.
Intenet Explorer계열의 브라우저에서 제대로 표시가 되지 않는 경우에는 일단 width값이나 float관련 설정을 변경해 보시는 것도 하나의 방법인 것 같습니다. 혹시 Intenet Explorer에서 float와 margin을 같은 방향으로 설정했을때 문제가 생긴 경우라면 이 포스트를 참조하시기 바랍니다. Netscape 4 제외시키기 Netscape 4은 media속성값에 “screen”이외의 값이 올 경우 읽어 들이지 못하는 것을 이용한 방법이다. <link rel="stylesheet" type="text/css" href="/css/style.css" media="all" /> 이나 <link rel="stylesheet" type="text/css" href="/css/style.css" media="screen, tv" /> 라고 지정할 경우 Netscape 4은 읽어 들이지 못한다. 부분적으로 읽어들이지 못하게 하는 경우에는 Caio’s hack인 /*/*/를 이용한다. 보통 코멘트는 */으로 닫지만 /*/으로 닫게 되면 Netscape 4에서는 인식되지 않는다. 그 뒤에 평상시의 코멘트 /* */를 적어두면 그 뒤의 스타일은 Netscape 4에서도 문제없이 적용된다. p {
/*/*/ color:white; /* */
} Mac IE 4.5, Netscape 4 제외시키기 @import룰로 url()함수를 이용하여 외부 스타일시트를 이중인용부호로 지정한다.
Mac IE 4.5는 @import에 url()함수를 이용하는 경우, 단일 인용부호와 인용부호가 없는 것이 아니면 읽어 들이지 못한다. Netscape 4은 @import를 지원하지 않는다. @import url("/css/style.css") Mac IE 5 제외시키기 CSS소스 안의 코멘트 서식을 /* \*/ 이라는 방식으로 기술한다. holly hack이라고 하며 그 뒤에 평상시의 코멘트 /* */를 적어두면 그 뒤의 스타일은 Mac IE 5에서도 문제없이 적용된다. p {
/* \\*/ color:white; /* */
} Win IE 4~5 제외시키기 셀렉터 바로 뒤에 /**/라고 적는다. p/**/ { color:white;} Win IE 4~5, Mac IE 4.5~5 제외시키기 프로퍼티와 값을 구분하는 콜론(;) 앞에 코멘트에 스페이스를 포함하여 /* */라고 적는다. p { color/* */:white;} Win IE 4~6, Mac IE 4, Netscape 4 제외시키기 셀렉터 앞에 html>body를 붙인다. html>body p { color:white;} Win IE 6 제외시키기 프로퍼티와 값을 구분하는 콜론(;)의 앞에, 스페이스와 코멘트를 /**/라고 적는다. p { color /**/:white;} star hack 셀렉트 앞에 *html를 붙이면, Win IE 4~6, Mac IE 4~5 등에는 스타일이 적용되고, 그 외의 브라우저에서는 적용되지 않는다. *html p { color:white; } underscore hack 프로퍼티의 가장 앞부분에 언더스코어(_)를 붙이면, Win IE 4~6에서 스타일이 적용되고, 다른 브라우저에서는 적용되지 않는다. p { _color:white; } hash hack 프로퍼티의 앞에 ?(#)을 붙이면, Win IE 4~6, Mac IE 5, Opera 7, Mozilla, Firefox에서는 스타일이 적용되고, 다른 브라우저에는 적용되지 않는다. p { #color:white; } star 7 hack 셀렉트의 앞에 html*을 붙이면, Win IE 5.5~6, Mac IE 5, Safari 등에서 스타일이 적용되고, 다른 브라우저에서는 적용되지 않는다. html*과 셀렉터사이에 스페이스를 넣지 않는다. html*p { color:white; } xmlns hack 속성셀렉터를 이용하여, html요소에 붙이는 xmlns속성을 스타일적용을 위하여 사용하는 방법.
Mozilla, Fire-fox, Opera 7/8, Safari, IE 7 등 속성셀렉터를 서포트하는 브라우저에서는 스타일이 적용되고, 다른 브라우저에서는 적용되지 않는다. html[xmlns] h1 { color:red; } :root hack 셀렉터의 앞에 :root를 붙이면, Mozilla, Firefox, Mac IE 5, Safari 등 :root유사클래스를 지원하는 브라우저에만 스타일이 적용되고, 다른 브라우저에서는 적용되지 않는다. :root h1 { color:red; } Tantek box model hack voice-family프로퍼티를 이용한 가장 유명한 박스모델핵. div#content {
width:500px;
voice-family: "\"}\"";
voice-family:inherit;
width:400px;
} Win IE 5용 패스필터 @media tty {
i{content:"\";/*" "*/}}; @import '/css/style.css'; {;}/*";}
}/* */ Win IE 5.5용 패스필터 @media tty {
i{content:"\";/*" "*/}}@m; @import '/css/style.css';/*";}
}/* */ Win IE 5-5.5용 패스필터 @media tty {
i{content:"\";/*" "*/}}@import '/css/style.css';/*";}
}/* */ 모던브라우저용 패스필터 @import "null?\"\{";
@import "/css/style.css";
@import "null?\"\}"; 이 이외에도 많은 핵(hack)이 존재한다. CSS Filters (dithered.com)에 다양한 CSS hack이 잘 정리되어 있으므로 참고하시길… 2006년 7월 18일, IE7용의 핵(hack)을 추가. IE7에만 적용 IE7에만 다른 스타일을 적용하는 방법은 해당 셀렉터의 앞에 *+html body 이나(*+html body는 Opera8~에도 적용되어 버리는 문제가 있기에 *+html>/**/body로 Opera8~ 전용 스타일을 기술하여야 한다. 참조:IE7のCSSバグとOpera CSS Hack) *:first-child+html 을 기술한 다음 해당 셀렉터와 스타일을 작성하면 된다. 예를 들어 #banner라는 id셀렉터에 적용시키는 경우 *:first-child+html #banner {
      :
  [IE7용 스타일을 기술]
      :
} 라고 기술한다. IE7이외의 브라우저를 위한 원래의 #banner 스타일 설정은 IE7용 스타일 설정 앞에 기술한다(순서가 바뀌면 원하는 효과를 얻지 못한다. 참조:IE7 の CSS ハック) #banner {
      :
  [IE7이외의 브라우저를 위한 스타일을 기술]
      :
}
*:first-child+html #banner {
      :
  [IE7용 스타일을 기술]
      :
} IE 6 and below (IE6이하) * html IE 7 and below (IE7이하) *:first-child+html, * html IE 7 only (IE7전용) *:first-child+html IE 7 and modern browsers only (IE7과 모던브라우저) html>body Modern browsers only (not IE 7) (IE7이외의 모던 브라우저) html>/**/body Recent Opera versions 9 and below (최근의 Opera9이하)
Opera 9와 Safari 동시적용 html:first-child Safari에만 적용
Opera 9와 Safari 동시적용 /* XXX \*/로 코멘트 아웃하고 html:\66irst-child를 덧붙임으로써 Safari에만 CSS가 적용된다. /* safari only \\*/
html:\\66irst-child div.globalContainer{
margin: 0 0 0 18px;
}
/* end */ 내용중 잘못된 부분이나 수정, 추가가 필요한 부분이 있으시면 의견 부탁드립니다. Opera와 Safari용 css hack이 동시 적용이 되는 문제를 김진태님이 지적해 주셨습니다.
by Anna 안나 2008. 4. 12. 22:23
http://www.pageoff.net/666
by Anna 안나 2008. 4. 12. 22:20
<a href="#" onclick="if(document.all) window.external.AddFavorite('http://dayeong.net', '다영쩜넷')">다영쩜넷 즐겨찾기 추가</a>

위와같이 소스를 적용하신 후에
다영쩜넷 즐겨찾기 추가를 클릭하시면
주소는 http://dayeong.net, 제목은 다영쩜넷으로 즐겨찾기에 추가됩니다.
by Anna 안나 2008. 4. 6. 04:43
1.레이어를 만듭니다. <Div id="Pop" style="position:absolute; left:100px; top:100px; width:100px; height:100px; z-index:1;"></Div> Pop라는 이름의 레이어를 이렇게 생성합니다. 윈도우창 왼쪽에서 100px 위에서 100px 떨어진 곳에 시작하는 레이어죠. 2.레이어속에 원하는 내용물을 넣어줍니다. <Div id="Pop" style="position:absolute; left:100px; top:100px; width:100px; height:100px; z-index:1;"> <img src="이미지주소"> </Div> 3.레이어의 초기상태를 보이지 않게 숨겨둡니다. <Div id="Pop" style="position:absolute; left:100px; top:100px; width:100px; height:100px; z-index:1;display:none;"> <img src="이미지주소"> </Div> 4.이제 클릭할 경우 미리 만들어진 저 Pop 라는 레이어를 보여주면 됩니다. 간단한 스크립트를 작성하겠습니다. <script> function ViewLayer(){ document.getElementById("Pop").style.display='inline' } </script> 5.작성한 펑션을 불러오면 원하시는 작업이 끝이 납니다. <a href="javascript:ViewLayer();">열어주세요</a> ============================================================ 간단하게 작성한것들이 사용함에 불편함이 있을거예요. 예를들어 열었는 레이어를 닫아준다던가 하는 그런것들요. 자 그럼 스크립트를 조금 수정해서 사용하기 편하게 만들어 보겠습니다. <script> function ViewLayer(){ //만일 Pop라는 녀석이 닫혀있다면?? if(document.getElementById("Pop").style.display=="none"){ //열어주어라 document.getElementById("Pop").style.display='inline' //그렇지 않은 모든 경우라면?? }else{ //닫아주어라 document.getElementById("Pop").style.display='none' } } </script> 이렇게 작성하시면 한번 클릭하면 열리고 한번 더 클릭하면 닫히게 됩니다.
by Anna 안나 2008. 3. 21. 20:13
Div & Rounded box | Page Layout Series Part IX Home > Document > CSS > Page Layout Series > PLS Part IX


둥근 모서리 모서리가 둥근 box라는 물건이 언제 부터인지 유행인가 봅니다. 이런 형태의 box(rounded box)가 나온 시기는 대충 Windows XP 라는 OS가 나오면서 부터인 걸로 기억합니다만... 물론 실제로 그런 건지는 모르고 순전히 제 추측 에 불과 하지만 아마 2002 년도 전후가 아닌가 합니다. 제가 처음 둥근 모서리의 box를 보았을 때 제 스스로는 별 다른 감응이 없었습니다. 저는 지금도 XP를 쓰고 있지 않지만 그 당시에도 XP를 보고 '모서리가 둥글 둥글해 진 것 하고, icon 바뀐 것 말고 뭐가 달라졌지? 모서리가 둥글면 머 쩜 나은가. 저렇게 둥근 모서리를 만들기 위해서 programing 하는데 과연 얼마 만큼의 code가 더 들어 갔을까. 차라리 딴 데 신경 쓰는게 났지 않을까. ' 라는 생각이 들더군요. 이후의 진행을 보면 아시겠지만 program code가 아닌 HTML code로 둥근 모서리 box를 만드는 데도 만만치 않은 작업이 필요합니다. 그런데 둥근 모서리 box가 처음 등장한 이후로 Yahoo나 Naver 등의 포탈 사이트를 비롯하여 많은 사이트들이 rounded box를 전체 또는 일부에 사용하기 시작해서 지금은 '웬만해선 모서리가 둥근 box의 사용을 말릴 수 없는' 상태가 된 것 같습니다.

하지만 제 성격이 모난 탓 인지 아니면 미적인 감각이 남 보다 떨어져서 인지 저는 아직도 둥근 모서리 box를 별로 좋아하질 않아서 모서리가 둥근 테이블 에서와 같이 하나의 예를 들 경우에나 쓰든지 나중에나 쓸까 아직은 '모서리를 둥글게 깍을 시간이 있으면 그 시간에 차라리 딴 걸 하겠다!' 라는 생각이 드는 걸 보니 저도 참 미적인 부분에 대한 투자에 인색한 모양 입니다. 그럼에도 불구하고 왜 PLS Part IX 의 제목을 Div & Rounded box 로 정하고 이걸 다루려고 하느냐 하면 Div와 Table의 특성을 이해 하는데 아주 좋은 소재라고 판단이 되었기 때문 입니다. Div & Table and Rounded box 혹시 CADD(Computer Aided Design & Drafting)에 대해 아는 분 이라면 둥근 모서리 box 정도는 아주 가볍게 여기리라 봅니다. CAD 에서는 fillet 이라는 모서리를 둥글게 깍는 명령이 있어서 쉽게 둥근 모서리 box를 만들 수 있습니다. 저도 처음에 둥근 모서리 box(이후 'rounded box' 로 부르겠음)를 봤을 때 'HTML이나 CSS에도 fillet 같은 property가 있으면 좋겠다.' 라는 생각을 해 본 적이 있는데, 다행스럽게도 향후에 발표될 CSS Level 3(CSS3) 에서 border-radius 라는 spec이 생길 예정이라니 기대해 봄 직 합니다만 문제는 브라우저 들이 그 spec을 지원해 주느냐 겠지요. 하지만 현재의 HTML 이나 CSS 자체는 그런 property를 가지고 있지 않기 때문에 rounded box를 꼭 써야 될 필요가 있는 사람들은 CSS3가 나올 때 까지 마냥 기다릴 수는 없으므로 어떤 방법으로 이 물건을 쓰긴 써야 겠는데, HTML과 CSS를 사용해서 rounded box를 만들기 위해서는 어느 정도의 노력이 불가피 하다고 하겠습니다. Rounded box를 만드는 방법은 여러 가지가 있는데 우선 문서 중에서 rounded box 를 사용하는 부분의 상황이 어떤 경우인가에 대해 생각해 볼 필요가 있습니다. 즉, 아래와 같이 Box size의 고정 여부에 따라 가로 와 세로가 고정 가로는 고정, 세로는 가변(可變) 가로는 가변, 세로는 고정 가로와 세로 모두 가변 Box 내부와 외부 background-color 의 고정 여부에 따라 내부와 외부 모두 고정 내부는 고정, 외부는 가변(可變) 내부는 가변, 외부는 고정 내부와 외부 모두 가변 이렇게 위와 같이 분류할 수 있겠습니다. 따라서 가로와 세로의 size가 모두 고정이면서 내부와 외부의 background-color가 모두 고정인 경우는 '1a'와 같이 표기해서 구분하겠습니다. 그러므로 rounded box를 사용하려고 하는데 자기의 경우가 어떤 경우인지는 위와 같이 분류하면 거의 해결이 되겠죠. 그럼 위의 분류에 의해서 Case '1a' & '1b' 내용이 들어 가는 곳 이 경우는 비교적 간단합니다. 우선 왼쪽의 그림과 같이 원하는 크기와 색상 (width:150px, height:100px; 내부 background-color: silver 로 가정하겠습니다.)으로 rounded box를 image file로 만듭니다. 혹시 rounded box image file을 어떻게 만드는지 가르쳐 달라고 하시지는 않겠죠? 그건 각자의 역량에 달려 있으므로 각자 해결 하시기 바랍니다. 마음 같으면 그 것도 가르쳐 드리고 싶지만 여기서는 HTML, CSS 등의 웹 언어로 범위를 국한 하도록 하겠습니다. 하지만 혹시 필요하다면 http://www.nutrocker.co.uk/corners.html에서 일반적인 named color를 사용하여 미리 만들어 놓은 rounded box 에 사용 할 수 있는 corner image들을 압축 파일 형태로 제공하고 있으니 참고 하시지요. 제 경우에는 이런 image를 만들기 위해서 Fireworks를 사용하는데 여러분 들이 어떤 프로그램을 쓰건 이런 image를 만들 수 만 있다면 상관 없습니다. 왼쪽 그림(corners/150_100_c0c0c0_in.gif)의 경우 rounded box 내부는 silver(#c0c0c0)로 채우고 외부(모서리)는 투명(transparent)으로 처리한 gif file 입니다. 따라서 외부 background-color를 white, beige 등으로 바꾸어서 재사용(re-use)이 가능 하므로 '1a' 뿐만 아니라 '1b' 도 동시에 해결 할 수 있겠죠. Code는 아래와 같습니다. Case '1a', '1b' <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<title>Case 1a1b</title>
<style type="text/css">
<!--
.case_1a1b{
background-image:url(corners/150_100_c0c0c0_in.gif);
width:130px; /* 표준 모드이므로 padding 10px를 감안하여 150px - 20px = 130px로 지정 */ height:80px; /* 표준 모드이므로 padding 10px를 감안하여 100px - 20px = 80px로 지정 */ padding:10px; } --> </style> </head> <body> <div class="case_1a1b">내용이 들어 가는 곳</div> </body> </html>

Case '1c' 내용이 들어 가는 곳 이 번 경우는 위의 예제인 case '1a1b' 의 경우와는 반대로 오른쪽 그림(corners/150_100_c0c0c0_out.gif) 과 같이 내부 배경색은 투명하고 외부의 모서리는 배경색을 가진 gif file 로 처리하여 내부를 white, beige 등으로 변경할 수 있습니다. 또한 이 경우에는 case '1a', '1b'와 마찬 가지로 gif file이 div의 배경으로 깔려 있기 때문에 div 내부에 내용을 넣을 수 있다는 장점이 있습니다. Case '1d' 또는 'd' 이런 경우가 생길 수 있을까요? 'd'의 경우와 같이 내부와 외부의 background-color 모두가 가변인 경우의 처리 방법은 제 머리로는 도저히 떠오르질 않는군요. 그런 방법을 아는 고수께서 제발 쩜 가르쳐 주시기 바랍니다. 'd'의 경우는 사실 분류를 하다보니 생긴 case로서 그야말로 'CSS3' 의 border-radius 같은 것이 나오지 않는 이상 해결할 수 없을 것 같습니다. 따라서 case 'd'의 경우는 이후로 생각하지 않겠습니다. Case '2a', '2b', '2c' 이 경우는 case '2c' 를 예로 들면 되겠습니다. 즉, width:200px 고정에 내부 background-color 가변, 외부 배경색 고정의 경우가 되겠네요. 여기에 사용될 그림은 아래의 와 가 되겠습니다. 아래의 code를 실행해 보시죠. Case '2c' <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<title>Case 2c</title>
<style type="text/css">
<!--
.top_div{
background:#fff url(corners/150_top_out.gif) top center no-repeat;
width:130px; /* 표준 모드이므로 padding 10px를 감안하여 150px - 20px = 130px로 지정 */ } .bottom_div{ background:url(corners/150_bottom_out.gif) bottom center no-repeat; width:130px; /* 표준 모드이므로 padding 10px를 감안하여 150px - 20px = 130px로 지정 */ padding:10px; } --> </style> </head> <body style="background-color:gray"> <div class="top_div"> <div class="bottom_div">내용이 들어 가는 곳</div> </div> </body> </html>

DIV(DIVision marker) 의 특성 위의 실행 결과가 이해가 되시겠죠? 이런 방식으로 같은 block level box속에 block bevel box를 내포(nested)할 수 있는 element는 div 뿐이며, 같은 크기의 box를 box 자신 속에 내포 시켜서 같은 위치에 포개어 놓을 수 있는 특성은 오직 div 만이 가지고 있습니다. 즉, 위 결과를 나누어서 표현해 보면 아래와 같이 왼쪽 2 개의 box가 같은 위치에 포개어 졌다는 것을 알 수 있습니다. 물론 2 개 이상도 얼마든지 가능 하구요. + = 단, 위와 같이 같은 크기의 div를 같은 위치에 일치 시켜서 포개어 놓기 위해서는 아래의 사항을 유의해야 하며, 이 PLS 에서는 표준 모드(IE 의 !DOCTYPE switch on)를 기준으로 하므로 만약 표준 모드에 대한 내용을 모르고 이 페이지를 보신다면 PLS Part I 부터 보셔야 되겠습니다. 가장 밖에 있는 div를 제외한 내부에 들어 가는 나머지 div(들)에는 margin을 주지 말 것.
내포된 div (들)에 margin을 주면 각 모서리에 지정한 corner image들이 주어진 margin 만큼의 틈을 가지게 됩니다. 최 상위 div에 padding 을 주지 말 것.
위의 경우와 반대로 생각하면 설명이 되겠습니다. 최 상위 div를 제외한 내부 div에 border 를 주지 말 것.
이 또한 틈이 생기지 않게 하기 위한 요소 입니다. 최 하위 div에 padding을 줄 것.
만약에 rounded box 속에 들어갈 내용을 padding을 주어 일정 간격을 띄우고 싶으면 최 하위 div에 padding을 주어야 div box 사이에 틈이 생기지 않습니다. 이 역시 위의 두 항목과 같은 맥락 입니다. Div의 특성에 대해서는 이미 이 사이트 HTML > 고급 과정 > Division marker 에서 div와 span을 비교하여 설명한 바 있지만 그 때는 HTML 의 범위 내에 국한된 것 이었고, 이제 CSS 로 범위를 넓혀서 설명하면 대략 아래와 같이 DIV 는 기본값(intrinsic value)으로 주어진 margin이 없고, positioning 같은 방법을 쓰지 않아도 같은 위치에 같은 크기의 box를 포개어 놓을 수 있는 block level element. 라고 할 수 있습니다. Web design을 도시계획과 비교해 보면, 어떤 도시를 개발 한다고 했을 때 도시 전체의 기능이나 성격을 구상하는 master plan을 만들고, 주거 지역, 상업 지역 등으로 구획 정리를 한 다음, 구획된 면적에 정해진 규칙 대로 건물을 앉히게 되는데 div를 여기에 비유하면 하나의 구획 이라고 할 수 있습니다. 즉, 하나의 아파트 단지를 예로 들면 div는 아파트 단지의 대지 경게선(border)과 같다고 해도 무리가 아닙니다. 대지 경계선 이라는 실체는 분명히 있지만 직접적으로 눈에 먼저 보이는 것은 건물인 것 처럼 page layout 에서 div의 역할은, 건물처럼 사람이나 가구 등의 내용물을 직접 담고 있지는 않지만 분명한 경계선(border)을 가지고 있습니다. 그렇다면 div 속의 div는 어떻게 비교하면 될까요. 주거의 형태에 아파트 같은 공동 주거 단지만 있는게 아니고, 단독 주택 단지도 있는 것 처럼 div 속의 div는 단독 주택 단지 속의 일개 택지라고 하면 되겠군요...^^ Case '3a', '3b', '3c' 이 경우는 case '2a', '2b', '2c' 와 비교했을 때 90° 회전된 것 말고는 같으므로 생략하고, code 만으로 설명하면 아래와 같습니다. 예를 들어 height:200px의 rounded box를 만든다면 아래와 같을 것 입니다. 입력 ...
...
.left_div{
background:#fff url(그림이름.gif) left center no-repeat;
height:200px;
width:필요한px;
}

.right_div{
background:url(그림이름.gif) right center no-repeat;
width:필요한px;
height:200px;
padding:10px;
}
...
... Case '4a', '4b', '4c' 이 3 가지의 경우 '4b', '4c' 를 예로 들면 모두 해결이 되겠죠. 방법은 위에서 사용한 방법과 동일합니다. 다만 width와 height가 고정되지 않고 가변적이므로 각 4개의 모서리를 따로 처리해야 되는 번거로움이 있습니다만, 일단 만들어 놓으면 어디에나 쓸 수 있기 때문에 가장 바람직한 방법이라고 할 수 있습니다. '가변적' 이라는 것... 제가 가장 좋아하는 방법입니다. 지금 당장은 정해진 크기 말고는 쓸 일이 없을 것 같아도 사이트를 지속적으로 운영하다 보면 이상하게도 예외적으로 가변적인 크기를 쓸 일이 생기거든요. 희한한 일 입니다. 가로 세로 가변 크기의 box를 만들려면 우선 아래와 같이 4개의 corner image가 필요합니다. 아래는 case '4c'의 경우에 사용되는 image 들 입니다. tl.gif + tr.gif + bl.gif + br.gif = 이 image 들의 이름은 위에 표기한 것과 같이 예를 들어 tl.gif 의 경우 top left(좌측 상단) 로 CSS의 background-position:top left; 로 지정했을 경우의 첫 글자를 붙여서 지정 했습니다. 그럼 아래의 code를 '코드 실행기'로 실행해 봅시다. 실행하고 '코드 실행기'의 창 크기를 크게 또는 작게 resizing 해 보면 창 크기의 변동에 따라 rounded box의 크기가 신축성(flexibility)있게 변하는 것을 확인할 수 있습니다. 입력 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<title></title>
<style type="text/css">
<!--
.tl_gray{background:#fff url(corners/gray/tl.gif) no-repeat top left;}
.tr_gray{background: url(corners/gray/tr.gif) no-repeat top right;}
.bl_gray{background: url(corners/gray/bl.gif) no-repeat bottom left;}
.br_gray{background: url(corners/gray/br.gif) no-repeat bottom right;}
-->
</style>
</head>
<body style="background-color:gray;">
<div class="tl_gray">
<div class="tr_gray">
<div class="bl_gray">
<div class="br_gray" style="padding:20px;">내용이 들어 가는 곳.
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
</div>
</div>
</div>
</div>
</body>
</html>

곡면(경사면) 테두리의 anti-alias 처리과 solid 처리에 대한 고려 곡면이나 경사면을 처리하는 방법에는 anti-alias 와 solid 가 있습니다. 화면상의 화소(pixel)는 화면을 가로와 세로로 분할해서 표시(display)하기 때문에 4각형을 이루고 있습니다. 따라서 경사면의 테두리(각기 다른 색끼리 만다는 경계선)는 계단이나 톱니 처럼 각이 져 보이게 되죠. 그러므로 경사면의 경우 톱니의 거친 모양이 드러나게 되는데, anti-alias의 경우 톱니 모양의 빈 부분에 중간색 계열의 색상을 투명도 농담 등으로 처리하여 보정하므로써 부드러운 면처럼 보이게 하는 방법 입니다. 마치 바탕화면 등록정보에서 '효과 / 글꼴 가장자리 다듬기'와 같은 처리인데, anti-alias 처리를 하면 경사면이 부드러워 보이는 반면 단점이 몇 개 있는데, 그 중에 하나가 아래의 예와 같이 anti-alias 처리된 모서리의 내부 색상이 진할 경우 anti-alias 처리된 부분이 드러나게 된다는 것 입니다. anti-alias 곡면(경사면) 처리 내용이 들어 가는 곳.
내부 bgColor beige내부 bgColor gray 위의 경우내부를 gray 로 채우면 anti-alias 부분이 나타납니다. 하지만 아래와 같이 모서리의 image를 solid 로 처리하면 solid 곡면(경사면) 처리 내용이 들어 가는 곳.
내부 bgColor beige내부 bgColor gray 내부와 외부의 곡면 경계선에 아무런 틈이 생기지 않겠습니다. 정말 빈틈 없는 넘 이죠. 물론 solid의 경우 곡면이 거칠어 보인다는 단점이 있지만 말이죠. 그러니까 anti-alias와 solid의 차이는 '너의 단점이 나의 장점이고, 나의 단점의 너의 장점' 인 셈이 되겠군요. 따라서 여러분 들이 계획하는 페이지에서 둥근 모서리가 어떻게 쓰일 것인가에 따라 anti-alias와 solid 처리를 결정하면 되겠습니다. 그럼 여기에서 Div & rounded box 는 마치도록 하겠습니다. 사실 지금 쓰는 모니터가 19" 라서 1280 X 1024를 사용하고 있습니다. 그 전에는 17" 1024 X 768을 썼었는데, 19" 에 익숙해 지다 보니 화면 높이와 scroll bar 크기가 비례 한다는 것을 깜박 잊었습니다. 800 X 600 이나 1024 X 768에서 보니까 쩜 길긴 길군요... 다음의 PLS Part X 에서는 Table 과 rounded box에 대해 알아 보도록 하겠습니다.


이 문서의 저작권은 www.cadvance.org 에 있습니다.
by Anna 안나 2008. 3. 21. 18:07
일반적으로 margin과 padding을 구별하기가 힘듭니다.
간단한 예제소스를 만들어 연습하시면 이해가 쉬울것 같네요.

아래에 비교 예제를 올렸습니다.

margin : 특정 영역(box)의 바깥쪽 여백을 의미
padding : 특정 영역(box)의 안쪽 여백을 의미


((-------IMAGE-------))
by Anna 안나 2008. 3. 21. 18:05
필요에 따라 자바스크립트 php등을 부분 결합해서 많은 응용이 가능합니다

전 이것을 폴더를 담는 그릇으로 자바 스크립트를 이용해서 열림 닫힘 박스로 만들어,
쪼물딱 거리고 있는 프로그램의 서브메뉴 표현부에 쓰고 있습니다
포토샵으로 라운드를 그려놓고 확대시켜 일일이 css 픽셀을 맞춰 표현했기에 라운드가 정확합니다


장점이라면
css를 이용한 것이기에 로딩이 빠르고
혹 기타사유로 로딩이 실패해도 div로 자리매김 했기에 그림 파일로 만든 것 보다는 좀더 표현이 완만합니다
자바 스크립트나 그림파일등은 간혹 로딩중 에러가 나올수 있는고 거기에
비하면 사용하는 입장에서느 꽤 쓸모 있지 않을까 싶습니다

더블어 php 또는 자바 스크립트의 변수등을 이용해서
여러가지 사용자 정의 색을 한계 범위 없이 만들어 낼수 있습니다
ㅡ 실상 이부분 때문에 만들었구 디비와 결합해서 사용하고 있습니다
그림 파일등으로 표현하게 되면 사용할수 있는 색은 고정될수 밖에 없습니다 ㅡ

단점이라면 라운드가 고정이라는 ...
자바 스크립트의 라운드 테이블등이 나와 있기도 하지만 그보다 부드러운 표현이 가능하고 이중 테두리 구조이기에
용도에 따라 표현하기 좋을거 같습니다







<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
<head>
<style type="text/css">
body {
font: 14px Arial, Helvetica, sans-serif;
color: #000;
background-color: #fff;
}
/*
사용법: ┏━━━━━━━━━━━━ 높이와 넓이 ━━━━━━━━━━━━━┓
┃넓이 : 테이블을 감싸줄 DIV에서 조절 ┃
┃높이 : .CONTENTS에서 높이와 마진을 조절 ┃
┗━━━━━━━━━━━━ 높이와 넓이 ━━━━━━━━━━━━━┛ ┏━━━━━━━━━━━━ 바깥쪽 테이블 ━━━━━━━━━━━━━┓
┃테두리 색 : ┃
┃ .rt1에서 .rt6까지는 border-right border-left의 색을 조절 ┃
┃ .rt7 은 background-color로 라인의 색을 맞춰줌 ┃
┃ ┃
┃배경색 : ┃
┃.rt1에서 .rt6까지 background-color로 맞춤 ┃
┗━━━━━━━━━━━━ 바깥쪽 테이블 ━━━━━━━━━━━━━┛ ┏━━━━━━━━━━━━━ 안쪽 테이블 ━━━━━━━━━━━━━┓
┃테두리 색 : ┃
┃.rt1in1 에서 .rt2in4 까지는 border-right border-left의 색을 조절 ┃
┃.rt2in5 는 background-color로 라인의 색을 맞춰줌 ┃
┃ ┃
┃배경색 : ┃
┃.rt1in1 에서 .rt2in4 까지 background-color로 맞춤 ┃
┗━━━━━━━━━━━━━ 안쪽 테이블 ━━━━━━━━━━━━━┛ */ /* 바깥쪽 테이블 테이블: 시작 */
.rt1{
background-color: #fdfdfd;
border-right: 1px solid #ccc;
border-left: 1px solid #ccc;
margin : 0px 0px 0px 0px;
padding : 0px;
overflow: hidden;
height : 4px;
}
.rt2{
background-color: #fdfdfd;
border-right: 1px solid #ccc;
border-left: 1px solid #ccc;
margin : 0px 1px 0px 1px;
padding : 0px;
overflow: hidden;
height : 2px;
}
.rt3{
background-color: #fdfdfd;
border-right: 1px solid #ccc;
border-left: 1px solid #ccc;
margin : 0px 2px 0px 2px;
padding : 0px;
overflow: hidden;
height : 1px;
}
.rt4{
background-color: #fdfdfd;
border-right: 1px solid #ccc;
border-left: 1px solid #ccc;
margin : 0px 3px 0px 3px;
padding : 0px;
overflow: hidden;
height : 1px;
}
.rt5{
background-color: #fdfdfd;
border-right: 1px solid #ccc;
border-left: 1px solid #ccc;
margin : 0px 4px 0px 4px;
padding : 0px;
overflow: hidden;
height : 1px;
}
.rt6{
background-color: #fdfdfd;
border-right: 2px solid #ccc;
border-left: 2px solid #ccc;
margin : 0px 5px 0px 5px;
padding : 0px;
overflow: hidden;
height : 1px;
}
.rt7{/* 상하단 라인 */
background-color: #ccc;
margin : 0px 7px 0px 7px;
padding : 0px;
overflow: hidden;
height : 1px;
}
.rtoutLRline{/* 좌우 라인 */
background-color: #fdfdfd;
border-right: 1px solid #ccc;
border-left: 1px solid #ccc;
margin : 0px 0px 0px 0px;
padding : 0px;
overflow: hidden;
} /* 바깥쪽 테이블 테이블: 끝 */
/* 안쪽 테이블: 시작 */
.rt2in5{/* 상하단 라인 */
background-color: #000;
margin : 0px 8px 0px 8px;
padding : 0px;
overflow: hidden;
height : 1px;
}
.rt2in4{
background-color: #F2F2F2;
border-right: 2px solid #000;
border-left: 2px solid #000;
margin : 0px 6px 0px 6px;
padding : 0px;
overflow: hidden;
height : 1px;
}
.rt1in3{
background-color: #F2F2F2;
border-right: 1px solid #000;
border-left: 1px solid #000;
margin : 0px 6px 0px 6px;
padding : 0px;
overflow: hidden;
height : 1px;
}
.rt1in2{
background-color: #F2F2F2;
border-right: 1px solid #000;
border-left: 1px solid #000;
margin : 0px 5px 0px 5px;
padding : 0px;
overflow: hidden;
height : 2px;
}
.rt1in1{
background-color: #F2F2F2;
border-right: 1px solid #000;
border-left: 1px solid #000;
margin : 0px 4px 0px 4px;
padding : 0px;
overflow: hidden;
height : 1px;
} .rtinLRline{/* 좌우 라인 */
background-color: #F2F2F2;
border-right: 1px solid #000;
border-left: 1px solid #000;
margin : 0px 4px 0px 4px;
padding : 0px;
overflow: hidden;
} /* 안쪽 테이블: 끝 */
/* 내용 테이블 */
.CONTENTS{
margin : 0px 0px 0px 0px;
padding : 5px 10px 5px 10px;
height : 100px; }
</style> </head>
<body> css 처리한 라운드
<div style="margin : 0px 10px 0px 0px; width: 250px;">
<div class="rt7"></div>
<div class="rt6"></div><div class="rt5"></div>
<div class="rt4"></div><div class="rt3"></div>
<div class="rt2">
<div class="rt2in5"></div><div class="rt2in4"></div>
</div>
<div class="rt1">
<div class="rt1in3"></div><div class="rt1in2"></div>
<div class="rt1in1"></div>
</div>
<div class="rtoutLRline">
<div class="rtinLRline"> <div class="CONTENTS">
내용을 이곳에 넣으시면 됩니다 ^_____________________^*
</div> </div>
</div>
<div class="rt1">
<div class="rt1in1"></div><div class="rt1in2"></div>
<div class="rt1in3"></div>
</div>
<div class="rt2">
<div class="rt2in4"></div><div class="rt2in5"></div>
</div>
<div class="rt3"></div><div class="rt4"></div>
<div class="rt5"></div><div class="rt6"></div>
<div class="rt7"></div>
</div>
<br />
이미지 처리한 라운드( gif 파일 )
<br />
<img src="http://repter.ddam119.com/test/images/roundTable.gif" alt="이미지처리한 라운드 테이블" />
</body>
</html>


태그로 넣었더니 코드가 깨지네요 링크로 올립니다

http://repter.ddam119.com/test/roundTable.html
by Anna 안나 2008. 3. 1. 20:08
| 1 2 3 |