CSS3動畫:流彩文字效果+圖片模糊效果+邊框伸展效果實現

来源:http://www.cnblogs.com/moqiutao/archive/2017/08/10/7340800.html
-Advertisement-
Play Games

前言 首先第一步,先佈局html代碼如下: 上面一看第一個圖片img 就是實現圖片模糊效果的DOM元素,text-gradient實現的是流彩文字效果的DOM元素,border實現的是邊框伸展效果的DOM元素 想一想樣式該咋寫呢,根據這個佈局,我們先來實現圖片模糊效果。 圖片模糊效果 圖片模糊效果要 ...


前言

首先第一步,先佈局html代碼如下:

<div class="wrap">
    <img src="images/1.jpg" class="blur"/>
    <div class="text-gradient ">天賜神功</div>
    <div class="border"></div>
</div>

上面一看第一個圖片img 就是實現圖片模糊效果的DOM元素,text-gradient實現的是流彩文字效果的DOM元素,border實現的是邊框伸展效果的DOM元素

想一想樣式該咋寫呢,根據這個佈局,我們先來實現圖片模糊效果。

圖片模糊效果

圖片模糊效果要用到的是css3的filter屬性,想詳細瞭解可以點擊CSS3 Filter詳解(改變模糊度 亮度 透明度等方法)》。

先寫下wrap的樣式:

.wrap{
    position: relative;
    width:300px;
    height:225px;
    text-align: center;
}

.blur的樣式如下:

.wrap .blur{
    position: absolute;
    top:0;
    left:0;
    width:300px;
    height:225px;
    z-index:1;
}
.wrap:hover img.blur{
    transition: all .5s ease;
    filter: url(blur.svg#blur); /* FireFox, Chrome, Opera */
    -webkit-filter: blur(10px); /* Chrome, Opera */
    -moz-filter: blur(10px);
    -ms-filter: blur(10px); 
    filter: blur(10px); 
    filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=10, MakeShadow=false); /*IE6~IE9 */
}

我們逐步來分析下這個代碼:

首先一般的CSS3 blur濾鏡實現代碼如下:

.blur {    
    -webkit-filter: blur(10px); /* Chrome, Opera */
       -moz-filter: blur(10px);
        -ms-filter: blur(10px);    
            filter: blur(10px);    
}

SVG濾鏡實現:

不管倒騰什麼方法,搞一個代碼如下,且全名為blur.svg的SVG文件:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" 
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xmlns:ev="http://www.w3.org/2001/xml-events"     
     baseProfile="full">     
    <defs>
        <filter id="blur">
            <feGaussianBlur stdDeviation="10" />
        </filter>
    </defs>
</svg>

上面defs標簽的代碼就是添加的濾鏡代碼。

如下CSS調用代碼:

filter: url(blur.svg#blur); /* FireFox, Chrome, Opera */

然後,效果就出來了。如果你手上的瀏覽器是FireFox25-就能看到效果。

IE10以及IE11以及以後的IE11+都是支持SVG的濾鏡的,但是,此demo在這些瀏覽器下是無效的,為何?

好像因為其不支持直接在CSS使用使用filter: url的寫法,其實,要想實現IE10, IE11下的模糊效果,也是可以,就是適用性差了點,圖片要寫入SVG代碼,類似下麵:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" 
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xmlns:ev="http://www.w3.org/2001/xml-events"     
     baseProfile="full">
     <defs>
        <filter id="blur">
            <feGaussianBlur stdDeviation="10" />
        </filter>
    </defs>
    <image xlink:href="mm1.jpg" x="0" y="0" height="191" width="265" filter="url(#blur)" />
</svg>

然後,SVG作為背景圖片載入:

.blur {
    background-image: url(blur.svg);
}

這樣就可以了。

IE6?-IE9瀏覽器可以藉助IE filter模糊濾鏡實現,如下CSS:

filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=10, MakeShadow=false); 

所以最終綜合代碼:

.blur {    
    filter: url(blur.svg#blur); /* FireFox, Chrome, Opera */
    
    -webkit-filter: blur(10px); /* Chrome, Opera */
       -moz-filter: blur(10px);
        -ms-filter: blur(10px);    
            filter: blur(10px);
    
    filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=10, MakeShadow=false); /* IE6~IE9 */
}

如果還想詳細瞭解可點擊《小tip: 使用CSS將圖片轉換成模糊(毛玻璃)效果》

流彩文字效果

先上css代碼:

