linear-gradient 的“高能”用法

来源:http://www.cnblogs.com/2015xifan/archive/2016/03/15/5281489.html
-Advertisement-
Play Games

說明:用線性漸變創建圖像 語法: <linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner> ] ,]? <color-stop>[, <color-stop>]+) <side-or-corner> = [left |


首先,讓我們來瞭解一下“linear-gradient”的基本用法:

說明:用線性漸變創建圖像

語法:

<linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner> ] ,]? <color-stop>[, <color-stop>]+)

<side-or-corner> = [left | right] || [top | bottom]

<color-stop> = <color> [ <length> | <percentage> ]?

取值:

下述值用來表示漸變的方向,可以使用角度或者關鍵字來設置:

<angle>:用角度值指定漸變的方向(或角度)。

to left:設置漸變為從右到左。相當於: 270deg

to right:設置漸變從左到右。相當於: 90deg

to top:設置漸變從下到上。相當於: 0deg

to bottom:設置漸變從上到下。相當於: 180deg。這是預設值,等同於留空不寫。

<color-stop>:用於指定漸變的起止顏色:

<color>:指定顏色。

<length>:用長度值指定起止色位置。不允許負值

<percentage>:用百分比指定起止色位置。

其他知識點:

不知你是否註意到“第一個”語法後面的“+”號沒,這些符號(“?”、“+”、“*”)其實用法跟正則表達式很像,如果正則表達式不知道的請看下麵正解:

  ,:代表每個屬性之間的分隔符號。

  ?:代表“屬性”可以出現零次或一次,也就是可有可無

  +:代表“屬性”可以出現一次或多次,但是必須出現一次

  *:代表“屬性”可以出現零次或多次。

  |:代表可以從多個“屬性”中任選一個。

  ||:代表“屬性”可以是左邊的一個或是右邊的一個,或是兩個都行

  []:代表裡面是“屬性”或“屬性”集合

  <>:這個不是正則表達式裡面的,但是它代表定義的取值範圍,如上語法的“<angle>”,取值的裡面就會附帶說明這個“<angle>”是幹嘛的

  {1,4}:代表“屬性”最少出現一次,最多出現四次。“1”和“4”都是動態的值,不是固定的,根據描述而定

 

