rsCheckboxSwitch是一个jQuery插件,可帮助开发人员在网页上创建逼真、动画化和键盘可访问的滑动/切换/推送开关
该插件支持一组不同的HTML标记,包括复选框、按钮和DIV元素。它还包括许多选项,用于自定义switch元素的外观、感觉和行为。
1.在HTML文档中下载并加载rsCheckboxSwitch插件的文件。
<link rel="stylesheet" href="/path/to/rsCheckboxSwitch.css" /> <script src="/path/to/cdn/jquery.slim.min.js"></script> <script src="/path/to/jquery.rsCheckboxSwitch.js"></script>
2.将一个元素转换为开关。
<!-- Checkbox --> <input class="demo" type="checkbox" /> <!-- Div Button --> <div class="demo"> Press me </div> <!-- Button --> <button class="demo"> Press me </button>
$('.demo').rsCheckboxSwitch({
// ...
});
3.设置开关样式。默认值:“滑动”。滑动开关只显示一半(ON或OFF),而另一半隐藏。这意味着,开关必须比容器长才能夹住开关。拨动开关或按钮开关的尺寸总是相同的。切换开关不进行滑动,而是保持在相同的位置,并可以设置动画,从“打开”转换为“关闭”(反之亦然)。
$('.demo').rsCheckboxSwitch({
type: "push",
});
4.所有可能的自定义开关的插件选项。
$('.demo').rsCheckboxSwitch({
// slidingType is only meaningful if type is 'sliding'
slidingType: {
// Classes for the outer container.
// Add:
// - corners-rounded for full rounded corners;
// - corners-halfrounded for 50% rounded corners;
// - corners-quarterrounded for 25% rounded corners;
// - corners-sharp for no rounded corners;
// If none of the above three are specified, corners-rounded is used.
outerClass: 'checkboxswitch-outer sliding corners-rounded',
// Classes for the element that slides inside the outer element.
sliderClass: 'switch',
// Classes for the handle usually located in the middle of the slider element.
handleClass: 'handleflat',
// Classes for the handle when mouse is applied to it. Type: string.
pushdownClass: 'down',
// Classes used during the time user is moving the switch with the mouse.
draggingClass: 'switch-dragging',
// Classes applied to the topmost element for vertical sliders (when horizontal is false).
verticalClass: 'vert',
// Classes applied to the topmost element when the slider is flipped
flippedClass: 'flipped',
// Determines the location of the on and off.
// When flipped is false, the switch is ON--OFF (for horizontal switches) or ON on the top and OFF on the bottom (for vertical switches)
// When flipped is true, the switch is OFF--ON (for horizontal switches) or OFF on the top and ON on the bottom (for vertical switches)
flipped: false,
// Determines the switch orientation, either horizontal or vertical.
horizontal: true
},
// toggleType is only meaningful if type is 'toggle'
toggleType: {
// Classes for the container. Type: string.
// Add:
// - corners-rounded for full rounded corners;
// - corners-halfrounded for 50% rounded corners;
// - corners-quarterrounded for 25% rounded corners;
// - corners-sharp for no rounded corners;
// If none of the above four are specified, corners-rounded is used.
outerClass: 'checkboxswitch-outer toggle corners-rounded',
// Determines whether a span child is used to display 0 or 1 (you can change CSS to display something else).
showOnOff: true,
// Class added to the span created when showOnOff is true.
onOffClass: 'onoff',
// Specifies the text caption that appears in toggle switches.
// If null, then uses the text from the markup.
// If the plugin is not bounded to an <input type=checkbox> element, this caption is appended to the existing markup text (if any).
// Type: String.
caption: null,
// Each class represents a frame in the animation that runs from OFF to ON position.
// Type: array of String.
// The first class is used for the OFF image, the last for the ON image.
// Optional frames in the middle can be used to create a more realistic animation.
// For ON to OFF animations, the plug-in simply iterates from the last to the first class.
frameClasses: ['frm1', 'frm2', 'frm3', 'frm4', 'frm5']
},
// pushType is only meaningful if type is 'push'
pushType: {
// Classes for the container.
// Add:
// - corners-rounded for full rounded corners;
// - corners-halfrounded for 50% rounded corners;
// - corners-quarterrounded for 25% rounded corners;
// - corners-sharp for no rounded corners;
// If none of the above four are specified, corners-rounded is used.
outerClass: 'checkboxswitch-outer toggle push corners-rounded',
// Determines whether a span child is used to display 0 or 1 (you can change CSS to display something else).
showOnOff: true,
// Class added to the span created when showOnOff is true.
onOffClass: 'onoff',
// Specifies the text caption that appears in toggle switches.
// If null, then uses the text from the markup.
// If the plugin is not bounded to an <input type=checkbox> element, this caption is appended to the existing markup text (if any).
caption: null,
// Each class represents a frame in the animation that runs from OFF to ON position.
// Type: array of String.
// The first class is used for the OFF image, the last for the ON image. Optional frames in the middle can be used to create a more realistic animation.
// For ON to OFF animations, the plug-in simply iterates from the last to the first class.
frameClasses: ['frm1', 'frm2', 'frm3', 'frm4']
},
keyboard: {
// Allowed keys on focusable switches.
// Type: String array.
// Key events are ignored for non focusable switches.
// A switch is focusable when the associated markup is an <input type="checkox"> with no disabled attribute, or any HTML element with a tabindex attribute.
allowed: ['enter', 'esc', 'space'],
// Determines whether pressing Esc key rollsback to the value the switch had before gaining focus (the committed value).
// Type: boolean or string.
// Rolling back has no effect when the current value is the same as the committed value.
// true - Pressing Esc on a focusable switch rollsback value. Change events are not fired. Note that 'esc' should be present in the allowed property array (see above).
// false - Ignores Esc keystrokes.
// 'trueWithEvents' - Pressing Esc on a focusable switch rollsback value.
// If it rolls back to On, then OnChange and OnChangeOn are fired.
// If it rolls back to Off, then OnChange and OnChangeOff are fired.
rollbackOnEsc: true,
// Determines whether the value toggles on Enter or Space.
// true - Pressing Enter or Space changes value. Note that 'enter' or 'space' should be present in the allowed property array (see above).
// false - Ignores Enter or Space keystrokes.
toggleOnEnter: true,
// Determines whether the value is saved when switch loses focus. Type: boolean.
// true - The current value is commited when switch loses focus.
// false - Value is not commited.
commitOnBlur: false
},
// Classes set to the outer div when the switch has been changed.
changedClass: 'changed',
// Classes set to the outer div when the switch is disabled.
disabledClass: 'disabled',
// Determines whether the control is editable.
// If the plugin is associated with a disabled <input type="checkbox" disabled>, then enabled is set to false.
enabled: true,
// Handle animation in milliseconds. Type: positive integer number.
// For Sliding switches, specifies the time it takes to move from one side to the other.
// For Toggle or Push switches, specifies the time it takes to change from one position to another.
speed: 75,
// Event fired when switch changes to either On or Off.
// Type: function (event, $elem, value)
onChange: null,
// Event fired when switch changes to On position.
// Type: function (event, $elem)
// If the markup is an <input type="checkbox"> then an attribute checked="checked" is added.
// If other markup is used, then an attribute data-checked="checked" is added.
onChangeOn: null,
// Event fired when switch changes to OFF position.
// Type: function (event, $elem)
// If the markup is an <input type="checkbox"> then the attribute checked="checked" is removed.
// If other markup is used, then the attribute data-checked="checked" is removed.
onChangeOff: null
});
5.API方法。
// refresh$e.rsCheckboxSwitch('refresh')
$e.rsCheckboxSwitch('refresh', false)
$e.rsCheckboxSwitch('refresh', true)
// toggle
$e.rsCheckboxSwitch('toggle')
// set on/off states without animations
$e.rsCheckboxSwitch('on')
// OnChange and onChangeOn are never fired
$e.rsCheckboxSwitch('on', false)
OnChange and onChangeOn are always fired
$e.rsCheckboxSwitch('on', true)
$e.rsCheckboxSwitch('off')
$e.rsCheckboxSwitch('off', false)
$e.rsCheckboxSwitch('off', true)
// set on/off states with animations
$e.rsCheckboxSwitch('onAnim')
$e.rsCheckboxSwitch('onAnim', false)
$e.rsCheckboxSwitch('onAnim', true)
$e.rsCheckboxSwitch('offAnim')
$e.rsCheckboxSwitch('offAnim', false)
$e.rsCheckboxSwitch('offAnim', true)
// Rollsback the switch to the original value
$e.rsCheckboxSwitch('rollback')
// Change events are never fired
$e.rsCheckboxSwitch('rollback', false)
// Change events are always fired
$e.rsCheckboxSwitch('rollback', true)
// Notifies the plugin that current value is the "new" original one.
$e.rsCheckboxSwitch('commit')
// Unbinds all events and completely removes the plugin from the page.
$e.rsCheckboxSwitch('destroy')
6.沉降器和沉降器。
// Returns the current onChange event function handler
var onChangeFunction = $e.rsCheckboxSwitch('option', 'onChange');
// Returns the current onChangeOn event function handler
var onChangeOnFunction = $e.rsCheckboxSwitch('option', 'onChangeOn');
// Returns the current onChangeOff event function handler
var onChangeOffFunction = $e.rsCheckboxSwitch('option', 'onChangeOff');
// Returns true if switched was changed, false otherwise.
// "Changed" means the current value is different from the current commited value.
var changed = $e.rsCheckboxSwitch('option', 'changed');
// Returns switch current value.
var isOn = $e.rsCheckboxSwitch('option', 'value');
// Retuns true if switch can be changed by the user, false otherwise.
var isEnabled = $e.rsCheckboxSwitch('option', 'enabled');
// Sets the onChange event function handler
$e.rsCheckboxSwitch('option', 'onChange', function (event, $elem, value) { alert('value changed to ' + value); } );
// Sets the onChangeOn event function handler
$e.rsCheckboxSwitch('option', 'onChangeOn', function (event, $elem) { alert('value changed to true'); } )
// Sets the onChangeOff event function handler
$e.rsCheckboxSwitch('option', 'onChangeOff', function (event, $elem) { alert('value changed to false'); } )
// Enables or disables the switch control.
$e.rsCheckboxSwitch('option', 'enabled', true);
$e.rsCheckboxSwitch('option', 'enabled', false);
7.覆盖Less中的默认变量。
// recommended #454545 for dark layout and #f2f2f2 for light layout @background: #454545; // recommended 12% for dark layout and 18% for light layout @deltaContrast: 12%; @text: #bab026; // Allowed units are: px, pt (for fixed layout) or em, rem, vw, vh, vmin, vmax (for elastic layout). // To try other sizes, you only need to change this line. All the rest will resize according to this @refScale // 1em corresponds to 16px in most browsers, which is the default font size. // However, some users might define another default font size for accessibility reasons. // To convert px to em, do em = px/16. Example: 8px = .5em @refScale: 5vw; @fromGradientOuter: darken(@background, @deltaContrast); @toGradientOuter: lighten(@background, @deltaContrast); @fromGradientInner: darken(@toGradientOuter, 10%); @toGradientInner: darken(@fromGradientOuter, 2%); @borderColor: darken(@fromGradientOuter, lightness(@background)/10 + 3%); @sliderMaxSize: @refScale*6; @sliderMinSize: @refScale*1.3; @sliderHandleSize: @refScale*2; @textoff: @fromGradientOuter; @texton: desaturate(@text, lightness(@background)/1.8);