.wrap:hover .text-gradient { 
    position: relative;
    z-index:2;
    display: inline-block;
    color: black;
    font-size: 30px;
    background-image: -webkit-linear-gradient(left, #147B96, #E6D205 25%, #147B96 50%, #E6D205 75%, #147B96);
    -webkit-text-fill-color: transparent;
    -webkit-background-clip: text;
    -webkit-background-size: 200% 100%;
    -webkit-animation: masked-animation 4s infinite linear;
 }
 @-webkit-keyframes masked-animation {
     0% { background-position: 0 0;}
     100% { background-position: -100% 0;}
 }

說明:

  1. 將漸變色設置為文字所在盒的背景色:background-image: linear-gradient(...)
  2. 取文字的形狀與背景(長方形)的交集:-webkit-background-clip: text
  3. 刪除覆蓋在得到交集之上的原文字形狀:-webkit-text-fill-color: transparent

background-clip 屬性規定背景的繪製區域。

語法:

background-clip: border-box|padding-box|content-box;

值對應於:背景被裁剪到邊框盒,內邊距框,內容框。
這裡用到的text只適用於chrome瀏覽器。

在經過上述步驟後得到了漸變色填充文字的效果,但實則呈現的是經過裁剪之後的背景,故要實現色彩的流動,則需要背景進行迴圈地流動,則可使用CSS3 animation迴圈改變background-position可破之,但在動畫效果上有兩坑需要註意:

  • background: linear-gradient(...)是多個屬性的簡寫,在@keyframes中修改某項的值請使用具體的屬性,否則若使用簡寫則會覆蓋之前的設置。
  • 初始設置背景時需要設置background-size-x>100%。讓背景圖片大小水平方向擴大一倍,這樣background-position才有移動與變化的空間。

可參考文章:《小tip:CSS3下的漸變文字效果實現》

邊框伸展效果

實現邊框伸展效果總代碼:

.border{
    position: absolute;
    width:300px;
    height:225px;
    z-index:2;
    top:0;
    left:0;
}
 .border::before, .border::after {
     content:" ";
     display: block;
     position: absolute;
     width: 0;
     height: 0; 
     box-sizing: border-box;
     transition-property: height,width,left,top;
     transition-duration: 0.5s;
     transition-timing-function: ease-in;
     z-index:2;
 }
 .border::before {
     height: 100%;
     left: 50%;
 }
 .wrap:hover > .border::before {
     left: 0;
     width: 100%;
     border: 6px solid #000;
     border-left-color: transparent;
     border-right-color: transparent;
 }
 .border::after {
     width: 100%;
     top: 50%;
 }
 .wrap:hover > .border::after {
     height: 100%;
     top: 0;
     border: 4px solid #000;
     border-top-color: transparent;
     border-bottom-color: transparent;
 }

主要通過border:6px solid #000這個屬性,當width和height都設置為100%時,把左右或上下的border設置為transparent就可以實現::after和::before拼裝成長方形,兩邊都是從中間擴展,所以最初left和top設置為50%;最後需要註意 transition-property: height,width,left,top;的設置。

最終效果如圖所示:

百度網盤可下載demo運行查看,下載請點擊《CSS3動畫:流彩文字效果+圖片模糊效果+邊框伸展效果實現》


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

-Advertisement-
Play Games
更多相關文章
  • 寫它的原因 之前寫過一個緩存攔截器,主要在方法上添加CachingAspect特性之後,它的返回值就可以被緩存下來,下次訪問時直接從緩存中返回結果,而它有一個前提,就是你的方法需要是一個介面方法,緩存這個CachingAspect卻需要在類里定義,大叔感覺很怪,所以抽時間把它完善一下,讓緩存特性在接 ...
  • 鏈接來自:http://blog.csdn.net/u010081689/article/details/50728854 ...
  • 百度版lol百科小樣 ...
  • 0、未完,還有一部分未寫 1、CSS背景 屬性 描述 background 簡寫屬性,作用是將背景屬性設置在一個聲明中。 background-attachment 背景圖像是否固定或者隨著頁面的其餘部分滾動。 background-color 設置元素的背景顏色。 background-image ...
  • 非空驗證 <body> <table> <tr> <td>姓名:</td> <td><input type="text" name="TrueName" id="TrueName" /></td> </tr> ....省略其他input <tr> <td colspan="2"> <input ty ...
  • jsp:<div class="form-group"> <label >交易時間:</label> <input placeholder="開始日期" class="form-control layer-date" id="startDate" name="startDate"> <input p ...
  • 今天學習了PHP數組,整理下相關知識點。 PHP數組是什麼? php數組是一個能在單個變數中存儲多個值的特殊變數。 如:你有一個項目清單(人名清單),將其存儲到單個變數中,如下: 如果這個清單裡面有上百號人名,你要從中找到指定的某一個這樣會有點麻煩了。 解決這個問題的辦法就是創建一個數組。 數組可以 ...
  • 為什麼在input標簽類型為file上傳文件時在標簽中設置屬性 accpet="image/*",打開本地文件夾的速度特別慢? 經過測試發現,在mac裡面safari、Firefox、Chrome(opera不知道為啥老閃退)都沒有卡頓問題 在windows裡面,Firefox不卡頓,只有Chrom ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...