경매사이트 등에서 남은시간 이미지로 표시하기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

경매사이트 등에서 남은시간 이미지로 표시하기 정보

경매사이트 등에서 남은시간 이미지로 표시하기

첨부파일

time_left.zip (8.7K) 117회 다운로드 2011-10-20 21:32:33

본문

필요해서 여기저기 참고해서 만들어봤습니다.
모든 숫자들을 하나의 이미지 파일에 넣어 필요한 숫자부분만을 골라서 표시하도록 만들었습니다.
깜박거림 없이 잘 돌아갑니다. 글씨들이 좀 크면 이미지 새로 만들고 background image 불러오는 부분 가로수치들 바꿔줘야 합니다.
배워가며 만든거라 필요없는 부분도 있을 듯 싶고, 코드도 단축될 수 있을지도 모르겠네요.
응용해서 변형하면 쓸만한 소스가 될 듯 합니다.
저는 남은 시간이 1일 이상이면 남은 일수만 보이고,
1일 미만이면 시간만,
1시간 미만이면 분과 초만,
1분 미만이면 초만 보이게 만들어 적용하고 있습니다.
-------------------------------------------
numbers.png 파일은 그누보드 메인 img 폴더에 넣습니다.
left_time.php는 그누보드 메인에 넣었으면
<? include("$g4[path]/left_time.php") ?>
이렇게 불러오던지 아님 그냥 필요한 페이지에 전체 복사해서 넣으셔도 됩니다.
 
남은 일수는 99일(2자리수)까지만 출력합니다. 더 필요하시면 '일'부분에 100단위 추가하도록 스크립트 추가하셔야 합니다.
남은시간이 없으면'종료'표시 됩니다.
-------------------------------------------
left_time.php 중 $target_time 에 원하는 종료시간을 정해주셔야 합니다.
 
<?
$target_time = '11-12-20 23:59:59'; // 종료시간 설정 $target_time = $view[wr_1] 등으로 수정
$left_time = (int)(strtotime($target_time) - $g4['server_time']);
?>
<script type="text/javascript">
<!--
$(document).ready(function() {
 try {
  document.execCommand("BackgroundImageCache", false, true);
 } catch(ignored) {
 }
 
 // 남은시간 갱신
 var timeLeft = <?=$left_time?>;
 var updateLeftTime = function() {
  timeLeft = (timeLeft <= 0) ? 0 : -- timeLeft;
  if (timeLeft >= 1) {
  var days = Math.floor(timeLeft / 86400);
  var hours = Math.floor((timeLeft - 86400 * days) / 3600);
  var minutes = Math.floor((timeLeft - (86400 * days) - (3600 * hours)) / 60);
  var seconds = timeLeft % 60;
  var bg_prefix = "<div style=\"width:19px;height:40px;background:url('<?=$g4[path]?>/img/numbers.png') no-repeat scroll ";
  var bg_suffix = "px 0px transparent;\"></div>";
  $('#td1').html(bg_prefix + (-(Math.floor((days % 100) / 10))*19) + bg_suffix);
  $('#td2').html(bg_prefix + (-(days % 10)*19) + bg_suffix);
  $('#th1').html(bg_prefix + (-(Math.floor((hours % 100) / 10))*19) + bg_suffix);
  $('#th2').html(bg_prefix + (-(hours % 10)*19) + bg_suffix);
  $('#tm1').html(bg_prefix + (-(Math.floor(minutes / 10))*19) + bg_suffix);
  $('#tm2').html(bg_prefix + (-(minutes % 10)*19) + bg_suffix);
  $('#ts1').html(bg_prefix + (-(Math.floor(seconds / 10))*19) + bg_suffix);
  $('#ts2').html(bg_prefix + (-(seconds % 10)*19) + bg_suffix);
  $('#ts1').html(bg_prefix + (-(Math.floor(seconds / 10))*19) + bg_suffix);
  $('#ts2').html(bg_prefix + (-(seconds % 10)*19) + bg_suffix);
  $('#left_time').show();
  } else {
  $('#time_end').show();
  $('#left_time').hide();
  }
 }
 
 updateLeftTime();
 setInterval(updateLeftTime, 1000);
 
});
-->
</script>
<style type="text/css">
.time{position:relative;}
.time .hms{position:absolute}
.time .hms:after{display:block;clear:both;content:''}
.time .hms span{float:left}
.time .hms .timer{width:19px;height:40px;}
.time .hms .timer_day{width:30px;height:40px;margin-right:4px;background:url("<?=$g4['path']?>/img/numbers.png") no-repeat scroll -190px 0px transparent;}
.time .hms .timer_hour{width:63px;height:40px;margin-right:4px;background:url("<?=$g4['path']?>/img/numbers.png") no-repeat scroll -219px 0px transparent;}
.time .hms .timer_min{width:33px;height:40px;margin-right:4px;background:url("<?=$g4['path']?>/img/numbers.png") no-repeat scroll -282px 0px transparent;}
.time .hms .timer_sec{width:34px;height:40px;background:url("<?=$g4['path']?>/img/numbers.png") no-repeat scroll -316px 0px transparent;}
.time .hms .timer_end{width:63px;height:40px;background:url("<?=$g4['path']?>/img/numbers.png") no-repeat scroll -350px 0px transparent;}
</style>
<table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
 <tr>
  <td height="40" valign="top">
  <!-- 남은시간 시작 -->
  <div id="left_time" class="time">
   <div class="hms">
    <span id="td1" class="timer"></span>
    <span id="td2" class="timer"></span>
    <span id="td" class="timer_day"></span>
    <span id="th1" class="timer"></span>
    <span id="th2" class="timer"></span>
    <span id="th" class="timer_hour"></span>
    <span id="tm1" class="timer"></span>
    <span id="tm2" class="timer"></span>
    <span id="tm" class="timer_min"></span>
    <span id="ts1" class="timer"></span>
    <span id="ts2" class="timer"></span>
    <span id="ts" class="timer_sec"></span>
   </div>
  </div>
  <!-- 남은시간 끝 -->
  <!-- 종료시 시작 -->
  <div id="time_end" class="time" style="display:none">
   <div class="hms">
    <span class="timer_end"></span>
   </div>
  </div>
  <!-- 종료시 끝 -->
  </td>
 </tr>
</table>
-------------------------------------------
추천
4

댓글 2개

음... 뒤로가기했다 되돌아가기 할때 지난시간으로 다시 카운팅되는 문제는 다른 유명한 사이트들도 마찬가지 문제가 있군요. 문제가 될만도 한데... 소셜 커머스 사이트들 모두 그런 듯 보입니다.
전체 5 |RSS

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT