Bootstrap에서 토글 버튼을 만드는 방법


92

원래 HTML, CSS 및 JavaScript로 웹 앱을 만든 다음 부트 스트랩에서도 다시 만들도록 요청 받았습니다. 나는 모든 것을 잘했지만 웹 앱에 원래 있던 토글 버튼 대신 라디오 (원래 확인란) 버튼으로 다시 변경된 토글 버튼이있었습니다.

버튼의 코드는 다음과 같습니다.

<label>
  Notifications
  <span class='toggle'>
    <input type='radio'
      class='notifications'
      name='notifications'
      id='notifications' />
  </span>
</li>
<label>
  Preview
  <span class='toggle'>
    <input type='radio'
      class='preview'
      name='preview'
      id='preview' />
  </span>
</li>

HTML 페이지가 링크 된 JavaScript 및 CSS 파일은 다음과 같습니다.

<script src = 'jqtouch.js'></script>
<script src="jquery.js"></script>
<script src="js/bootstrap.js"></script>
<link href="css/bootstrap.css" rel="stylesheet">
<link href="css/bootstrap-responsive.css" rel="stylesheet">

토글 버튼을 다시 가져올 수 있도록 코드를 변경하는 방법이 있습니까?



링크는 고맙지 만 내가 찾고있는 것이 없습니다. 내가 가진 토글 버튼은 'on'/ 'off'종류와 같이 iPhone에서 볼 수있는 친절했습니다. 말이 돼?
Megan Sime 2011

좋아 그래서 그것은 jqtouch.js와 관련이 있고 부트 스트랩 자체가
아니라고

1
확인. 그래도 더 쉽다면 github에 있습니다.
Megan Sime 2012

1
LOL man 무한한 파일 목록이 있습니다. :) 더 구체적으로 말할 수 없습니까? : D
itsme 2011

답변:


80

2013 년의 초기 답변

우수한 (비공식) 부트 스트랩 스위치를 사용할 수 있습니다 .

클래식 2013 스위치

<input type="checkbox" name="my-checkbox" checked>
$("[name='my-checkbox']").bootstrapSwitch();

라디오 유형 또는 확인란을 스위치로 사용합니다. type속성은 V.1.8 이후 추가되었습니다.

소스 코드는 Github에서 사용할 수 있습니다 .

2018 년 메모

많은 사람들이 지적하는 것처럼 항상 사용성 문제고통받는 것처럼 보였기 때문에 지금은 그런 종류의 이전 스위치 버튼을 사용하지 않는 것이 좋습니다 .

React Component 프레임 워크 에서 이와 같은 최신 스위치를 살펴보십시오 (부트 스트랩과 관련이 없지만 부트 스트랩 그리드 및 UI에 통합 될 수 있음).

Angular, View 또는 jQuery에 대한 다른 구현이 있습니다.

Modern 2018 스위치

import '../assets/index.less'
import React from 'react'
import ReactDOM from 'react-dom'
import Switch from 'rc-switch'

class Switcher extends React.Component {
  state = {
    disabled: false,
  }

  toggle = () => {
    this.setState({
      disabled: !this.state.disabled,
    })
  }

  render() {
    return (
      <div style={{ margin: 20 }}>
        <Switch
          disabled={this.state.disabled}
          checkedChildren={'开'}
          unCheckedChildren={'关'}
        />
        </div>
      </div>
    )
  }
}

ReactDOM.render(<Switcher />, document.getElementById('__react-content'))

기본 부트 스트랩 스위치

네이티브 Bootstrap 스위치대한 아래 의 ohkts11의 답변을 참조하십시오 .


19
나는 그 스위치를 피하고 싶다 : ux.stackexchange.com/questions/1318/…
ckarbass

3
이 사이트는 더 이상 존재하지 않습니다
w3bMak3r

@ w3bMak3r 맞습니다. 도메인 이름이 변경되었습니다. 업데이트되었습니다.
smonff

멋진 플러그인입니다. 사용하기 쉬운. 그러나 사파리 5.1.7의 문제. 한 번 클릭하면 다른 사람이 움직입니다. 아무도 이것을 해결할 수 있습니까?
Sarower Jahan

2
부트 스트랩 전환은 다른 부트 스트랩 기반의 대안이다
찰스 P.

58

HTML을 변경해도 괜찮다 data-toggle<button>s 의 속성을 사용할 수 있습니다 . 버튼 예제단일 토글 섹션을 참조하십시오 .

