CSS3新特性應用之用戶體驗

来源:http://www.cnblogs.com/cqhaibin/archive/2016/12/26/6221170.html
-Advertisement-
Play Games

一、游標 新增加not-allowed游標,不允許訪問 隱藏游標,在觸模應用上很有用,css2.1需要一個透明的圖片來實現,而css3直接用cursor:none即可。 完整代碼: 二、擴大熱區 應用在小按鈕的情況下,不好被滑鼠點擊到 代碼如下: 三、自定義覆選框 系統自帶覆選框美化 利用css3提 ...


一、游標

  • 新增加not-allowed游標,不允許訪問
  • 隱藏游標,在觸模應用上很有用,css2.1需要一個透明的圖片來實現,而css3直接用cursor:none即可。
  • 完整代碼:
curosr: url(transparent.gif');
cursor: none;

二、擴大熱區

  • 應用在小按鈕的情況下,不好被滑鼠點擊到
  • 代碼如下:
.btn{
    position: relative;
    cursor: pointer;
}
.btn:after{
    position: absolute;
    content: '';
    top:-10px;
    right: -10px;
    bottom: -10px;
    left: -10px;
}

三、自定義覆選框

  • 系統自帶覆選框美化
    • 利用css3提供的:checked偽類選擇器實現
    • 寬、高、對齊等設置單位最好用em,讓按鈕變得更為靈活
    • 示例代碼:
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        input[type="checkbox"]{
            display: none;    
        }
        input[type="checkbox"] + label::before{
            content: '\a0'; /*不換行空格*/
            display: inline-block;
            background: silver;
            border-radius: .2em;
            margin-right: .2em;
            width: .8em;
            height: .8em; 
            line-height: .65em;
            text-indent: .15em;
        }
        input[type="checkbox"]:checked + label::before{
            content: '\2713';
            background: yellowgreen;
        }
    </style>
</head>
<body>
    <input type="checkbox" id="anesome"/>
    <label for="anesome">anesome</label>
</body>
  • 開關按鈕的實現
    • 偽類選擇器 + 修飾label元素實現
    • 示例代碼:
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        input[type="checkbox"]{
            display: none;    
        }
        input[type="checkbox"] + label{ 
            display: inline-block;
            padding: .3em .5em;
            background: #ccc;
            border: 1px solid rgba(0, 0, 0, .2);
            background-image: linear-gradient(#ddd,#bbb);
            text-align: center;
            border-radius: .3em;
            box-shadow: 0 1px white inset;
            text-shadow: 0 1px 1px white;
        } 
        input[type="checkbox"]:checked + label{
            box-shadow: .05em .1em .2em rgba(0, 0, 0, .6) inset;
            border-color: rgba(0, 0, 0, .3);
            background: #bbb;
        }
    </style>
</head>
<body>
    <input type="checkbox" id="anesome"/>
    <label for="anesome">anesome</label>
</body>

四、通過陰影來弱化背景

  • 傳統方式,增加一個背景元素和一個內容元素實現,背景遮罩擋住所有,內容元素展示一切,簡單不做示例。
  • body上增加一個偽元素,與傳統方式一樣,只是減少背景元素而已
  • 重點介紹box-shadow實現
    • 實現方式讓內容元素產生一個巨大的陰影,不偏移也不模糊
    • H5單位介紹(利用單位解決大屏遮罩層顯示不全的問題)
      • em:相對父級的font-size,1em=16px;
      • rem:相對根元素的font-size
      • vh和vw:IE10 + 和現代瀏覽器 1vh = viewport的高的1%,vw相同;
      • vmax和vmin
        • ie10 + 和現代瀏覽器都支持vmin,ie全部都不支持vmax
        • vmin表示vh和vw中比較小的值
        • vmax表示vh和vw中比較大的值
        • 1vmax表示1vh和1vm之間較大的值
      • ch和ex
      • ie9+和現代瀏覽器都支持,依據當前font-family的相對單位
        • ch:字元0的寬度
        • ex:小寫字元x的高度
    • 當頁面有滾動條時,遮罩層的邊緣會露出來,除非用position:fixed定位,但又防止頁面本身就有滾動條
    • box-shadow不能產生交互事件(獨立元素的遮罩層),只能在視覺上帶來引導
    • box-shadow只限於沒有滾動條 + 只做引導層的場景。
    • 示例代碼:
.wrap{
    margin: 0 auto;
    width: 200px;
    height: 100px;
    box-shadow: 0 0 0 50vmax rgba(0, 0, 0, .8);
}

五、通過模糊來弱化背景

  • 主要利用blur來模糊背景
  • 由於blur應用的元素,相對所有的子元素都會被模糊,所以除高亮元素之外其他元素都包含在一個main元素下麵。
  • 示例代碼:
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        main{
            transition: .6s;
        }
        main.de-emphasized{
            filter: blur(2px);
        }
        main.de-emphasized + dialog{
            display: block;
        }
    </style>
</head>
<body>
    <main class="de-emphasized" >在圖6-16 中可以看到,這已經是一個巨大的進步了。不過,現在這個
模糊效果是突然出現的,看起來不是那麼自然,反而給人一種突兀的感覺。
由於CSS 濾鏡是可以設置動畫的,我們可以讓頁面背景的模糊過程以過渡
動畫的形式來呈現。</main>
<dialog>dialog in html</dialog>
</body>

六、滾動提示

  • 利用radial-gradient做圓形徑向漸變
    • radial-gradient(center,shape,size,start-color,...,stop-color);
    • center:是一個坐標值,表示原點位置,預設為50% 50%
    • shape:預設為ellipse(橢圓),可以設置為circle(正圓)
    • size:四個值,closest-side(最近邊),farthest-side(最遠邊),closest-corner(最近角),farthest-corner(最遠角)
    • 角度都是離圓心最近與最遠的角,四個角度
  • 示例代碼:
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .wrap{
            overflow: auto;
            width: 10em;
            height: 8em;
            padding: .3em .5em;
            border: 1px solid silver;

            background: linear-gradient(white 30%, transparent), radial-gradient(at 50% 0, rgba(0, 0, 0, .2),transparent 70%);
            background-repeat: no-repeat;
            background-size: 100% 50px, 100% 15px;
            background-attachment: local, scroll;
        }
        .radi{
            background: -webkit-radial-gradient(40% 37%, closest-corner, red, grey);
            width: 200px;
            height: 100px;
        }
        .radi02{
            margin-top: 10px;
            background: -webkit-radial-gradient(40% 37%, farthest-corner, red, grey);
            width: 200px;
            height: 100px;
        }
    </style>
</head>
<body>
    <ul class="wrap" >
        <li>Ada Catlace</li>
        <li>Alan Purring</li>
        <li>Schrödingcat</li>
        <li>Tim Purrners-Lee</li>
        <li>WebKitty</li>
        <li>Json</li>
        <li>Void</li>
        <li>Neko</li>
        <li>NaN</li>
        <li>Cat5</li>
        <li>Vector</li>
    </ul>
    <div class="radi"></div>
    <div class="radi02"></div>
</body>

七、圖片對比控制項

  • 利用resize這個css3屬性,可以設置none(不可改變)、horizontal(水平)、vertical(垂直)、both(所有)三個值。
  • both時,會在右下角有一個可改提示,其他沒有。
  • 示例代碼:
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .wrap{
            position: relative;
            display: inline-block;
        }
        .wrap > div{
            position: absolute;
            top: 0; bottom: 0; left: 0;
            width: 50%;
            resize: horizontal;
            overflow: hidden;  
        }
        .wrap > div::after{
            position: absolute;
            content: '';
            bottom: 0; right: 0;
            width: 12px;
            height: 12px;
            cursor: ew-resize;
            padding: 5px;
            background: linear-gradient(-45deg,white 50%, transparent 0);
            background-clip: content-box;
        }
        .wrap img{
            display: block;
            user-select: none;
        } 
    </style>
</head>
<body>
    <div class="wrap">
        <div>
            <img src="../img/cat-alpha.png" alt="">
        </div>
        <img src="../img/cat.png" alt="">
    </div>  
</body>

  • 利用h5的range標簽實現,需要Js的配合,使用其oninput事件監聽range組件改變的值。
  • 示例代碼:
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .wrap{
            position: relative;
            display: inline-block;
        }
        .wrap > div{
            position: absolute;
            top: 0; bottom: 0; left: 0;
            width: 50%; 
            overflow: hidden;
        } 
        .wrap img{
            display: block;
            user-select: none;
        } 
        input[type="range"]{
            position: absolute;
            bottom: 10px;   
            width: 100%;
            user-select: none;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <div class ="img">
            <img src="../img/cat-alpha.png" alt="">
        </div>
        <img id="destImg" src="../img/cat.png" alt=""> 
    </div>   
    <script>
        window.onload = function(){ 
            var rang = document.createElement('input');
            rang.type='range';  
            rang.min="0";
            rang.max="100";
            var div = document.getElementsByClassName('img')[0];
            var wrap = document.getElementsByClassName('wrap')[0]; 
            rang.oninput = function(e){ 
                div.style.width = this.value + '%';
            }
            debugger;
            wrap.appendChild(rang);
        };
    </script>
</body>


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

-Advertisement-
Play Games
更多相關文章
  • 最近在看微信小程式邊看邊寫demo,整體目錄結構是一:app.js,app.json,app.wxss這三個文件必須是放在根目錄下,二、一個小程式有多個頁面組成,其中每個頁面的結構是:page.js,page.json,page.wxml,page.wxss。 這些文件尾碼名都是微信小程式特定的,其 ...
  • 在HTML中,表單是由<form>元素來組成的。在js中,表單對應的則是HTMLFormElement類型。它和其他HTML元素一樣具有相同的預設屬性。下麵是HTMLFormElement獨有的屬性和方法: acceptCharset:伺服器能夠處理的字元集,等價於HTML的accept-chars ...
  • 首先要明白什麼是模糊查詢(廢話又來了),就是根據關鍵字把列表中符合關鍵字的一項或某項羅列出來,也就是要檢查列表的每一項中是否含有關鍵字,因此抽象一下就是一個字元串中是否含有某個字元或者字元串。 以下例子沒有接觸到後臺數據的知識,只是查詢當前表格中每一行所包含的關鍵字。 用到的方法為:string.i ...
  • 通常情況下,在Node.js中我們可以通過underscore的extend或者lodash的merge來合併兩個對象,但是對於像下麵這種複雜的對象,要如何來應對呢? 例如我有以下兩個object: 希望合併之後的結果輸出成下麵這樣: 通過underscore或者lodash現有的方法我們無法實現上 ...
  • 原文鏈接: https://github.com/AlloyTeam/AlloyTouch/wiki/Powerful transformjs 寫在前面 上星期在React微信群里,有小伙伴覺得transformjs直接給DOM添加屬性太激進,不可取(由於不在那個微信群,不明白為什麼React會談到 ...
  • 五、目錄篇 一、HTML部分1、瀏覽器頁面有哪三層構成,分別是什麼,作用是什麼?2、HTML5的優點與缺點?3、Doctype作用? 嚴格模式與混雜模式如何區分?它們有何意義?4、HTML5有哪些新特性、移除了哪些元素?5、你做的網頁在哪些流覽器測試過,這些瀏覽器的內核分別是什麼?6、每個HTML文... ...
  • soChange一款多很經典的幻燈片的jQuery插件。 實例預覽 引入文件 <link rel="stylesheet" type="text/css" media="all" href="style.css" /> <script type="text/javascript" src="jque ...
  • 一、this 在JavaScript中this表示:誰調用它,this就是誰。 JavaScript是由對象組成的,一切皆為對象,萬物皆為對象。this是一個動態的對象,根據調用的對象不同而發生變化,當然也可以使用call、apply修改this指向的對象。它代表函數運行時,自動生成的一個內部對象, ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...