目錄
1.單純純純的效果一
2.對「單純」說不的效果二,sass實作3d文字mixin
3.「過動」的效果三,animation讓陰影動起來
4. 彰顯「個性」的效果四,lettering.js實作逐字控制
5. “個性”升級的效果五,彩虹字動畫
##6. text-shadow IE9-的解決方案
首頁 web前端 css教學 純CSS3實現3d立體文字效果(源碼分析)

純CSS3實現3d立體文字效果(源碼分析)

May 24, 2021 am 10:02 AM
3d css3

這篇文章帶大家了解一下3d文字效果的實現原理,沒有考慮程式碼的複用性和可移植性,有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

純CSS3實現3d立體文字效果(源碼分析)

1.單純純純的效果一


為了簡化運算,我們使用和上一篇文章《純CSS3文字效果推薦》一樣的文檔結構,後面的效果大差小不差,也就不再列出。

<div contenteditable="true" class="text effect01">前端开发whqet</div>
登入後複製

css裡面還是先來全域的設置,依然和上一篇文章大差小不差,不過為了避免視覺疲勞,我們修改了背景顏色和文字顏色。

body{  
  background-color: #666;  
}  
@import url(http://fonts.googleapis.com/css?family=Dosis:500,800);  
.text {  
    font-family:"微软雅黑", "Dosis", sans-serif;  
    font-size: 80px;  
    text-align: center;  
    font-weight: bold;  
    line-height:200px;  
    text-transform:uppercase;  
    position: relative;  
}
登入後複製

然後是簡單單純的效果一的核心代碼

/*简单单纯的效果一*/
.effect01{
    background-color: #7ABCFF;
    color:#FFD300;
    text-shadow:
        0px 0px 0 #b89800, 
        1px -1px 0 #b39400, 
        2px -2px 0 #ad8f00, 
        3px -3px 0 #a88b00, 
        4px -4px 0 #a38700, 
        5px -5px 0 #9e8300, 
        6px -6px 0 #997f00, 
        7px -7px 0 #947a00, 
        8px -8px 0 #8f7600, 
        9px -9px 0 #8a7200, 
        10px -10px 0 #856e00, 
        11px -11px 0 #806a00, 
        12px -12px 0 #7a6500, 
        13px -13px 12px rgba(0, 0, 0, 0.55), 
        13px -13px 1px rgba(0, 0, 0, 0.5);
}
登入後複製

從中我們可以看出,利用text-shadow實現立體效果的要素有三:

  • #設定多個陰影實現縱深感,
  • 陰影的水平和垂直偏移變化實現方向感,
  • #陰影的顏色漸變實現錯落感。

這種實現的方式雖說單純,但是可移植性不強、復用性差,試想一下,不同方向的立體字如何修改?不同顏色的立體字如何實現?逐字達到不同效果腫麼辦?如果需要動畫又如何?

接下來,透過逐步完善「單純」的效果一,我們來一一解答這些疑問。

2.對「單純」說不的效果二,sass實作3d文字mixin


童鞋們就說了,哥,變化呢,好像跟前面那個沒差別呀?大家又有耐心,看看程式碼就懂了。

我用sass寫了一個text 3d的mixin,利用這個mixin我們可以輕鬆控制,立體字的縱深感、方向感、錯落感。

/*  对“单纯”说不的效果二,  sass实现的华丽转身  */
 
/**
* 利用text-shadow实现3d文字效果
*
* $color     立体字的初始颜色
* $dx        立体字水平偏移位置,dx>0,向右偏,建议取值[-2,2]
* $dy        立体字垂直偏移位置,dy>0,向下偏,建议取值[-2,2],dx和dy配合控制立体字的方向
* $steps     立体字的层叠数量
* $darken    立体字的颜色变暗数值,建议取值[0,1],需要结合层叠数量,避免过多的黑色出现
* @copyright 前端开发whqet,http://blog.csdn.net/whqet 
*/
@mixin text3d($color: #ffd300, $dx: 1, $dy: -1,$steps:10, $darken:.1) {
  color:$color;
  $color:darken($color,30%);
 
  $output: &#39;&#39;;
  $x:0px;
  $y:0px;
  @for $n from 1 to $steps{
    $output: $output + &#39;#{$x} #{$y} 0 #{$color},&#39;;
    $x:$x+$dx;
    $y:$y+$dy;
    $color:darken($color, $darken * ($n+10));
  }
  $output: $output+&#39;#{$x} #{$y} 12px rgba(0,0,0,0.3),#{$x} #{$y} 1px rgba(0,0,0,0.5);&#39;;
  
  text-shadow:unquote($output);
}
 
.effect02{
    @include text3d(#00d3ff,1,-1,15,.05);
}
登入後複製

腫麼樣,大家仔細研究啦,利用sass實現的這個mixin,我們可以非常簡單的實作立體字,並且可以搞起來動畫,請看效果三。

3.「過動」的效果三,animation讓陰影動起來


有了效果二中的mixin,效果三就自然而然了。

/*  “多动”效果三, 加上动画 */
.effect03{
  animation:animateShadow 2s linear infinite; 
}
@keyframes animateShadow{  
  0% {@include text3d(#00d3ff,1,1,15,.05); }
  25% {@include text3d(#00d3ff,-1,-1,15,.05); }
  50% {@include text3d(#00d3ff,1,1,15,.05); }
  75% {@include text3d(#00d3ff,-1.5,1.5,15,.05); }
}
登入後複製

4. 彰顯「個性」的效果四,lettering.js實作逐字控制


lettering. js是一個功能強大的jquery插件,可以把字串拆分,類似下面程式碼所示。

<div contenteditable="true" class="text effect04">前端开发whqet</div>
<!-- 拆分成这样 -->
<div contenteditable="true" class="text effect04">
	<span class="char1">前</span>
	<span class="char2">端</span>
	<span class="char3">开</span>
	<span class="char4">发</span>
	<span class="char5">w</span>
	<span class="char6">h</span>
	<span class="char7">q</span>
	<span class="char8">e</span>
	<span class="char9">t</span>
</div>
登入後複製

我們需要在頁面中匯入jquery.js和lettering.js,然後,我們就可以使用了。

<!-- 引入jquery,cdn方式 -->
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- 引入lettering,cdn方式 -->
<script src="//cdnjs.cloudflare.com/ajax/libs/lettering.js/0.6.1/jquery.lettering.min.js"></script>
<!-- 使用lettering -->
<script>
	//JS is only used to keep the HTML markup clean
	$(".effect04").lettering();
</script>
登入後複製

然後,利用sass實現個人化控制, adjust-hue產生連續色相的顏色,@for迴圈實現遍歷。

/*   彰显“个性”的效果四,lettering.js实现逐字控制 */
.effect04{
  letter-spacing:.1em;
}
$base:#FFD300;
@for $i from 1 through 9 {
  .effect04 .char#{$i} { 
    @include text3d(adjust-hue($base, $i *15deg),-1,1,10,.05)
  }
}
登入後複製

5. “個性”升級的效果五,彩虹字動畫


#
/*   “个性”升级的效果五,彩虹字 */
@for $i from 1 through 10 {
  .effect05 .char#{$i} { 
    animation: rainbow 2s linear infinite;
    animation-delay: 0.1s * $i;
  }
}
$base2:#7E00FF;
@keyframes rainbow {
  @for $i from 0 through 10 {
    #{$i* 10%}  {@include text3d(adjust-hue($base2, $i *36deg), 1, 1, 10,.1); }
  }
}
登入後複製

##6. text-shadow IE9-的解決方案

當然,不幸的是直到IE10,text-shadow才得到了比較完善的支持,那麼IE9-怎麼辦呢,尤其是在xp的狂熱愛好的中國。所幸IE自帶的濾鏡可以達到一樣的效果,所以就有了這個text-shadow polyfill,我們在這裡使用sass的方式來補丁text-shadow.

這樣的話針對ie9以下的瀏覽器,我們的text3d mixin要這樣修改

/**
* 利用text-shadow实现3d文字效果
*
* $color     立体字的初始颜色
* $dx        立体字水平偏移位置,dx>0,向右偏,建议取值[-2,2]
* $dy        立体字垂直偏移位置,dy>0,向下偏,建议取值[-2,2],dx和dy配合控制立体字的方向
* $steps     立体字的层叠数量
* $darken    立体字的颜色变暗数值,建议取值[0,1],需要结合层叠数量,避免过多的黑色出现
* @copyright 前端开发whqet,http://blog.csdn.net/whqet 
*/
@mixin text3d($color: #ffd300, $dx: 1, $dy: -1,$steps:10, $darken:.1) {
  color:$color;
  $color:darken($color,30%);
 
  $output: &#39;&#39;;
  $x:0px;
  $y:0px;
  @for $n from 1 to $steps{
    $output: $output + &#39;#{$x} #{$y} 0 #{$color},&#39;;
    $x:$x+$dx;
    $y:$y+$dy;
    $color:darken($color, $darken * ($n+10));
  }
  $output: $output+&#39;#{$x} #{$y} 12px rgba(0,0,0,0.3),#{$x} #{$y} 1px rgba(0,0,0,0.5);&#39;;
  
  //for the mordern browser
  //text-shadow:unquote($output);
  
  //just for ie9-,这里做了修改
  @include jquery-text-shadow(unquote($output));
}
登入後複製
Enjoy it.

##案例效果還是在codepen:

線上研究:http://codepen.io/whqet/pen/eGuqf

更多程式相關知識,請造訪:
程式設計影片

! !

以上是純CSS3實現3d立體文字效果(源碼分析)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

純CSS3怎麼實現波浪效果? (程式碼範例) 純CSS3怎麼實現波浪效果? (程式碼範例) Jun 28, 2022 pm 01:39 PM

純CSS3怎麼實現波浪效果?這篇文章就來跟大家介紹一下使用 SVG 和 CSS 動畫來製作波浪效果的方法,希望對大家有幫助!

為何在自動駕駛方面Gaussian Splatting如此受歡迎,開始放棄NeRF? 為何在自動駕駛方面Gaussian Splatting如此受歡迎,開始放棄NeRF? Jan 17, 2024 pm 02:57 PM

寫在前面&筆者的個人理解三維Gaussiansplatting(3DGS)是近年來在顯式輻射場和電腦圖形學領域出現的一種變革性技術。這種創新方法的特點是使用了數百萬個3D高斯,這與神經輻射場(NeRF)方法有很大的不同,後者主要使用隱式的基於座標的模型將空間座標映射到像素值。 3DGS憑藉其明確的場景表示和可微分的渲染演算法,不僅保證了即時渲染能力,而且引入了前所未有的控制和場景編輯水平。這將3DGS定位為下一代3D重建和表示的潛在遊戲規則改變者。為此我們首次系統性地概述了3DGS領域的最新發展與關

了解 Microsoft Teams 中的 3D Fluent 表情符號 了解 Microsoft Teams 中的 3D Fluent 表情符號 Apr 24, 2023 pm 10:28 PM

您一定記得,尤其是如果您是Teams用戶,Microsoft在其以工作為重點的視訊會議應用程式中添加了一批新的3DFluent表情符號。在微軟去年宣佈為Teams和Windows提供3D表情符號之後,該過程實際上已經為該平台更新了1800多個現有表情符號。這個宏偉的想法和為Teams推出的3DFluent表情符號更新首先是透過官方部落格文章進行宣傳的。最新的Teams更新為應用程式帶來了FluentEmojis微軟表示,更新後的1800表情符號將為我們每天

選擇相機還是光達?實現穩健的三維目標檢測的最新綜述 選擇相機還是光達?實現穩健的三維目標檢測的最新綜述 Jan 26, 2024 am 11:18 AM

0.寫在前面&&個人理解自動駕駛系統依賴先進的感知、決策和控制技術,透過使用各種感測器(如相機、光達、雷達等)來感知周圍環境,並利用演算法和模型進行即時分析和決策。這使得車輛能夠識別道路標誌、檢測和追蹤其他車輛、預測行人行為等,從而安全地操作和適應複雜的交通環境。這項技術目前引起了廣泛的關注,並認為是未來交通領域的重要發展領域之一。但是,讓自動駕駛變得困難的是弄清楚如何讓汽車了解周圍發生的事情。這需要自動駕駛系統中的三維物體偵測演算法可以準確地感知和描述周圍環境中的物體,包括它們的位置、

CLIP-BEVFormer:明確監督BEVFormer結構,提升長尾偵測性能 CLIP-BEVFormer:明確監督BEVFormer結構,提升長尾偵測性能 Mar 26, 2024 pm 12:41 PM

寫在前面&amp;筆者的個人理解目前,在整個自動駕駛系統當中,感知模組扮演了其中至關重要的角色,行駛在道路上的自動駕駛車輛只有通過感知模組獲得到準確的感知結果後,才能讓自動駕駛系統中的下游規控模組做出及時、正確的判斷和行為決策。目前,具備自動駕駛功能的汽車中通常會配備包括環視相機感測器、光達感測器以及毫米波雷達感測器在內的多種數據資訊感測器來收集不同模態的信息,用於實現準確的感知任務。基於純視覺的BEV感知演算法因其較低的硬體成本和易於部署的特點,以及其輸出結果能便捷地應用於各種下游任務,因此受到工業

單卡30秒跑出虛擬3D老婆! Text to 3D產生看清毛孔細節的高精度數字人,無縫銜接Maya、Unity等製作工具 單卡30秒跑出虛擬3D老婆! Text to 3D產生看清毛孔細節的高精度數字人,無縫銜接Maya、Unity等製作工具 May 23, 2023 pm 02:34 PM

ChatGPT為AI產業注入一劑雞血,一切曾經的不敢想,都成為現今的基操。正持續進擊的Text-to-3D,就被視為繼Diffusion(影像)和GPT(文字)後,AIGC領域的下一個前緣熱點,得到了前所未有的關注。這不,一款名為ChatAvatar的產品低調公測,火速收攬超70萬瀏覽與關注,並登上抱抱臉週熱門(Spacesoftheweek)。 △ChatAvatar也將支援從AI生成的單視角/多視角原畫生成3D風格化角色的Imageto3D技術,受到了廣泛關注現行beta版本生成的3D模型,

Windows 11中的Paint 3D:下載、安裝和使用指南 Windows 11中的Paint 3D:下載、安裝和使用指南 Apr 26, 2023 am 11:28 AM

當八卦開始傳播新的Windows11正在開發中時,每個微軟用戶都對新作業系統的外觀以及它將帶來什麼感到好奇。經過猜測,Windows11就在這裡。作業系統帶有新的設計和功能變更。除了一些添加之外,它還附帶功能棄用和刪除。 Windows11中不存在的功能之一是Paint3D。雖然它仍然提供經典的Paint,它對抽屜,塗鴉者和塗鴉者有好處,但它放棄了Paint3D,它提供了額外的功能,非常適合3D創作者。如果您正在尋找一些額外的功能,我們建議AutodeskMaya作為最好的3D設計軟體。如

牛津大學最新! Mickey:3D中的2D影像匹配SOTA! (CVPR\'24) 牛津大學最新! Mickey:3D中的2D影像匹配SOTA! (CVPR\'24) Apr 23, 2024 pm 01:20 PM

寫在前面項目連結:https://nianticlabs.github.io/mickey/給定兩張圖片,可以透過建立圖片之間的對應關係來估計它們之間的相機姿態。通常,這些對應關係是二維到二維的,而我們估計的姿態在尺度上是不確定的。一些應用,例如隨時隨地實現即時增強現實,需要尺度度量的姿態估計,因此它們依賴外部的深度估計器來恢復尺度。本文提出了MicKey,這是一個關鍵點匹配流程,能夠夠預測三維相機空間中的度量對應關係。透過學習跨影像的三維座標匹配,我們能夠在沒有深度測試的情況下推斷度量相對

See all articles