<button type="button" class="btn btn-primary" data-toggle="button">
    Single toggle
</button>

1
확인란 / 라디오 옵션 에서와 같이 단일 토글 에서 내부 확인란을 갖는 방법이 있습니까?
Shimmy Weitzhandler

3
aria-pressed="true"상태를 확인하는 데 사용할 수 있습니다
brauliobo

31

Bootstrap 3에는 확인란 또는 라디오 버튼을 기반으로 토글 버튼을 만드는 옵션이 있습니다. http://getbootstrap.com/javascript/#buttons

체크 박스

<div class="btn-group" data-toggle="buttons">
  <label class="btn btn-primary active">
    <input type="checkbox" checked> Option 1 (pre-checked)
  </label>
  <label class="btn btn-primary">
    <input type="checkbox"> Option 2
  </label>
  <label class="btn btn-primary">
    <input type="checkbox"> Option 3
  </label>
</div>

라디오 버튼

<div class="btn-group" data-toggle="buttons">
  <label class="btn btn-primary active">
    <input type="radio" name="options" id="option1" checked> Option 1 (preselected)
  </label>
  <label class="btn btn-primary">
    <input type="radio" name="options" id="option2"> Option 2
  </label>
  <label class="btn btn-primary">
    <input type="radio" name="options" id="option3"> Option 3
  </label>
</div>

이것이 작동하려면 .btnBootstrap의 Javascript로 s를 초기화해야합니다 .

$('.btn').button();

확인란 / 라디오 옵션 에서와 같이 단일 토글 에서 내부 확인란을 갖는 방법이 있습니까?
Shimmy Weitzhandler

@Shimmy : 버튼 그룹에 체크 박스 하나만 넣으면 동일한 동작이 나타납니다. 확인란 지원 단일 토글을 얻는 덜 장황한 방법을 알지 못합니다.
StriplingWarrior 2015 년

7

나는 자바 스크립트를 사용하여 수동으로 '활성'클래스를 활성화하려고했습니다. 완전한 라이브러리만큼 유용하지는 않지만 쉬운 경우에는 충분합니다.

var button = $('#myToggleButton');
button.on('click', function () {
  $(this).toggleClass('active');
});

신중하게 생각하면 'active'클래스는 버튼을 눌렀을 때 부트 스트랩에서 사용되며 그 전후 (우리의 경우)가 아니라 동일한 클래스를 재사용 할 때 충돌이 없습니다.

이 예제를 시도하고 실패하면 알려주세요 : http://jsbin.com/oYoSALI/1/edit?html,js,output


1
나는 사용자가 그것에 대해 묻지 않은 것 같지만 귀하의 응답은 내 질문에 대한 답변입니다!
tetri

어쨌든 사용자의 다음 질문이었을 것 같습니다.
eaglei22

5

작은 코드베이스를 유지하고 싶은 경우 응용 프로그램의 작은 부분에만 토글 버튼이 필요합니다. 대신에 당신이 자바 스크립트 코드를 유지하고 (angularjs, javascript, jquery) 평범한 CSS를 사용하는 것이 좋습니다.

좋은 토글 버튼 생성기 : https://proto.io/freebies/onoff/


3

여기에 이것은 부트 스트랩 토글 버튼에 매우 유용 합니다. 코드 스 니펫의 예 !! 아래 jsfiddle.

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet">
    <script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
    <input id="toggle-trigger" type="checkbox" checked data-toggle="toggle">
    <button class="btn btn-success" onclick="toggleOn()">On by API</button>
<button class="btn btn-danger" onclick="toggleOff()">Off by API</button>
<button class="btn btn-primary" onclick="getValue()">Get Value</button>
<script>
  //If you want to change it dynamically
  function toggleOn() {
    $('#toggle-trigger').bootstrapToggle('on')
  }
  function toggleOff() {
    $('#toggle-trigger').bootstrapToggle('off')  
  }
  //if you want get value
  function getValue()
  {
   var value=$('#toggle-trigger').bootstrapToggle().prop('checked');
   console.log(value);
  }
</script>
위에서 몇 가지 예를 보여 드렸습니다. 도움이되기를 바랍니다. Js Fiddle이 여기 있습니다. 소스 코드는 GitHub에서 사용할 수 있습니다.

2020 년 부트 스트랩 4 업데이트

2020 년에 bootstrap4-toggle 을 권장했습니다 .

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

