바로 전의 게시물인 "업로드된 그림 자동 출력" 소스를 이용하여 특정게시판에서 업로드된 그림을 자동으로 출력하는 방법입니다.

1. zbxe설치폴더/moudles/board/skins/xe_board/skin.xml파일의 ine 92아래줄에 소스를 삽입한다. <var name="auto_img_insert" type="select">
<title xml:lang="ko">본문 자동 이미지삽입</title>
<title xml:lang="jp">본문 자동 이미지삽입</title>
<title xml:lang="zh-CN">본문 자동 이미지삽입</title>
<title xml:lang="en">본문 자동 이미지삽입</title>
<default>N</default>
<default>Y</default>
<description xml:lang="ko">
첨부파일이 이미지 파일이면 자동으로 본문에 삽입하시겠습니까?
</description>
</var>
2. zbxe설치폴더/moudles/board/skins/xe_board/view_document.html파일의 line 105의 {$oDocument->getContent()}를 지우고 아래의 소스를 삽입한다. **** 이부분은 상단의 조건식만 제외하고 소마세월님의 "업로드된 그림 자동 출력" 소스 소스입니다***** <!--@if($module_info->auto_img_insert!='N')-->
{@ $uploaded_list = $oDocument->getUploadedFiles() }
<!--@foreach($uploaded_list as $key => $file)-->
{@$file_explode=explode(".",strtoupper($file->source_filename))}
<!--@if($file_explode[1]=="GIF" || $file_explode[1]=="JPG" || $file_explode[1]=="PNG" || $file_explode[1]=="BMP")-->
{@$picture.="<p align=center><img src='".$file->uploaded_filename."' style='' editor_component='image_link' /><br /></p>"}
<!--@end-->
<!--@end--> <!--@if($picture)-->
{@ $cont=$oDocument->get('content')}
{@ $oDocument->add('content',$cont.$picture)}
<!--@end--> {$oDocument->getContent()}
<!--@else-->
{$oDocument->getContent()}
<!--@end--> 3. 1.과2.의 과정을 수행하시고 게시판 설정에 가시면
((-------IMAGE-------))
본문 자동 이미지 삽입 에 "Y"로 하시면 첨부파일이 그림파일이면 자동으로 본문에 그림이 삽입됩니다.
by Anna 안나 2008. 4. 5. 22:38
안녕하세요..

업로드된 그림 자동출력 해주는 쏘스 입니다.

처음 소스 보다 더 편한 소스 입니다. 본문삽입 효과와 같은 쏘스 입니다.

소스는 간단합니다..
각 모듈의 스킨 디렉토리에 있는 view_document.html 파일 수정 하시면 되는데요

94번째 줄부터
<!--@else-->
{$oDocument->getContent()}
<!--@end-->
라는 소스가 있습니다..
여기를 수정하세요

기본 게시판 수정 하시는것 보다는 겔러리 스킨을 받으셨다면.. 거기에서 수정하세요

그냥 게시판에 했다가는 마음대로 글을 못쓰는 불행이 찾아 올지도.......
(무조껀 그림이 출력 되버리니 난감해질수밖에..=ㅁ=;)
<!--@else-->
{@ $uploaded_list = $oDocument->getUploadedFiles() }
<!--@foreach($uploaded_list as $key => $file)-->
{@$file_explode=explode(".",strtoupper($file->source_filename))}
<!--@if($file_explode[1]=="GIF" || $file_explode[1]=="JPG" || $file_explode[1]=="PNG" || $file_explode[1]=="BMP")-->
{@$picture.="<img src='".$file->uploaded_filename."' style='' editor_component='image_link' /><br />"}
<!--@end-->
<!--@end-->

<!--@if($picture)-->
{@ $cont=$oDocument->get('content')}
{@ $oDocument->add('content',$cont.$picture)}
<!--@end-->

{$oDocument->getContent()}
<!--@end-->

이렇게만 하면.. 본문 삽입과 같은 효과를 발휘 합니다.
그림파일이 들었으면 무조껀 출력합니다.
by Anna 안나 2008. 4. 5. 22:36
용도
게시판 목록에 확장 변수에 입력한 값을 출력할 필요가 있을 때

목록에 확장 변수 값을 최대 20개 까지 표시할 수 있습니다.

적용 방법
확장 변수 출력용 스킨을 새로 만듭니다.(xe_list 스킨 복사)
새로운 스킨명 예: xe_extra

1. skin.xml
<title>~~ 값을 바꿔 스킨 이름이 중복 되지 않도록 합니다.

최하단의 </var> 밑에 아래의 새로운 옵션을 추가합니다.
<var name="display_extra_value1" type="select">
<title xml:lang="ko">확장 변수 표시</title>
<default>N</default>
<default>1</default>
<default>2</default>
<default>3</default>
<default>4</default>
<default>5</default>
<default>6</default>
<default>7</default>
<default>8</default>
<default>9</default>
<default>10</default>
<default>11</default>
<default>12</default>
<default>13</default>
<default>14</default>
<default>15</default>
<default>16</default>
<default>17</default>
<default>18</default>
<default>19</default>
<default>20</default>
<description />
</var>


2. list.html
줄 번호는 다를 수 있으므로 소스(출력 순서)를 잘 보고 삽입에 주의하세요.

17번 줄에 다음 줄을 삽입합니다.
<!--@if(is_int($module_info->display_extra_value1))--><col width="70" /><!--@end-->

삽입 후 50번대 줄에 다음 줄을 삽입합니다.
<!--@if($module_info->display_extra_value1!='N')--><th class="extra" scope="col">{$module_info->extra_vars[1]->name}</th><!--@end-->

삽입 후 115번 줄에 다음 줄을 삽입합니다.
<!--@if($module_info->display_extra_value1!='N')--><td class="extra">{$document->getExtraValue(1)}</td><!--@end-->


