MIUI選項框開關樣式模擬

来源:http://www.cnblogs.com/imwtr/archive/2016/09/20/5888283.html
-Advertisement-
Play Games

有IOS的開關模擬,當然也有MIUI的開關模擬 看到設置選項裡面的開關樣式,突發奇想地來試試 最終效果如圖: 實現過程 1. 選項框checkbox 模擬開關當然需要一個選項框,這裡用到了覆選框checkbox 2. 理解開關的過程 點擊開關按鈕,則開啟或關閉。原生的checkbox無法做到圖示的效 ...


有IOS的開關模擬,當然也有MIUI的開關模擬

看到設置選項裡面的開關樣式,突發奇想地來試試

  

 

最終效果如圖:

 

 

實現過程

1. 選項框checkbox 

模擬開關當然需要一個選項框,這裡用到了覆選框checkbox

2. 理解開關的過程

點擊開關按鈕,則開啟或關閉。原生的checkbox無法做到圖示的效果,所以就需要額外的元素來表示圖中的開關

而我們又要使用到checkbox的點擊效果以及點擊後是否選中(checked)的效果,所以checkbox不能隱藏,但可以用覆蓋的方式

為了減少多餘標簽的使用,可以使用偽元素:before、:after ,標簽結構為

  <div class="switch-wrap">
        <span><span class="switch-action">開啟</span>WLAN</span>
        <label class="switch">
            <input type="checkbox" name="switch" id="switch">
        </label>
    </div>

3. 開關的實現

用:before偽元素作為開關背景層,用:after偽元素作為開關項(即那個小圓圈)

        .switch input:before {
            content: '';
            display: inline-block;
            position: relative;
            border-radius: 20px;
            border: 1px solid #ccccc6;
            box-shadow: 0 0 1px 1px #ececf3;
            background-color: #fff;
            cursor: pointer;
        }
        .switch input:after {
            content: '';
            position: absolute;
            width: 12px;
            height: 12px;
            top: 2px;
            left: 3px;
            border-radius: 50%;
            background-color: #ccccc6;
            transition: .2s left, .2s background-color;
        }

初始小圓圈在左側,當開關狀態為開啟時,右移,並更新開啟狀態的背景色

        .switch input:checked:after {
            left: 15px;
            background-color: #36a6fa;
            transition: .2s left, .2s background-color;
        }

 

以上就是關鍵的代碼了,以下為完整的樣式

 1 <style>
 2     .switch-wrap {
 3             position: relative;
 4             margin: 50px auto;
 5             width: 120px;
 6             height: 40px;
 7             font: 14px/1.5 Arial, Sans-Serif;
 8         }
 9 
10         .switch,
11         .switch input,
12         .switch input:before {
13             width: 30px;
14             height: 14px;
15         }
16 
17         .switch input {
18             position: absolute;
19             right: 0;
20         }
21 
22         .switch input:before {
23             content: '';
24             display: inline-block;
25             position: relative;
26             border-radius: 20px;
27             border: 1px solid #ccccc6;
28             box-shadow: 0 0 1px 1px #ececf3;
29             background-color: #fff;
30             cursor: pointer;
31         }
32 
33         .switch input:after {
34             content: '';
35             position: absolute;
36             width: 12px;
37             height: 12px;
38             top: 2px;
39             left: 3px;
40             border-radius: 50%;
41             background-color: #ccccc6;
42             transition: .2s left, .2s background-color;
43         }
44 
45         .switch input:checked:after {
46             left: 15px;
47             background-color: #36a6fa;
48             transition: .2s left, .2s background-color;
49         }
50 
51 
52     </style>
完整CSS代碼

 

4. 開關的測試

最後,可結合JS檢測一下開關的狀態變化

    <script src="jquery.js"></script>
    <script type="text/javascript">
        $('#switch').change(function() {
            $('.switch-action').text(this.checked ? '關閉' : '開啟');
        });
    </script>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 定義:為創建一組相關或相互依賴的對象提供一個介面,而且無需指定他們的具體類。 類型:創建類模式 類圖: 抽象工廠模式與工廠方法模式的區別 抽象工廠模式是工廠方法模式的升級版本,他用來創建一組相關或者相互依賴的對象。他與工廠方法模式的區別就在於,工廠方法模式針對的是一個產品等級結構;而抽象工廠模式則是 ...
  • 簡記: this在不同情況下的指向: 1.普通函數調用,this指向window對象 2.作為對象的方法被調用,由對象調用,this指向該對象 3.使用new構造函數,創建新實例,實例的方法或屬性的this指向新實例 4.apply/call調用的時候,this指向由參數設定的對象值 ...
  • JsRender不少前端人員應該都用過,它是一個比較強大的模板,不牽涉太多技術依賴,使用起來非常舒服。我本人在前端開發中使用React之前,都是用的它了(實際上我感覺React沒有JsViewes好用)。不管怎麼說,先來學習下JsRender技術吧,如果前端的開發環境比較單純,還是很適合的。 一、J ...
  • × 目錄 [1]語法規則 [2]stringify [3]parse 前面的話 json(javascript object notation)全稱是javascript對象表示法,它是一種數據交換的文本格式,而不是一種編程語言,用於讀取結構化數據。2001年由Douglas Crockford提出 ...
  • 文檔中的每個元素被描繪為矩形盒子。渲染引擎的目的就是判定大小,屬性——比如它的顏色、背景、邊框方面——及這些盒子的位置。在CSS中,這些矩形盒子用標準盒模型來描述。這個模型描述了一個元素所占用的空間。每一個盒子有四條邊界:外邊距邊界margin, 邊框邊界border, 內邊距邊界padding與內 ...
  • 實現效果 實現代碼 ...
  • 如果html為 <input type="radio" id="test" name="test" value="1" /><span>測試1</span>則js為:$("input[name='test']:checked").next("span").text() 如果html為 <input ...
  • 邊框漸變: 文字漸變:(只支持-webkit-) 背景漸變: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...