來看看基本用法實例:

  

  (圖1)

  linear-gradient(#fff, #333);

  linear-gradient(to bottom, #fff, #333);

  linear-gradient(to top, #333, #fff);

  linear-gradient(180deg, #fff, #333);

  linear-gradient(to bottom, #fff 0%, #333 100%);

  以上這五句樣式都可以實現(圖1)的漸變效果

 

再來看看複雜點的普通實例:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4   <meta charset="utf-8" />
 5   <title></title>
 6   <style>
 7     div { width: 200px; height: 100px; margin-top: 10px; border: 1px solid #ddd;}
 8     .test { background: linear-gradient(#fff, #333);}
 9     .test2 { background: linear-gradient(#000, #f00 50%, #090);}
10     .test3 { background: linear-gradient(0deg, #000 20%, #f00 50%, #090 80%);}
11     .test4 { background: linear-gradient(45deg, #000, #f00 50%, #090);}
12     .test5 { background: linear-gradient(to top right, #000, #f00 50%, #090);}
13   </style>
14 </head>
15 <body>
16   <div class="test"></div>
17   <div class="test2"></div>
18   <div class="test3"></div>
19   <div class="test4"></div>
20   <div class="test5"></div>
21 </body>
22 </html>
View Code

效果圖:

 

再讓我們看看“高能”的用法:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8" />
 5     <title></title>
 6     <style>
 7         body{ background: linear-gradient(63deg, #999 23%, transparent 23%) 7px 0, linear-gradient(63deg, transparent 74%, #999 78%), linear-gradient(63deg, transparent 34%, #999 38%, #99958%, transparent 62%), #444; background-size: 16px 48px;}
 8     </style>
 9 </head>
10 <body>
11 </body>
12 </html>
View Code

效果圖:

 

怎麼樣,效果是不是很酷炫?再瞧瞧其他的:

還有更多好看的就不展示了,源自國外大牛:http://lea.verou.me/css3patterns/#chocolate-weave

 

其中的幾個重要知識點總結:

■Ⅰ.“background”的繪製順序是從後面的開始向前面的繪製的,百說不如一慄:

1 background: linear-gradient(45deg, #dca 12%, transparent 0, transparent 88%, #dca 0),linear-gradient(135deg, transparent 37%, #a85 0, #a85 63%, transparent 0),linear-gradient(45deg, transparent 37%, #dca 0, #dca 63%, transparent 0) #753;background-size: 25px 25px;

background繪製時是從linear-gradient(45deg, transparent 37%, #dca 0, #dca 63%, transparent 0) #753繪製到...頭部的linear-gradient(45deg, #dca 12%, transparent 0, transparent 88%, #dca 0)漸變樣式。所以這要註意了。

■Ⅱ.每一個使用“linear-gradient”繪製出來的漸變效果,都可以看作是一張背景圖。因為,這個可以在“background-size”里設置(每個背景圖的大小用逗號“,”區分)。

■Ⅲ.【非常重要,製作複雜的背景圖並不難,但是你得知道“background-repeat”的原理就是每一張背景圖都按照你設定的“屬性”去繪製。如果你不知道這個原理,甚至沒註意到。那麼當你第一次看到這麼漂亮的背景效果,想自己動手豐衣足食的時候卻發現,“What is this”,看看我第一次寫的背景效果。

 

第一次寫的:

理想樣子:

 

實際樣式:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8" />
 5 <title></title>
 6 <style>
 7 body{
 8     background:linear-gradient(to right, transparent 0%, #F00 0%, #F00 100%, transparent 100%) 25px 25px,
 9     linear-gradient(to top,transparent 0%, #0F0 0%, #0F0 50%, transparent 50%),
10     linear-gradient(to right, transparent 0%, #F00 0%, #F00 50%, transparent 50%),
11     linear-gradient(to right, transparent 50%, #0F0 50%, #0F0 100%, transparent 100%);
12     
13     background-color:#FFF;
14     background-size:25px 25px, 50px 50px, 50px 50px, 50px 50px;
15     background-repeat:repeat;
16 }
17 </style>
18 </head>
19 <body>
20 </body>
21 </html>
View Code 效果圖:

 

 ⊙︿⊙ 好桑心,怎麼整個網頁紅色的?

 

其實這其中就是background-repeat”的原理問題:每個圖片都是x、y複製繪製的“background-repeat:repeat”,所以當“background-size”不是一致的時候,複製繪製的位置也是不一樣的。

知道是這個原因了,改動一下。

正確的樣式:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8" />
 5 <title></title>
 6 <style>
 7 body{
 8     background:linear-gradient(135deg, transparent 0%, #F00 0%, #F00 25%, transparent 25%) 25px 25px,
 9     linear-gradient(315deg, transparent 0%, #F00 0%, #F00 25%, transparent 25%),
10     linear-gradient(to top,transparent 0%, #0F0 0%, #0F0 50%, transparent 50%),
11     linear-gradient(to right, transparent 0%, #F00 0%, #F00 50%, transparent 50%),
12     linear-gradient(to right, transparent 50%, #0F0 50%, #0F0 100%, transparent 100%);
13     
14     background-color:#FFF;
15     background-size:50px 50px;
16     background-repeat:repeat;
17 }
18 </style>
19 </head>
20 <body>
21 </body>
22 </html>
View Code

效果圖:

 

知道原理才是硬道理 ╰( ̄▽ ̄)╮


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

-Advertisement-
Play Games
更多相關文章
  • (1)、工廠模式:封裝一個函數createPerson,這個函數可以創造一個人對象,包含三個屬性和一個方法,然後利用這個函數分別創建了2個對象p1,p2. 工廠模式下解決了創建多個相似對象的問題,但是卻沒有解決對象識別問題(不知道這個對象的類型是數組或函數或正則等)alert(p1 instance
  • border-radius瀏覽器相容性: IE9+、Firefox 4+、Chrome、Safari 5+ 以及 Opera 支持 border-radius 屬性。 <style>.box { position:relative; width: 99px; height: 99px; paddin
  • 前面提到 ES5 對象屬性描述符,這篇看看對象的擴展、密封和凍結。 阻止對象擴展,讓一個對象變的不可擴展,也就是永遠不能再添加新的屬性 ES3 是沒有辦法阻止對象擴展的,定義對象後可以給對象添加任意屬性,如 ES5 的 Object.preventExtensions 則可以阻止給對象添加新屬性 如
  • 重現代碼 以上網頁代碼,在 IE10/11 中輸出如下 可以看到IE10/11克隆時竟然把值賦給了value,這是一個的bug。 其它瀏覽器輸出的均是空字元串。 判斷是否有該bug的函數提取如下
  • Atitit. atiJavaExConverter4js 新的特性 1.1. V1新特性1 1.2. V2 新特性1 2. Keyword1 3. Catch1 4. Convert n Throw ex2 5. --atiex2 Java ex convert Catch 不同的ex Try c
  • Atitit hre框架v5 新特性 HREv5 1. V5新特性 apiurl2="/wrmiServlet";1 2. V1 新特性1 3. V2 新特性 添加php版1 4. V3 新特性 callback_checkJavaEx(data);1 5. V4 新特性1 基礎實現 <script
  • 本文內容相當簡單,所以沒有發佈到博客園首頁,如果你不幸看到,那隻能是我這篇文章的榮幸,謝謝你的大駕光臨~
  • html5 視頻播放
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...