네이버 UI - 셀렉트박스 함수, selectbox, css, div > php

본문 바로가기

php

네이버 UI - 셀렉트박스 함수, selectbox, css, div

작성일 12-05-31 10:56

페이지 정보

작성자서방님 조회 116회 댓글 0건

본문

<style>
/* 셀렉트박스 UI */
.select{position:relative;z-index:1000;width:300px;font-family:'돋움',dotum;font-size:12px}
.select ul,.select li,.select dl,.select dt,.select dd,.select p{margin:0;padding:0}
.select li{list-style:none}
.select .select_label{height:12px;padding:4px 17px 3px 5px;border:1px solid #6e706f;border-right-color:#d4d5d7;border-bottom-color:#d4d5d7;background:#fff url(http://html.nhndesign.com/ui_library/src/pattern/etc/cds/select_box/img/bu_arr_label.gif) no-repeat 100% 0;line-height:12px;cursor:pointer;_cursor:hand}
.select .select_label span{display:block;overflow:hidden;width:100%;white-space:nowrap;text-overflow:ellipsis}
.select .select_layer{display:none;position:absolute;top:19px;left:0;width:100%;z-index:1000;background:#fff}
.select .select_layer ul{border:1px solid #d4d5d7;border-left-color:#6e706f;border-top:0;padding:1px 2px 2px}
.select .select_layer ul li{display:inline-block;width:100%;vertical-align:top}
.select .select_layer ul li dl dt{display:block;*display:inline-block;overflow:hidden;width:100%;margin-top:1px;color:#666;line-height:100%;cursor:pointer;_cursor:hand}
.select .select_layer ul li dl dt span{display:block;overflow:hidden;padding:4px 3px 3px;white-space:nowrap}
.select .select_layer ul li dl{position:relative}
.select .select_layer ul li dl dd{display:none;position:absolute;top:-2px;left:100%;margin-left:-5px;padding-left:14px;background:url(http://html.nhndesign.com/ui_library/src/pattern/etc/cds/select_box/img/bu_arr_tooltip.gif) no-repeat 10px -1px;color:#fff;line-height:15px}
.select .select_layer ul li dl dd p{padding:4px;border:1px solid #333;border-left:0;background:#4d4d4d;white-space:nowrap}
.select .select_layer ul li dl dd img{vertical-align:top}
.select .select_layer ul li.on dl dd{display:block}
.select .select_layer ul li.on dl dt{background:#eee;color:#000}
</style> 

<?

/*
셀렉트 박스 UI 입니다. Naver UI 오픈소스를 사용합니다.
이 함수는 다음의 인자를 넘겨 받습니다.
$name : 태그의 이름 입니다. form에 의해 넘겨질 이름 입니다.
$size : 셀렉트박스의 가로 사이즈 입니다. px 단위
$old : 이미 선택된 값입니다. 이 값이 있을 경우 동일한 값이 미리 선택된 상태로 출력됩니다. -> selected ':' 로 구분합니다. 예) 'option1:말라뮤트'
$val : 넘겨질 값과 표시될 값 입니다. ':' 로 구분합니다. 예) array('title:제목','content:내용')
$option : $val에 추가로 표시될 옵션입니다. 표시될 값 우측에 박스형태로 출력되며 img와 text 형태가 있습니다. ':'로 타입과 내용을 구분합니다. 예) array('text:허스키','img:img/temp.gif')
$N : 이는 레이어의 z-index 의 값입니다. 중복사용을 위해 서로 다른값을 입력해야 합니다.
$Default : 초기 선택값입니다. 초기 실행시 이곳에 입력된 텍스트를 셀렉트박스 안에 보여줍니다.
*/


function selectbox($name,$size=120,$old="",$val=array(),$option=array(),$N=0,$Default="선택하세요.") {
 if($old && trim($old)!=":") {
  $old_ary=explode(":",$old);
  $old_title=$old_ary[0];
  $old_val=$old_ary[1];
 }
 else {
  $old_title='';
  $old_val=$Default;
 }
 
 $Zindex=2000-$N;
 echo "<input type=hidden name='$name' id='$name' value='$old_title'>";
 echo "<div style='width:".$size."px' class='select'>";
 echo "<div id='select_label_$N' class='select_label'>";
 echo "<span>$old_val</span>";
 echo "</div>";
 echo "<div id='select_layer_$N' class='select_layer' style='z-index:$Zindex'>";
 echo "<ul>";
 for($i=0; $i<count($val); $i++) {
  $title_ary=explode(":",$val[$i]);
  $title=$title_ary[0];
  $title_val=$title_ary[1];
  
  $content_ary=explode(":",$option[$i]);
  
  if($content_ary[0]=="img") {
   $content="<img src='$content_ary[1]' align=absmiddle>";
  }
  else if($content_ary[0]=="text") {
   $content=$content_ary[1];
  }
  else {
   $content="";
  }
  
  echo "<li>";
  echo "<dl>";
  echo "<dt id='$title'>";
  echo "<span>$title_val</span>";
  echo "</dt>";

  if($content) {
   echo "<dd>";
   echo "<p style='color:#ffffff;'>$content</p>";
   echo "</dd>";
  }
  
  echo "</dl>";
  echo "</li>";
 }
 
 echo "</ul>";
 echo "</div>";
 echo "</div>";
 echo "<script>selectBoxAction($N,'$name')</script>";
}
?>

 
<script type='text/javascript'>
function selectBoxAction(N,Name) {
 var label, layer, li;
 label = document.getElementById('select_label_'+N);
 layer = document.getElementById('select_layer_'+N);
 li = layer.getElementsByTagName('LI');
 label.onclick = function() {
  layer.style.display = (layer.style.display != 'block') ? 'block' :'none';
 }
 
 for (var i=0;i<li.length;i++) {
  li[i].onmouseover = function() { this.className = 'on' }
  li[i].onmouseout = function() { this.className = '' }
  li[i].onclick = function() {
   label.getElementsByTagName('SPAN')[0].childNodes[0].nodeValue = this.getElementsByTagName('DT')[0].childNodes[0].childNodes[0].nodeValue;
   document.getElementById(Name).value=this.getElementsByTagName('DT')[0].id;
   layer.style.display = 'none';
  }
 }
}
</script>


<?
selectbox("name",$size=120,$old="",array('title:제목','content:내용'),array('text:허스키','img:img/temp.gif'),$N=0,$Default="선택하세요.");
?>

댓글목록

등록된 댓글이 없습니다.

전체 612건 33 페이지
게시물 검색
Copyright © 서방님.kr All rights reserved.
PC 버전으로 보기