웹 개발 메모장
[자바스크립트] 간단한 토글(toggle) 버튼 만들기 본문
간단한 토글(toggle) 버튼 만들기
눌러서 좌 우로 움직여서 on/off 를 표현하는 토글버튼을 생성해봤습니다.
↓아래 버튼을 눌러보세요.↓
버튼은 <div> 로 <button> 을 감싸는 형태로 만들었고
모션을 위해 setInterval() 함수를 사용했습니다.
코드입니다.
CSS
1 2 3 4 | <style type="text/css"> .toggleBG{background: #CCCCCC; width: 70px; height: 30px; border: 1px solid #CCCCCC; border-radius: 15px;} .toggleFG{background: #FFFFFF; width: 30px; height: 30px; border: none; border-radius: 15px; position: relative; left: 0px;} </style> | cs |
자바스크립트
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | $(document).on('click', '.toggleBG', function () { var toggleBG = $(this); var toggleFG = $(this).find('.toggleFG'); var left = toggleFG.css('left'); if(left == '40px') { toggleBG.css('background', '#CCCCCC'); toggleActionStart(toggleFG, 'TO_LEFT'); }else if(left == '0px') { toggleBG.css('background', '#53FF4C'); toggleActionStart(toggleFG, 'TO_RIGHT'); } }); // 토글 버튼 이동 모션 함수 function toggleActionStart(toggleBtn, LR) { // 0.01초 단위로 실행 var intervalID = setInterval( function() { // 버튼 이동 var left = parseInt(toggleBtn.css('left')); left += (LR == 'TO_RIGHT') ? 5 : -5; if(left >= 0 && left <= 40) { left += 'px'; toggleBtn.css('left', left); } }, 10); setTimeout(function(){ clearInterval(intervalID); }, 201); } | cs |
HTML
1 2 3 | <div class='toggleBG'> <button class='toggleFG'></button> </div> | cs |
==내용추가==
버튼의 상태 값 가져오기
토글버튼의 현재 값을 불러오는 방법은 여러가지가 있겠지만, 한 가지 예를 들어보겠습니다.
버튼의 CSS 속성 중 'left' 값으로, 버튼이 ON 인지 OFF인지 판단할 수 있습니다.
버튼이 왼쪽에 붙어있다면 'left' 값은 0px일 것이고, 오른쪽에 붙어있다면 위의 예제에서는 40px일 것입니다.
따라서, <button> 태그에 id를 부여하면 아래의 함수를 통해 상태를 "on" 또는 "off"로 return 할 수 있습니다.
자바스크립트
1 2 3 4 5 | function getToggleBtnState(toggleBtnId){ const left_px = parseInt( $('#'+toggleBtnId).css('left') ); return (left_px > 0)? "on" : "off"; } | cs |
HTML
1 2 3 4 | <div class='toggleBG'> <button id='buttonID' class='toggleFG'></button> </div> <button onclick="alert(getToggleBtnState('buttonID'));">값을 보려면 여기를 눌러주세요</button> | cs |
예시
'옛날.. > 자바스크립트' 카테고리의 다른 글
웹브라우저에서 알림을 받아보자, HTML5 Notification (9) | 2018.08.17 |
---|---|
[자바스크립트] Date() 기본 사용 방법 (3) | 2018.05.17 |
[자바스크립트] 같은 그림 맞추기 게임 (4) | 2018.02.08 |
[자바스크립트] snake game (꼬리물기 게임 / 뱀 게임) (4) | 2018.02.05 |
[JQuery] AJAX 기본 구문 및 예제 (2) | 2018.01.16 |
Comments