3. css/common.css
다음 두 줄을 적당한 곳에 삽입하세요.
.boardList th.extra { white-space:nowrap; }
.boardList td.extra { font:1em Tahoma; color:#999999; text-align:center;}


※ 사용 방법

스킨을 업로드 후, 모듈의 스킨을 변경합니다(예: xe_extra)

1. 확장 변수 편집에서 변수를 설정합니다.(권장: TEXT, SELECT, URL 등 한 줄 텍스트 입력이 있는 폼)
((-------IMAGE-------))


2. 스킨 관리 탭에서 출력을 원하는 확장 변수 번호를 선택합니다.
((-------IMAGE-------))
by Anna 안나 2008. 4. 5. 22:33
((-------IMAGE-------))

-다운로드-
sunga_calendar.zip


카페나 클럽에서 사용하실분은 php가 안먹히니깐
최종 index.php 파일을 index.html 로 확장자이름을 바꿔서
사용하시기 바랍니다.

-각달마다 다른 배경을 미리 볼수있습니다
-오늘날짜 색상이 초록색으로 나오게 했구요, 또 하단에 현재 년도와 날짜 그리고 시간을 표시했습니다
-하단 왼쪽에 3개의 동그란아이콘 링크메뉴가 추가되었는데... 일기장과 양음력보기/전국날씨 소스 이렇게 링크가 걸려있습니다


첫번째 동그란 핑크색 아이콘메뉴는 다이어리나 일기장 혹은 일정관리를
링크해놓았는데 이것은 본인들이 알아서 제로보드 스킨에서 원하는 걸로
다운받아 설치하시기 바랍니다.

두번째 파랑색 아이콘메뉴는 양음력을 알수있는 양음력변환소스와
처음만난후 그동안 지낸날짜와 특별한 날짜가 며칠인지 알수있는
날짜소스를 넣었는데요
이것은 ca1.php 와 ca2.php 소스인데 함께 첨부해서 바로 링크를 걸어두었으니
아무것도 손댈필요없이 압축한 파일만 그대로 모두 업로드한다면
자동으로 링크가 걸려있습니다 한번 클릭해보세요~
첨에는 양음력변환소스만 넣었다가 허전해서 다시테이블짜서 처음만난날과 특별한날
소스도 함께 만들었답니다 ^^*

세번째 노랑색 아이콘은 슈퍼보드에서 제공하는 전국날씨소스를 링크걸었는데
제이름으로 받은거 그대로 올렸으니 그대로 사용하셔도 무방합니다
다른사이트에 더좋은 날씨소스를 링크하셔도 좋구요~

물론 이세가지 아이콘의 링크주소는 본인들이 알아서 다른 원하는
주소로 링크를 자유롭게 바꿔서 걸어주셔도 좋습니다

참고로 오늘의운세라든지 인터넷가게부나 일정관리등 다양하게
링크를 걸되 그크기에 맞게 새창뜨기소스에서 가로세로 조정만 잘 해주시면
딱맞는 사이즈로 이뿌게 새창뜨기 되도록 해놓았습니다
딱맞는 사이즈로 띄우면 스크롤이 필요없기에 노로 했습니다만
자료가 길다면 스크롤링 예스로 바꾸어야 겠지요?
물론 이것도 인덱스파일안에 추가 설명이 들어가있습니다

양음력변환기와 전국날씨소스를 그대로 사용하실분은 아무것도 손댈필요없습니다만
첫번째 다이어리만 반드시 본인들이 원하는 스킨으로 바꾸어주셔야 합니다
달력에 어울리는 링크를 건다고 했는데 더좋은 소스가 있다면 바꾸어주세요~

=========================설치방법====================================
다운받아 압축을 푼 sunga_calendar 폴더를 열어서 보시면
calendar 폴더와 clendar_f 폴더가 있습니다
일반폰트는 calendar 폴더를 업로드해주시고
웹폰트를 사용하실분은 calendar_f 를 업로드 해줍니다

일반폰트를 업로드하실분은 calendar 폴더 통채로 계정 첫디렉토리에 업로드 해줍니다

웹폰트로 된 calendar_f 폴더를 업로드 하실분은?
calendar_f 안에 있는 font폴더를 먼저
계정 첫디렉토리에 통채로 업로드 해줍니다
물론 이전에 폰트폴더가 있는 분들은 제꺼 폰트폴더 열어서 그안에 자료만
빼서 기존의 폰트폴더속에 업로드해주시면 되겠지요?
또 폰트폴더속에 그폰트가 있는분들은 폰트폴더는 업로드 하실필요 없겠지요? ^^*

그리고 나서 폰트 폴더는 삭제해버리고 calendar_f 폴더를 통채로
계정 첫디렉토리에 통채로 업로드 해줍니다

이제 웹주소창에다 아래주소를 그대로 복사한다음 웹주소창에 붙여넣고
앞에 본인 홈페이지 주소만 수정하시고 확인해보세요~

일반폰트 ☞ http://본인 홈페이지 주소입력/calendar/index.php
웹폰트 ☞ http://본인 홈페이지 주소입력/calendar_f/index.php

위에처럼 확인해서 성공적으로 나온다면?
아이프렘소스로 불러서 본인 홈페이지 테이블속에다
넣어 주시면 되는겁니다 아이프렘 어떻게 거냐구요?
카렌다 넣을 위치에 아래처럼.... 아이프렘소스를 적용하시면 됩니다 ^^*

<iframe src=http://본인 홈페이지 주소입력/sunga_calender/index.php frameborder=0 width=200 height=230 marginwidth=0 marginheight=0 scrolling=no></iframe>

아이프렘 가로세로 크기는 정확히 얼마인지 잘모르겠네요 ㅎㅎ
대충 비슷하게 잡아놨는데 달아보시고 알아서 조정하세요 ^^*

이러면 모든것이 끝났습니다 아주 간단하지요? ^^*

참그리고요 중요한 거...

배경이 마음에 안드는게 있다면?
추가로 배경이미지 8개를 더 만들어서 이미지 폴더속에 업로드 해두었습니다
d13_09.gif 부터 d20_09.gif 까지가 배경이미지입니다
그러니깐 각달에 09번이 배경이미지입니다
1d_09.gif 부터 12d_09.gif 중에서 마음에 안드는 이미지를 삭제하신후에
d13_09 부터 d20_09 중에서 원하는걸로 그달에 이름으로 바꾸어 주시면 됩니다

참고로 1d 는 1월달이고 12d는 12월입니다.
by Anna 안나 2008. 4. 5. 22:27
사이트 좌측에 있는 2차메뉴를 만드는 방법입니다.

1. 먼저 사용하는 스킨의 zbxe/layouts/사용스킨/layout.html 을 편집기로 열어서 아래의 부분을 찾아서 바꿉니다.
변경전 파일은 xe_official의 default.css를 예로 들었습니다.

[변경전]
<!-- 왼쪽 2차 메뉴 -->
<img src="./images/blank.gif" alt="" class="mask" />
<!--@if($menu_1st)-->
<ol id="lnb">
{@ $idx = 1 }
<!--@foreach($menu_1st['list'] as $key => $val)--><!--@if($val['link'])-->
<li <!--@if($val['selected'])-->class="on"<!--@end-->><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['link']}</a>
<!-- main_menu 3차 시작 -->
<!--@if($val['list'] && ($val['expand']=='Y'||$val['selected']) )-->
<ul>
<!--@foreach($val['list'] as $k => $v)--><!--@if($v['link'])-->
<li <!--@if($v['selected'])-->class="on"<!--@end-->><a href="{$v['href']}" <!--@if($v['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$v['link']}</a></li>
<!--@end--><!--@end-->
</ul>
<!--@end-->
</li>
{@$idx++}
<!--@end--><!--@end-->
</ol>
<!--@end-->
[변경후] - 수정됨
<!-- 왼쪽 2차 메뉴 -->
<div id="lnb_t">
&nbsp;&nbsp;&nbsp;{$menu_1st['text']}
</div>

<!--@if($menu_1st)-->
<ol id="lnb">
{@ $idx = 1 }
<!--@foreach($menu_1st['list'] as $key => $val)--><!--@if($val['text'])-->
<li <!--@if($val['selected'])-->class="on"<!--@end-->><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->><img src="./images/default/bullet14.gif" align="absmiddle">&nbsp;{$val['text']}</a>
<!-- main_menu 3차 시작 -->
<!--@if($val['list'])-->
<ul>
<!--@foreach($val['list'] as $k => $v)--><!--@if($v['text'])-->
<li <!--@if($v['selected'])-->class="on"<!--@end-->><a href="{$v['href']}" <!--@if($v['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->><img src="./images/default/bulletD0.gif" align="absmiddle">&nbsp;{$v['text']}</a></li>
<!--@end--><!--@end-->
</ul>
<!--@end-->
</li>
{@$idx++}
<!--@end--><!--@end-->
</ol>

<div id="lnb_b">
</div>
2. 사용하는 스킨의 zbxe/layouts/사용스킨/css/해당칼라.css 을 편집기로 열어서 아래의 부분을 찾아서 바꿉니다.

[변경전]
#lnb { border-top:1px solid #dddddd; padding:4px 5px; width:190px;}
#lnb li { padding-bottom:4px; list-style:none; }
#lnb li a { padding:6px 5px 6px 13px; width:170px; display:block; border:1px solid #e8e8e8; background:url(../images/default/bgLnbOff.gif) repeat-x; color:#3e3e3e; position:relative; z-index:99; text-decoration:none;}
#lnb li a:hover,
#lnb li a:focus { color:#ffffff; background:#de4332; border:1px solid #de4332;}
#lnb li.on a { color:#ffffff; background:#de4332; border:1px solid #de4332;}
#lnb li.on a:hover,
#lnb li.on a:focus { font-weight:bold;}
#lnb li ul { display:block; position:relative; width:184px; padding:0 3px; position:relative; border-top:1px solid #ffffff; overflow:hidden;}
#lnb li.on ul { display:block;}
#lnb li ul li { padding:0; border-top:1px solid #f2f2f2; position:relative; top:-1px;}
#lnb li ul li a { padding:6px 5px 6px 10px; width:169px; color:#818181 !important; border:none; background:none !important; border:none !important;}
#lnb li ul li a:hover,
#lnb li ul li a:focus { font-weight:normal !important; color:#de4332 !important;}
#lnb li.on ul li.on a { color:#ff1a00 !important; font-weight:bold !important; background:url(../images/default/bulletLnb.gif) no-repeat 175px center !important;}
[변경후]
/* 하위2차메뉴 버턴이미지 */
#lnb_t { border-top:5px solid #fff; padding:25px 5px 0px 5px; width:190px; height:57px; background:url(../images/default/zt.gif) no-repeat; font-size:18px; font-weight:bold; text-decoration:none; color:#fff; font-family:"돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; }

#lnb { border-top:0px solid #dddddd; padding:0px 0px; width:200px; background:url(../images/default/zm.gif) repeat-y;}
#lnb li { padding-bottom:0px; list-style:none; }
#lnb li a { padding:10px px 5px 25px; width:175px; display:block; border:0px solid #000; color:#de4332; position:relative; z-index:99; text-decoration:none;}
#lnb li a:hover,
#lnb li a:focus { padding:10px 0px 0px 25px; width:175px; height:16px; display:block; border:0px solid #e8e8e8; background:url(../images/default/bgLnbOn.gif) no-repeat center; color:#f60; position:relative; z-index:99; text-decoration:none; }
#lnb li a { padding:10px 0px 0px 23px; width:177px; height:16px; display:block; border:0px solid #e8e8e8; background:url(../images/default/bgLnbOn.gif) no-repeat center; color:#090; position:relative; z-index:99; text-decoration:none; }
#lnb li.on a { padding:10px 0px 0px 25px; width:175px; height:16px; display:block; border:0px solid #e8e8e8; color:#f60; font-weight:bold; background:url(../images/default/bgLnbOn.gif) no-repeat center; position:relative; z-index:99; text-decoration:none; }

#lnb li ul { display:none; position:relative; width:200px; padding:0 0px; position:relative; border-top:0px solid #ffffff; overflow:hidden;}
#lnb li.on ul { display:block;}
#lnb li ul li { padding:0; border-top:0px solid #f2f2f2; position:relative; top:-1px;}
#lnb li ul li a { padding:10px 0px 0px 0px; width:200px; color:#C0C0C0 !important; border:none; background:none !important; border:none !important;}
#lnb li ul li a:hover,
#lnb li ul li a:focus { font-weight:normal !important; color:#de4332 !important;}
#lnb li.on ul li.on a { color:#808080 !important; font-weight:bold !important; !important;}

#lnb_b { border-top:0px solid #dddddd; padding:0px 5px 0px 5px; width:190px; height:34px; background:url(../images/default/zb.gif) no-repeat;}
3. 위의 내용에서 빨간색으로 표시된 부분들이 이미지들입니다. 샘플을 올리니 그대로 사용하셔도 되고 변형하셔도 됩니다.
bullet14.gif -- 2차메뉴앞 ((-------IMAGE-------))
bulletD0.gif -- 3차메뉴앞 ((-------IMAGE-------))
bgLnbOn.gif -- 메뉴아래 언더라인 (이것을 잘 변형하면 메뉴버턴형식으로 사용가능)((-------IMAGE-------))
((-------IMAGE-------))zt.gif -- 상단이미지
((-------IMAGE-------))zm.gif -- 중간이미지
((-------IMAGE-------))zb.gif -- 하단이미지
(클릭하시면 다운받습니다) board.psd 포토샵 이미지도 같이 올립니다.


# 2월14일 첨부 #

#lnb li a:focus { padding:10px 0px 0px 25px; width:175px; height:16px; display:block; border:0px solid #e8e8e8; background:url(../images/default/bgLnbOn.gif) no-repeat center; color:#f60; position:relative; z-index:97; text-decoration:none; }
#lnb li a { padding:10px 0px 0px 23px; width:177px; height:16px; display:block; border:0px solid #e8e8e8; background:url(../images/default/bgLnbOff.gif) no-repeat center; color:#090; position:relative; z-index:96; text-decoration:none; }
#lnb li.on a { padding:10px 0px 0px 25px; width:175px; height:16px; display:block; border:0px solid #e8e8e8; color:#f60; font-weight:bold; background:url(../images/default/bgLnbVr.gif) no-repeat center; position:relative; z-index:95; text-decoration:none; }

빨간색부분의 이미지들을 위와 같이 따로 만들어서 적용하면 마우스움직임따라 이미지가 변합니다. (이홈피에 적용)

* 수정버전에서 변경된부분 (알고나니 너무나 간단하네요*.*)
[변경전]
<!-- 왼쪽 2차 메뉴 -->
<ol id="lnb_t">
&nbsp;&nbsp;&nbsp;{$menu_1st['text']}
</ol>

중간부분 생락

<ol id="lnb_b">
</ol>
[변경후]
<!-- 왼쪽 2차 메뉴 -->
< div="lnb_t">
&nbsp;&nbsp;&nbsp;{$menu_1st['text']}
</div>

중간부분 생락

<div id="lnb_b">
</div>

by Anna 안나 2008. 4. 5. 22:21
빨갛게 표시된 부분만 잘 보시면 됩니다. 나머지는 잡설입니다.

제로보드 사이트를 잘 살펴보면 두 종류의 메뉴가 사용된 것을 알 수 있습니다. 방문자에게 컨텐츠를 제공하는 상단과 우측의 메뉴 한 종류와 홈페이지 운영과 관계된 내용을 연결하는 하단의 메뉴 한 종류 해서 두 가지 메뉴가 사용되고 있습니다.
이 팁에서는 이와같이 두 종류 이상의 메뉴를 생성하고 연결하는 방법을 기본 레이아웃인 xe_official과 제로보드 사이트를 예를 들어 소개하겠습니다.

보통 레이아웃과 메뉴를 연동하기 위해서는 다음의 과정을 거칩니다.
1. info.xml 에서 메뉴에 대한 변수를 설정
2. 관리자 페이지에서 메뉴를 생성
3. 레이아웃 생성시에 메뉴와 변수를 연결시킴
4. layout.html에서 변수를 불러옴

1번과 4번은 레이아웃 제작자가 신경 쓸 부분이고 2번과 3번은 레이아웃 사용자가 신경 써야 할 부분이죠.

0. 메뉴 구상
- 아래와 같이 제로보드 홈페이지 상단 및 좌측에 나타나는 컨텐츠와 연결되는 main menu 와
하단에 나타나는 사이트 운영과 관계된 bottom menu 로 메뉴로 구성할 예정입니다.
((-------IMAGE-------))

1. info.xml에서 메뉴 변수 설정
레이아웃을 만들 때 conf폴더에 있는 info.xml은 보통 별로 신경을 쓰지 않습니다. 하지만 이 파일에서
레이아웃에 필요한 여러가지 확장변수를 설정할 수 있으므로 잘 사용한다면 매우 유용할 것입니다.
여기서 우리가 다루게 될 메뉴 부분은 info.xml 파일내에 <menus>... </menus>로 구분되어 있습니다. <menus>
<menu name="main_menu" default="true">
<title xml:lang="ko">상단 메뉴</title>
<maxdepth>3</maxdepth>
</menu>
<menu name="bottom_menu">
<title xml:lang="ko">하단 메뉴 </title>
<maxdepth>1</maxdepth>
</menu>
</menus> 하위 메뉴를 포함하는 한 개의 메뉴집단(또는 덩어리?)은 <menu name="...">...</menu> 부분과 일대일 대응됩니다.
우리는 상단 및 우측 메뉴 와 하단 메뉴 이렇게 두 개의 메뉴를 사용 할 것이므로 <menu> 태그가 두 개 필요합니다.
더 많은 종류의 메뉴를 사용할 것이라면 여기에서 <menu> 부분을 그 만큼 더 정의해주면 됩니다.
menu태그의 name 속성은 중요합니다. 나중에 layout에서 불러 쓸 이름이 되므로 고유하게 붙여줘야 합니다.
(<menu> 태그의 name은 layout.html에서 사용될 변수명이라고 생각하시면 됩니다.)
default="true" 는 정확히 무슨 뜻인지 모르겠습니다만, 여기서는 있으나 없으나 별 차이 없을거 같은 생각이 듭니다.
<title>은 관리자페이지에서 레이아웃 생성시에 메뉴 항목에 표시되는 제목입니다.
레이아웃을 쓰는 사람이 알기 쉽게 하는 것이 좋겠네요.
<title> 부분 바로 아래에 <description xml:lang="ko">설명</description> 을 추가하여 제목에 설명서를 달아도 될거 같은데
해보지 않아서 정확하지 않습니다.
<maxdepth>3</maxdepth>는 메뉴의 단계(깊이?) 입니다. 즉 3단계까지의 메뉴를 만들거라는 이야기입니다.

2. 관리자 페이지에서 메뉴 생성하기
메뉴 생성하는 방법은 다들 아실거라고 생각되므로 따로 설명드리지 않겠습니다.
다만 '0.메뉴구상' 에서 보신 것같이 main, bottom 두 개의 메뉴를 만들어 주면 됩니다.
이 때 메뉴 이름은 위의 name에서 정한 것과 일치하지 않아도 됩니다. 자신이 알기쉽게 붙여주면 됩니다.

3. 레이아웃 생성시에 메뉴와 변수를 연길시키기
((-------IMAGE-------))
관리자페이지에서 레이아웃을 생성하면 위와같은 설정화면이 나옵니다. 위 설정화면의 내용은 info.xml에 따라서
달라집니다. 위 그림의 표시된 부분이 info.xml에서 정의한 변수와 생성시킨 메뉴를 각각 연결시켜주는 모습입니다.
"상단 메뉴"는 info.xml의 title에서 정의해준 것이고 그 아래 괄호에 있는 main_menu는 <menu>태그의 name임을
쉽게 알 수 있습니다. 그 옆에 나온 것은 메뉴관리에서 만들어준 메뉴의 이름입니다. 이름을 똑같이 만들었더니
연결하기가 편합니다. <menu>태그를 더 많이 만든다면 "하단 메뉴" 아래로 그 내용이 더 나올 것입니다.

4. layout.html 에서 메뉴 불러다 쓰기
기본 레이아웃인 xe_official의 layout.html중간에 다음과 같은 부분이 있습니다. <!--@foreach($main_menu->list as $key => $val)--> 위의 코드가 바로 info.xml에서 지정한 name을 이용해서 레이아웃 생성시에 연결시킨 메뉴를 불러오는 것입니다.
이제는 붉게 표시된 것이 name에서 정한 이름임을 말하지 않아도 아실 겁니다.
그리고 layout.html 마지막 부분에는 아래와 같은 코드가 있습니다. <!--@foreach($bottom_menu->list as $key => $val)--> 보시다시피 $main_menu 와 $bottom_menu는 생성시킨 메뉴와 연결되는 열쇠가 됩니다.
다른 반복제어문을 쓰더라도 이것들만 있으면 얼마든지 메뉴를 가져다가 쓸 수 있습니다.

지금까지가 메뉴를 가져오는 방법에 대한 설명이었습니다.
"어디다가 어떻게 붙일 것인가"라는 것은 디자인을 어떻게 하고 반복-제어문을 어떻게 다룰 것인가의 문제입니다.
by Anna 안나 2008. 4. 5. 22:13
레이아웃을 조금 수정하고, xml파일에 top_menu 항목을 집어넣어서~
레이아웃에서 톱메뉴 항목을 만들어서 관리할 수 있게 만드는 방법입니다.

아래 그림과 같이 톱메뉴 만드는 방법입니다.

((-------IMAGE-------))

우선 레이아웃의 info.xml 파일을 열어서
맨끝으로 이동하면 그림과 같이 <menus> 관련 스크립트가 있습니다.
그곳에 그림과 같이 만듭니다.

((-------IMAGE-------))

다음으로 Layout.html파일을 수정합니다.

((-------IMAGE-------))

수정/삽입하였으면, 관리자 설정화면으로 가서
메뉴관리에~ 상단톱메뉴를 만들 메뉴항목을 만듭니다.

((-------IMAGE-------))

레이아웃 수정된 곳에 메뉴를 보시면, 아래와 같이 최상단메뉴가 활성화 되어서 나타납니다.
그곳에 위의 top메뉴를 설정하시면, 맨 위에서 보시는바와 같이 나옵니다.

((-------IMAGE-------))

-끝-^_^
by Anna 안나 2008. 4. 5. 22:11
Windows XP의 기본 설치글꼴 목록
Fonts List of the Default Installed by Windows XP

During a typical installation, Windows XP installs the following TrueType fonts into the Windows/Fonts folder. Because Windows XP and other applications may require one or more of these fonts, reasonable that you do not remove them from the Fonts folder.

Font name File name
-----------------------------
Arial Arial.ttf
Arial Black Ariblk.ttf
Arial Bold Arialbd.ttf
Arial Bold Italic Arialbi.ttf
Arial Italic Ariali.ttf
Comic Sans MS Comic.ttf
Comic Sans MS Bold Comicbd.ttf
Courier 10,12,15 Coure.fon
Courier New Cour.ttf
Courier New Bold Courbd.ttf
Courier New Bold Italic Courbi.ttf
Courier New Italic Couri.ttf
Estrangelo Edessa Estre.ttf
Franklin Gothic Medium Framd.ttf
Franklin Gothic Medium Italic Framdit.ttf
Gautami Gautami.ttf
Georgia Georgia.ttf
Georgia Bold Georgiab.ttf
Georgia Bold Italic Georgiaz.ttf
Georgia Italic Georgiai.ttf
Impact Impact.ttf
Latha Latha.ttf
Lucida Console Lucon.ttf
Lucida Sans Unicode L_10646.ttf
Microsoft Sans Serif Micross.ttf
Modern Modern.fon
MS Sans Serif 8,10,12,14,18,24 Sserife.fon
MS Serif 8,10,12,14,18,24 Serife.fon
Mv Boli Mvboli.ttf
Palatino Linotype Pala.ttf
Palatino Linotype Bold Palab.ttf
Palatino Linotype Bold Italic Palabi.ttf
Palatino Linotype Italic Palai.ttf
Roman Roman.fon
Script Script.fon
Small Fonts Smalle.fon
Symbol Symbol.ttf
Symbol 8,10,12,14,18,24 Symbole.fon
Tahoma Tahoma.ttf
Tahoma Bold Tahomabd.ttf
Times New Roman Times.ttf
Times New Roman Bold Timesbd.ttf
Times New Roman Bold Italic Timesbi.ttf
Times New Roman Italic Timesi.ttf
Trebuchet MS Trebuc.ttf
Trebuchet MS Bold Trebucbd.ttf
Trebuchet MS Bold Italic Trebucbi.ttf
Trebuchet MS Italic Trebucit.ttf
Tunga Tunga.ttf
Verdana Verdana.ttf
Verdana Bold Verdanab.ttf
Verdana Bold Italic Verdanaz.ttf
Verdana Italic Verdanai.ttf
Webdings Webdings.ttf
WingDings Wingding.ttf
WST_Czech WST_Czech.fon
WST_Engl WST_Engl.fon
WST_Fren WST_Fren.fon
WST_Germ WST_Germ.fon
WST_Ital WST_Ital.fon
WST_Span WST_Span.fon
WST_Swed WST_Swed.fon ━━━━━━━━━━━━━━━━━━━━━━━━━━ 이외에 한글 글꼴로는 굴림, 돋움, 바탕, 궁서 등이 있습니다.
by Anna 안나 2008. 3. 28. 18:13



1. 준비하기



적용할 소야웹폰트.txt 파일을 웹폰트 다운로드 페이지에서 다운받아 둡니다.
WEFT3FULL Download (Mirror Download)
WEFT 파일을 받은 후 설치를 합니다.



일반 프로그램처럼 설치를 마친 후 실행을 하면 폰트데이터를 읽겠느냐고 ⑤번 그림과 같은 창이 나오는데 "아니오" 를 선택해서 폰트데이터를 읽지 않습니다.


2. 웹폰트 만들기



Weft는 잠시 그대로 두고 임의의 폴더를 만든 후 빈 html 파일을 새로 만듭니다.
(빈 html파일은 메모장을 열어 저장을 누른 후 파일형식을 모든파일로 선택하고 index.html 처럼 이름을 입력하고 저장하면 됨)
내용은 없어도 되며 html파일로 저장합니다. (예: index.html)
※ 단, 임의로 만든폴더의 경로에 한글명이 없어야합니다. (바탕화면 등의 한글폴더에 생성금지)



Weft 프로그램으로 돌아와서 이름과 이메일은 적당히 적고 다음으로 넘어갑니다.



①의 ... 을 누르고 좀전에 새로 만든 html파일(index.html)을 찾아서 열어줍니다. 그리고 다음으로 넘어갑니다.



Skip analysis 에 체크를 하고 다음으로 넘어갑니다.



아래의 ①Add... 를 누르고 웹폰트로 만들려는 폰트를 선택합니다.
같은 화면에서 ②Subset... 을 누르고 새로뜬 Subset Editor에서 ③Load.. 를 누른 후 파일타입을 All files 로 바꾸고 받아두었던 소야웹폰트.txt 를 선택합니다. OK를 누르고 다음으로 넘어갑니다.



Edit... 를 누르고 웹폰트를 사용하고자 하는 도메인을 추가한 후 다음을 누르면 새로 만들었던 html파일이 있는 폴더에 웹폰트 파일이 만들어져 있습니다. 만들어진 웹폰트파일의 이름을 폰트이름에 맞게 수정해서 사용하시면 됩니다. (예: 소야바른9-> soyabarun9.eot)
by Anna 안나 2008. 3. 28. 18:07
icon1.zip

((-------IMAGE-------))

'디자인소스 > i_icon' 카테고리의 다른 글

유용한 무료아이콘 배포소들.^^몇가지.  (0) 2008.11.27
리본이미지  (0) 2008.07.27
블로그 피드 RSS 아이콘 모두  (0) 2008.07.20
블루세트(blue set) 아이콘들  (0) 2008.03.28
투톤 아이콘 - blue  (0) 2008.03.28
투톤 아이콘 - green  (0) 2008.03.28
투톤 아이콘 - gray  (0) 2008.03.28
미니 실버 아이콘  (0) 2008.03.28
귀여운아이콘^^  (0) 2008.03.02
깔끔한아이콘 조금!  (0) 2008.03.02
by Anna 안나 2008. 3. 28. 17:47



((-------IMAGE-------))

'디자인소스 > i_line' 카테고리의 다른 글

깔끔,귀엽,화려한 라인들~  (0) 2008.03.02
반짝이는 무지개파스텔  (0) 2008.03.02
by Anna 안나 2008. 3. 28. 17:46
((-------IMAGE-------))

((-------IMAGE-------))

'디자인소스 > i_bg' 카테고리의 다른 글

저작권 없는 무료 이미지 사이트 100선  (0) 2009.01.05
포토샵합성용 텍스쳐  (0) 2008.07.27
푸른 숲같은 길  (0) 2008.07.27
반짝이는 심플한배경들  (0) 2008.03.02
회색배경  (0) 2008.03.02
분홍파스텔느낌  (0) 2008.03.02
by Anna 안나 2008. 3. 28. 17:45


((-------IMAGE-------))
((-------IMAGE-------))
((-------IMAGE-------))
((-------IMAGE-------))
((-------IMAGE-------))
((-------IMAGE-------))
((-------IMAGE-------))
((-------IMAGE-------))
((-------IMAGE-------))
((-------IMAGE-------))
((-------IMAGE-------))
((-------IMAGE-------))

'디자인소스 > i_icon' 카테고리의 다른 글

유용한 무료아이콘 배포소들.^^몇가지.  (0) 2008.11.27
리본이미지  (0) 2008.07.27
블로그 피드 RSS 아이콘 모두  (0) 2008.07.20
귀여운 이모티콘  (0) 2008.03.28
투톤 아이콘 - blue  (0) 2008.03.28
투톤 아이콘 - green  (0) 2008.03.28
투톤 아이콘 - gray  (0) 2008.03.28
미니 실버 아이콘  (0) 2008.03.28
귀여운아이콘^^  (0) 2008.03.02
깔끔한아이콘 조금!  (0) 2008.03.02
by Anna 안나 2008. 3. 28. 17:43
blue.zip

((-------IMAGE-------))

'디자인소스 > i_icon' 카테고리의 다른 글

유용한 무료아이콘 배포소들.^^몇가지.  (0) 2008.11.27
리본이미지  (0) 2008.07.27
블로그 피드 RSS 아이콘 모두  (0) 2008.07.20
귀여운 이모티콘  (0) 2008.03.28
블루세트(blue set) 아이콘들  (0) 2008.03.28
투톤 아이콘 - green  (0) 2008.03.28
투톤 아이콘 - gray  (0) 2008.03.28
미니 실버 아이콘  (0) 2008.03.28
귀여운아이콘^^  (0) 2008.03.02
깔끔한아이콘 조금!  (0) 2008.03.02
by Anna 안나 2008. 3. 28. 17:41
green.zip

((-------IMAGE-------))

'디자인소스 > i_icon' 카테고리의 다른 글

리본이미지  (0) 2008.07.27
블로그 피드 RSS 아이콘 모두  (0) 2008.07.20
귀여운 이모티콘  (0) 2008.03.28
블루세트(blue set) 아이콘들  (0) 2008.03.28
투톤 아이콘 - blue  (0) 2008.03.28
투톤 아이콘 - gray  (0) 2008.03.28
미니 실버 아이콘  (0) 2008.03.28
귀여운아이콘^^  (0) 2008.03.02
깔끔한아이콘 조금!  (0) 2008.03.02
여러가지 조그마하고 유용한 아이콘 2  (0) 2008.03.02
by Anna 안나 2008. 3. 28. 17:40
gray.zip

((-------IMAGE-------))

'디자인소스 > i_icon' 카테고리의 다른 글

블로그 피드 RSS 아이콘 모두  (0) 2008.07.20
귀여운 이모티콘  (0) 2008.03.28
블루세트(blue set) 아이콘들  (0) 2008.03.28
투톤 아이콘 - blue  (0) 2008.03.28
투톤 아이콘 - green  (0) 2008.03.28
미니 실버 아이콘  (0) 2008.03.28
귀여운아이콘^^  (0) 2008.03.02
깔끔한아이콘 조금!  (0) 2008.03.02
여러가지 조그마하고 유용한 아이콘 2  (0) 2008.03.02
여러가지 조그마하고 유용한 아이콘 1  (0) 2008.03.02
by Anna 안나 2008. 3. 28. 17:39
mini_icons_2.zip

((-------IMAGE-------))

'디자인소스 > i_icon' 카테고리의 다른 글

블로그 피드 RSS 아이콘 모두  (0) 2008.07.20
귀여운 이모티콘  (0) 2008.03.28
블루세트(blue set) 아이콘들  (0) 2008.03.28
투톤 아이콘 - blue  (0) 2008.03.28
투톤 아이콘 - green  (0) 2008.03.28
투톤 아이콘 - gray  (0) 2008.03.28
귀여운아이콘^^  (0) 2008.03.02
깔끔한아이콘 조금!  (0) 2008.03.02
여러가지 조그마하고 유용한 아이콘 2  (0) 2008.03.02
여러가지 조그마하고 유용한 아이콘 1  (0) 2008.03.02
by Anna 안나 2008. 3. 28. 17:20
((-------IMAGE-------))
대충그리다보니....


시험삼아 해보았습니다..^^;

'개인 > freeboard' 카테고리의 다른 글

가치평가에 이어..상대방평가?를 해보았다.^^  (0) 2008.09.21
가치평가  (0) 2008.09.21
CSS로 만든 Layout 소개  (1) 2008.07.12
jQuery 관련 링크  (0) 2008.07.12
구글 매니아가 구글에 환호하는 이유  (0) 2008.07.07
구글 스타일 로고 만들기  (0) 2008.07.07
재미있는 페이지.  (0) 2008.07.07
산돌폰트패키지 뷰어(viewer)  (0) 2008.06.29
온라인 촛불 문화제 이미지들..  (0) 2008.06.21
제목  (0) 2008.05.07
by Anna 안나 2008. 3. 27. 16:25
폼안에 있는내용이 버튼을 누르면 자동으로 복사(클립보드에저장)되는
효과를 본적이 있을겁니다





- 소스 분석 -
<HTML>
<!--HTML의 시작을 알리는 문법-->
<HEAD>
<!--HEAD의 시작을 알림~(즉head 앞대가리)-->
<TITLE>폼안에 내용을 복사</TITLE>
<!--타이틀 지정 폼안에 내용을 복사라는 제목이 타이틀바(제목표시줄)에 나타납니다-->
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--스크립트를 쓰는데 그 언어가 자바스크립트다-->
function copyit(theField) {
<!--레코드를copyit이라고 설정하고괄호안에 필드이름을 집어넣는다고 선언해줌-->
var tempval=eval("document."+theField)
tempval.focus()
tempval.select()
therange=tempval.createTextRange()
therange.execCommand("Copy")
<!--복사한다-->
}
</script>
<!--자바스크립트 끝-->
</HEAD>
<!--앞대가리 설정 끝-->
<BODY>
<!--바디 몸이라는뜻으로 눈으로 보여질 부분을 작성-->
<form name="it">
<!--지금부터 폼이 시작되는데 그 이름하여 it라는 폼을 만든다-->
<div align="center">
<!--가운데 정렬(제로보드 게시판설정에도 있죠^^;)-->
<input onclick="copyit('it.select1')" type="button" value="누르면 복사됩니다" name="cpy">
<!--버튼을 만듭니다. 버튼이름은 cpy고 cpy버튼에 나타날 글자는 누르면 복사됩니다 입니다-->
<!--그리고 그 버튼을 클릭하면 copyit이라고 아까 선언해준 자바스크립트가 실행되는데(onclick가 클릭할때-->
<!--실행될 것을 입력한는거입니다) it이라는폼안에 sclect1이라는 글상자에있는 내용을 말하는것입니다-->
<p>
<!--표가 시작됩니다-->
<textarea name="select1" rows="5" cols="40">
위의 버튼을 누르면 이 부분이 선택되고 자동으로 복사됩니다.
브라우저의 주소입력란에 붙여넣기(Ctrl+V) 해보세요.
</textarea>
<!--글상자를 만드는데 글장자 이름이 select1이고 글상자 넓이가 40이고 5줄짜리를 만듭니다-->
<!--그리고 그안에 들어있는내용은 위의 버튼을 누르면 이 부분이 선택되고 자동으로 복사됩니다.브라우저의 주소입력란에 붙여넣기(Ctrl+V) 해보세요.입니다-->
</div>
<!--div가 끝났습니다. 앞에/를 붙여주는것은 그것을 닫는다는 뜻입니다-->
<!--아까 열어줬으니 닫아줘야줘~-->
</form>
<!--폼을 닫습니다-->
</BODY>
<!--몸둥아리를 닫습니다-->
</HTML>
<!--html이 끝났습니다-->

///////////////////////////////////////////
참고
<input onclick="copyit('it.select1')" type="button" value="누르면 복사됩니다" name="cpy" style="background-color:rgb(51,153,255); border-width:1; border-style:none;">
이렇게 버튼을 바꾸면
background-color:rgb(51,153,255); //배경화면이 rgb컬러로 51,153,225인 즉, 하늘색이된 배경화면을 만들수있습니다.
border-width:1; border-style:none;//모든 태두리가 없습니다

'JS > 자바의심' 카테고리의 다른 글

Ajax Domain Search  (0) 2008.05.23
플래시효과의 shopping msn (메뉴같습니다)  (0) 2008.05.23
시간대별로 다른 CSS  (0) 2008.05.23
win - jquery 이용  (0) 2008.05.23
Google-X  (0) 2008.05.23
옆에 따라다니는 퀵메뉴  (0) 2008.03.08
동적 탭 메뉴  (0) 2008.03.08
실시간 시간을 보여주는 자바스크립트  (0) 2008.03.08
랜덤스크립트 사용  (0) 2008.03.08
마우스 올려 놓으면 내용 저절로 변하는 탭메뉴  (0) 2008.03.08
by Anna 안나 2008. 3. 21. 20:20
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
응용하여 TOP메뉴와 BOTTOM 등등 아주 다양하게 쓸수있습니다.^^
by Anna 안나 2008. 3. 8. 17:36
-
by Anna 안나 2008. 3. 8. 17:35
-
by Anna 안나 2008. 3. 8. 17:34
잘쓰세요..^^
by Anna 안나 2008. 3. 8. 17:33
살과 옷을 입히는 일은 직접해보세요. ^^ <script>
function change(obj) {
First.style.display = "none";
Second.style.display = "none"; obj.style.display = "block";
}
</script> <div id="First" style="display:block">
<span style="background-color:yellow">첫번째</span> <span onMouseOver="change(Second)" style="background-color:gray">두번째</span>
<br>첫번째 내용
</div>
<div id="Second" style="display:none">
<span onMouseOver="change(First)" style="background-color:gray">첫번째</span> <span style="background-color:yellow">두번째</span>
<br>두번째 내용
</div>



부연설명 :
style속성의 display 스타일 속성 값을 block과 none으로 바꾸면서
해당 개체를 사리지거나 나타나게 할 수 있습니다.

이걸 이용해서,

First라고 id값을 준 div태그로 첫번째 메뉴 탭과 내용을 감싸고
화면에 보이는 상태(blick)로 해두고

Second라고 id값을 준 div태그로 두번째 메뉴 탭과 내용을 감싸고
화면에 보이지 않는 상태(none)로 해둡니다.

이후, 스크립트를 이용해서 현재 보여지는 First의 두번째 메뉴 탭에
onmouseover 이벤트가 발생했을 때(마우스를 가져갔을 때)
First를 사라지게 하고 Second를 나타나게 하는 것이고

Second에서는 첫번째 메뉴 탭에 onmouseover 이벤트가 발생했을 때
Second는 사라지게 First는 나타나게 하는 것입니다.
by Anna 안나 2008. 3. 8. 17:19
네이버 뉴스에서 사용된 간단한 스크립트를 이용한 탭메뉴입니다.
by Anna 안나 2008. 3. 8. 17:18
잘 응용하면 하나의 문서로 여러페이지를 보여줄 수 있는 유용한 스크립트 입니다
by Anna 안나 2008. 3. 8. 17:18



▒ 메 뉴 단 축 키 ▒
Ctrl + N : 새 종이를 불러옵니다
Ctrl + O : 이미지를 불러옵니다
Ctrl + S : 이미지를 파일로 저장합니다
Shift + Ctrl + S : 이미지를 다른 이름으로 저장합니다
Ctrl + P : 이미지를 프린터로 인쇄합니다 Ctrl + W : 작업 이미지를 종료합니다
Ctrl + Q : 포토샵을 종료합니다
Ctrl + L : Level 메뉴를 실행합니다
Ctrl + B : Color Balance 메뉴를 실행합니다 Ctrl + U : Hue/Saturation 메뉴를 실행합니다
Ctrl + I : 이미지를 보색 반전시킵니다
Ctrl + T : 이미지를 자유변형시켜줍니다
Ctrl + F : 바로전 적용한 필터를 재실행시켜줍니다 ▒ 화 면 단 축 키 ▒
SpaceBar : 손툴로 전환시켜줍니다
Ctrl + SpaceBar : 돋보기툴로 전환시켜줍니다
Ctrl + Z : 바로전 실행한 작업을 취소하고 바로전단계로 돌려줍니다
Ctrl + + : 작업화면을 확대합니다
Ctrl + - : 작업화면을 축소합니다
Ctrl + 0 : 작업화면에 맞게 이미지를 확대합니다
Alt + Ctrl + 0 : 작업이미지를 인쇄크기로 맞게 확대합니다
Tab : 툴박스와 팔레트를 한번에 화면에서 숨기거나 나타나게 합니다 ▒ 선 택 영 역 단 축 키 ▒
Ctrl + A : 이미지를 전체선택합니다
Ctrl + D : 선택영역을 해제합니다
Ctrl + C : 선택영역 이미지를 복사합니다 Ctrl + X : 선택영역 이미지를 잘라냅니다
Ctrl + V : 복사한 이미지를 붙여넣기합니다
Shift + Ctrl + I : 선택영역을 반전시킵니다
Delete : 선택영역 이미지를 삭제합니다
Shift + Ctrl + D : 해제한 선택영역을 다시 선택합니다
by Anna 안나 2008. 3. 8. 16:38