Toggle button (cross browser)

This is a stylized form field toggle button. On Off / yes no

by rdillman

HTML

<div class="slider-frame">
    <span class="slider-text on">No</span>   
    <span class="slider-button on"></span>
    <span class="slider-text off">Yes</span>    
</div>
<input type="text" class="slider-value" value="false">

CSS

.slider-frame {
  position: relative;
  display: block;
  margin: 0;
  padding: 0;
  margin: 0 auto;
  width: 85px;
  height: 29px;
  background-color: #D0EBEF;
  border: 1px solid #B9DAE4;
  -moz-border-radius: 20px;
  border-radius: 20px;
  -webkit-box-shadow: inset 0px 1px 8px 0 rgba(0, 0, 0, 0.25);
  -moz-box-shadow: inset 0px 1px 8px 0 rgba(0, 0, 0, 0.25);
  box-shadow: inset 0px 1px 8px 0 rgba(0, 0, 0, 0.25);
  cursor:pointer;
}
.slider-frame .slider-button {
  display: block;
  margin: 0;
  padding: 0;
  width: 30px;
  height: 27px;
  line-height: 27px;
    background: #FFFFFF;
    background-image: -webkit-gradient(linear, left top, left bottom, from(#008399), to(#F0F6F7)); /* Saf4+, Chrome */
    background-image: -webkit-linear-gradient(top, #FFFFFF, #F0F6F7); /* Chrome 10+, Saf5.1+ */
    background-image: -moz-linear-gradient(top, #FFFFFF, #F0F6F7); /* FF3.6+ */
    background-image: -ms-linear-gradient(top, #FFFFFF, #F0F6F7); /* IE10 */
    background-image: -o-linear-gradient(top, #FFFFFF, #F0F6F7); /* Opera 11.10+ */
    background-image: linear-gradient(top, #FFFFFF, #F0F6F7); 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFFFFF, endColorstr=#F0F6F7); 
  -moz-border-radius: 20px;
  border-radius: 20px;
  border: 1px solid #B9DAE4;
  -webkit-transition: all 0.25s ease-in-out;
  -moz-transition: all 0.25s ease-in-out;
  transition: all 0.25s ease-in-out;
  color: #fff;
  font-family:Helvetica;
  font-size:11px;
  font-weight: bold;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
  text-align: center;
  cursor: pointer;
    z-index:20;
}
.slider-frame .slider-button.on,
.slider-frame:hover .slider-button{
    background: #F0F6F7;
    background-image: -webkit-gradient(linear, left top, left bottom, from(#F0F6F7), to(#FFFFFF));
    background-image: -webkit-linear-gradient(top, #F0F6F7, #FFFFFF);
    background-image: -moz-linear-gradient(top, #F0F6F7, #FFFFFF);
    background-image: -ms-linear-gradient(top, #F0F6F7, #FFFFFF);
...

JavaScript

$(document).ready(function() {
    $('.slider-frame').toggle(function() {
        $(this).find('.slider-text.on').hide();
        $(this).find('.slider-button').removeClass('on');
        $(this).find('.slider-text.off').show();
        $('.slider-frame').css('background-color', '#0095AA');
        $('.slider-value').val(true);
    }, function() {
        $(this).find('.slider-text.off').hide();
        $(this).find('.slider-button').addClass('on');
        $(this).find('.slider-text.on').show();
        $('.slider-frame').css('background-color', '#D0EBEF');
        $('.slider-value').val(false);
    });
});