移動端網頁特效:左右滑動開關


網上搜索“左右滑動開關”,結果有很多諸如:純CSS3左右滑動開關按鈕等。但事實上,這種按鈕是click事件觸發的。在手機網頁上用這種組件,對於IPhone用戶,見多了很多這種滑動按鈕,如果點擊觸發,會顯得很不協調。

說白了,網上的這種按鈕都是點擊按鈕而非滑動按鈕。我們現在要找一個滑動事件來替代click事件,最先想到的是touch相關的事件,后來在wscschool上找到了

Swipe事件:http://www.w3school.com.cn/jquerymobile/jquerymobile_events_touch.asp;。

這個解決方案需要引入jQuery Mobile;需要注意引入這個js后產生一系列的添加樣式。

代碼:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>無標題文檔</title>
<style>
/****去掉jquery mobile的loading****/
 .ui-loader-default{ display:none}
 .ui-mobile-viewport{ border:none;}
 .ui-page {padding: 0; margin: 0; outline: 0} 
/******滑動開關按鈕*****/
.ui-switch {
    /*position: absolute;*/
    font-size: 16px;
    /*right: 15px;*/
    top: 6px;
    width: 52px;
    height: 22px;
    line-height: 1em;
    margin-right: 50px;
    margin-top: 5px;
}

.ui-switch .input {
    width: 52px;
    height: 22px;
    position: absolute;
    z-index: 10;
    border: 0;
    background: 0 0;
    -webkit-appearance: none;
    outline: 0
}

.ui-switch .input:before {
    content: '';
    width: 50px;
    height: 25px;
    border: 1px solid #dfdfdf;
    background-color: #fdfdfd;
    border-radius: 20px;
    cursor: pointer;
    display: inline-block;
    position: relative;
    vertical-align: middle;
    -webkit-user-select: none;
    user-select: none;
    -webkit-box-sizing: content-box;
    box-sizing: content-box;
    border-color: #dfdfdf;
    -webkit-box-shadow: #dfdfdf 0 0 0 0 inset;
    box-shadow: #dfdfdf 0 0 0 0 inset;
    -webkit-transition: border .4s, -webkit-box-shadow .4s;
    transition: border .4s, box-shadow .4s;
    -webkit-background-clip: content-box;
    background-clip: content-box
}

.ui-switch.cur .input:before {
    border-color: #ed6459;
    -webkit-box-shadow: #ed6459 0 0 0 16px inset;
    box-shadow: #ed6459 0 0 0 16px inset;
    background-color: #ed6459;
    transition: border .4s, box-shadow .4s, background-color 1.2s;
    -webkit-transition: border .4s, -webkit-box-shadow .4s, background-color 1.2s;
    background-color: #ed6459
}

.ui-switch.cur .input:after {
    left: 27px
}

.ui-switch .input:after {
    content: '';
    width: 25px;
    height: 25px;
    position: absolute;
    top: 1px;
    left: 0;
    border-radius: 100%;
    background-color: #fff;
    -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .4);
    box-shadow: 0 1px 3px rgba(0, 0, 0, .4);
    -webkit-transition: left .2s;
    transition: left .2s
}
</style>
</head>
<body>
<div>
    <label  class="ui-switch">
        <span class="input"></span>
    </label>
</div>

<script src="../../assets/js/jquery.min.js"></script>
<script>
//去掉 jquery mobile默認給input的添加,。順序在引入之前
$("input").attr('data-role','none');  
$("select").attr('data-role','none');
</script>
<script src="../../assets/js/jquery.mobile.js"></script>
<script>
     $(".ui-switch").on('swipe',function(){
        if($(this).attr("class").indexOf("cur")>0) {
            $(this).removeClass("cur");
        }
        else{
            $(this).addClass("cur");
        }
    });
</script>
</body>
</html>

  

至此,從點擊的開關變成了滑動的開關。有點問題,其實只用到了jQuery Mobile中的

Swipe事件,其他的並沒有用到,有必要把這個事件單獨取出來引用。這個后期考慮吧~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM