开关

source code

mui提供了开关控件,点击滑动两种手势都可以对开关控件进行操作

默认开关控件,带on/off文字提示,打开时为绿色背景,基本class类为.mui-switch.mui-switch-handle,DOM结构如下:

<div class="mui-switch">
  <div class="mui-switch-handle"></div>
</div>

若希望开关默认为打开状态,只需要在.mui-switch节点上增加.mui-active类即可,如下:

<!-- 开关打开状态,多了一个.mui-active类 -->
<div class="mui-switch mui-active">
  <div class="mui-switch-handle"></div>
</div>

若希望隐藏on/off文字提示,变成简洁模式,需要在.mui-switch节点上增加.mui-switch-mini类,如下:

<!-- 简洁模式开关关闭状态 -->
<div class="mui-switch mui-switch-mini">
  <div class="mui-switch-handle"></div>
  </div>
  <!-- 简洁模式开关打开状态 -->
  <div class="mui-switch mui-switch-mini mui-active">
  <div class="mui-switch-handle"></div>
</div>

mui默认还提供了蓝色开关控件,只需在.mui-switch节点上增加.mui-switch-blue类即可,如下:

<!-- 蓝色开关关闭状态 -->
<div class="mui-switch mui-switch-blue">
  <div class="mui-switch-handle"></div>
  </div>
  <!-- 蓝色开关打开状态 -->
  <div class="mui-switch mui-switch-blue mui-active">
  <div class="mui-switch-handle"></div>
</div>

蓝色开关上增加.mui-switch-mini即可变成无文字的简洁模式

方法

若要获得当前开关状态,可通过判断当前开关控件是否包含.mui-active类来实现,若包含,则为打开状态,否则即为关闭状态;如下为代码示例:

var isActive = document.getElementById("mySwitch").classList.contains("mui-active");
if (isActive) {
  console.log("打开状态");
}else{
  console.log("关闭状态");
}

若使用js打开、关闭开关控件,可使用switch插件的toggle()方法,如下为示例代码:

mui("#mySwitch").switch().toggle();

事件

开关控件在打开/关闭两种状态之间进行切换时,会触发toggle事件,通过事件的detail.isActive属性可以判断当前开关状态。可通过监听toggle事件,可以在开关切换时执行特定业务逻辑。如下为使用示例:

document.getElementById("mySwitch").addEventListener("toggle",function(event){
  if (event.detail.isActive) {
    console.log("你启动了开关");
  }else{
    console.log("你关闭了开关");
  }
})

mui-switch-handle

开关上的滑块

Mui.css (v3.0.0)部分源码:

<!--4440-->
.mui-switch .mui-switch-handle
{
position: absolute;
z-index: 1;
top: -1px;
left: -1px;

width: 28px;
height: 28px;

-webkit-transition: .2s ease-in-out;
transition: .2s ease-in-out;
-webkit-transition-property: -webkit-transform, width,left;
transition-property: transform, width,left;

border-radius: 16px;
background-color: #fff;
background-clip: padding-box;
-webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, .4);
box-shadow: 0 2px 5px rgba(0, 0, 0, .4);
}
<!--4479-->
.mui-switch.mui-dragging .mui-switch-handle
{
width: 38px;
}
.mui-switch.mui-dragging.mui-active .mui-switch-handle
{
left: -11px;

width: 38px;
}
.mui-switch.mui-active
{
border-color: #4cd964;
background-color: #4cd964;
}
.mui-switch.mui-active .mui-switch-handle
{
-webkit-transform: translate(43px, 0);
transform: translate(43px, 0);
}
<!--4521-->
.mui-switch-mini.mui-active .mui-switch-handle
{
-webkit-transform: translate(16px, 0);
transform: translate(16px, 0);
}

mui-switch

定义开关背景与文字(on/off)

默认开关控件,带on/off文字提示,打开时为绿色背景,基本class类为.mui-switch.mui-switch-handle,DOM结构如下:

<div class="mui-switch">
  <div class="mui-switch-handle"></div>
</div>

若希望开关默认为打开状态,只需要在.mui-switch节点上增加.mui-active类即可,如下:

<!-- 开关打开状态,多了一个.mui-active类 -->
<div class="mui-switch mui-active">
  <div class="mui-switch-handle"></div>
</div>

重新定义背景文字与颜色:

.mui-switch:before{
color: #8A6DE9;
content: '关';
}
.mui-switch.mui-active:before{
color: #FFFF00;
content: '开';
}

Mui.css (v3.0.0)部分源码:

<!--4415-->
.mui-switch
{
  position: relative;

  display: block;

  width: 74px;
  height: 30px;

  -webkit-transition-timing-function: ease-in-out;
  transition-timing-function: ease-in-out;
  -webkit-transition-duration: .2s;
  transition-duration: .2s;
  -webkit-transition-property: background-color, border;
  transition-property: background-color, border;

  border: 2px solid #ddd;
  border-radius: 20px;
  background-color: #fff;
  background-clip: padding-box;
}
.mui-switch.mui-disabled
{
  opacity: .3;
}
<!--4461-->
.mui-switch:before
{
  font-size: 13px;

  position: absolute;
  top: 3px;
  right: 11px;

  content: 'Off';
  text-transform: uppercase;

  color: #999;
}
<!--4489-->
.mui-switch.mui-active
{
  border-color: #4cd964;
  background-color: #4cd964;
}
<!--4499-->
.mui-switch.mui-active:before
{
  right: auto;
  left: 15px;

  content: 'On';

  color: #fff;
}

mui-switch-mini

隐藏开关on/off文字提示,变成简洁模式

若希望隐藏on/off文字提示,变成简洁模式,需要在.mui-switch节点上增加.mui-switch-mini类,如下:

<!-- 简洁模式开关关闭状态 -->
<div class="mui-switch mui-switch-mini">
  <div class="mui-switch-handle"></div>
  </div>
  <!-- 简洁模式开关打开状态 -->
  <div class="mui-switch mui-switch-mini mui-active">
  <div class="mui-switch-handle"></div>
</div>

Mui.css (v3.0.0)部分源码:

<!--4513-->
.mui-switch-mini
{
  width: 47px;
}
.mui-switch-mini:before
{
  display: none;
}
.mui-switch-mini.mui-active .mui-switch-handle
{
  -webkit-transform: translate(16px, 0);
  transform: translate(16px, 0);
}

mui-switch-blue

蓝色开关控件

mui默认还提供了蓝色开关控件,只需在.mui-switch节点上增加.mui-switch-blue类即可,如下:

<!-- 蓝色开关关闭状态 -->
<div class="mui-switch mui-switch-blue">
  <div class="mui-switch-handle"></div>
  </div>
  <!-- 蓝色开关打开状态 -->
  <div class="mui-switch mui-switch-blue mui-active">
  <div class="mui-switch-handle"></div>
</div>

Mui.css (v3.0.0)部分源码:

<!--4527-->
.mui-switch-blue.mui-active
{
border: 2px solid #007aff;
background-color: #007aff;
}
上次更新: 2018-10-22 08:21:38