<link href="https://cdn.jsdelivr.net/gh/gitbrent/bootstrap4-toggle@3.6.1/css/bootstrap4-toggle.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/gh/gitbrent/bootstrap4-toggle@3.6.1/js/bootstrap4-toggle.min.js"></script>

<input id="toggle-trigger" type="checkbox" checked data-toggle="toggle" data-onstyle="success">
<button class="btn btn-success" onclick="toggleOn()">On by API</button>
<button class="btn btn-danger" onclick="toggleOff()">Off by API</button>
<button class="btn btn-primary" onclick="getValue()">Get Value</button>

<script>
  //If you want to change it dynamically
  function toggleOn() {
    $('#toggle-trigger').bootstrapToggle('on')
  }
  function toggleOff() {
    $('#toggle-trigger').bootstrapToggle('off')  
  }
  //if you want get value
  function getValue()
  {
   var value=$('#toggle-trigger').bootstrapToggle().prop('checked');
   console.log(value);
  }
</script>


짧고 요점, 빠르고 쉬운 솔루션, 당신은 내 하루를 만들었습니다!
Mayer Spitzer 2019

2

CSS Toggle Switch 라이브러리를 사용할 수 있습니다. CSS를 포함하고 JS를 직접 프로그래밍하십시오. http://ghinda.net/css-toggle-switch/bootstrap.html


1
이것이 질문에 답할 수 있지만 여기에 링크가 아닌 실제 정보를 제공하는 것이 좋습니다. 링크 전용 답변은 좋은 답변으로 간주되지 않으며 삭제 될 수 있습니다 .
elixenide

그러나 이것은 설명에 대한 링크가 아닙니다. 내 대답에서 이름을 언급하고있는 실제 라이브러리에 대한 링크입니다. 여기에 전체 라이브러리 소스 코드를 게시하기를 정말로 원하십니까? 내 대답은 내가 라이브러리 이름을 언급하지 않고 "이 라이브러리 사용 : [링크]"라고 말한 경우에만 틀렸을 것입니다. 그러나 이름을 언급하고 있기 때문에 링크가 잘못되면 그는 대답이 적절하다고 생각합니다. / 그녀는 이름이 알려져 있으므로 다른 곳에서 라이브러리를 다운로드하려고 할 수 있습니다.
OMA

전체 라이브러리의 소스 코드를 게시 할 필요는 없지만 최소한 사용 방법에 대한 통찰력을 제공해야합니다. "CSS를 포함하고 JS를 직접 프로그래밍하십시오"는 계속 진행할 필요가 없으며 OP 또는 다른 사용자에게 도움이되지 않습니다.
elixenide

2
글쎄, 정말 사용하기 쉽습니다! CSS 코드 샘플 중 하나를 포함하고 원하는대로 JS를 프로그래밍하면됩니다. 원래의 포스터는 토글 버튼을 사용할 때 수행 할 특정 작업을 요구하지 않았기 때문에 실제 JS 프로그래밍에 대해 언급 할 수 없습니다. 그래서 그것에 대해 다른 말을 할 수 있습니까? 또한 수락 된 답변이 OK로 간주되는 이유는 무엇입니까? 또한 "링크 전용"답변입니다! (단지 "도움이되는지 확실하지 않지만 우수한 (비공식) 부트 스트랩 스위치를 사용할 수 있습니다. 그래도 라디오 유형을 사용합니다.") 왜 그 대답이 괜찮습니까? 링크 전용 특성에 대해서는 언급하지 않았습니다.
OMA



-1

누군가가 여전히 멋진 스위치 / 토글 버튼을 찾고 있다면 Rick의 제안을 따랐고 그 주위에 간단한 각도 지시문 angular-switch를 만들었습니다 . Windows 스타일 스위치를 선호하는 것 외에도 전체 다운로드는 위에서 언급 한 angular-bootstrap-switch 및 bootstrap-switch에 비해 훨씬 더 작습니다 (2kb vs 23kb 축소 된 css + js).

다음과 같이 사용합니다. 먼저 필요한 js 및 css 파일을 포함합니다.

<script src="./bower_components/angular-switch/dist/switch.js"></script>
<link rel="stylesheet" href="./bower_components/angular-switch/dist/switch.css"></link>

그리고 각도 앱에서 활성화하십시오.

angular.module('yourModule', ['csComp'
    // other dependencies
]);

이제 다음과 같이 사용할 준비가되었습니다.

<switch state="vm.isSelected" 
    textlabel="Switch" 
    changed="vm.changed()"
    isdisabled="{{isDisabled}}">
</switch>

여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.