使用CSS文字陰影創建有趣的效果

2021-02-19 W3school
讓我們來看看如何使用CSS的text-shadow屬性來創建真正的3D文本。你可能會認為text-shadow是能夠在文字後面塗上模糊的、漸變的顏色,你是對的!但就像box-shadow一樣,你可以控制陰影的模糊程度,包括將陰影全部帶入到文本中。結合逗號分隔陰影和堆疊陰影,這就是我們在這裡要做的CSS技巧。
.el {
text-shadow: [x-offset] [y-offset] [blur] [color];
}

x-offset:在x軸上的位置。正值將陰影向右移動,負值將陰影向左移動。(必須)y-offset:在y軸上的位置。正值將陰影移到底部,負值將陰影移到頂部。(必須)blur:陰影應該有多少模糊。值越高,陰影越柔和。默認值為0px(無模糊)。(可選的)第一個陰影讓我們通過僅添加一個陰影開始創建效果。陰影將向右推6px,向底部推6px:
:root {
--text: #5362F6; /* Blue */
--shadow: #E485F8; /* Pink */
}

.playful {
color: var(--text);
text-shadow: 6px 6px var(--shadow);
}

用更多的陰影來創造深度目前,我們所擁有的只是一個平坦的陰影——還沒有太多的3D效果。我們可以通過在同一元素中添加更多的 text-shadow 實例來創造深度,並將陰影與實際的文本連接起來。它所要做的就是用逗號分隔它們,讓我們從中間添加一個開始:
.playful {
color: var(--text);
text-shadow: 6px 6px var(--shadow),
3px 3px var(--shadow);
}

這已經有了一些進展,但是我們需要添加更多的陰影來讓它看起來更好。我們添加的步驟越多,最終結果就會越細緻。在此示例中,我們將從6px 6px開始,並以0.25px的增量逐漸減小,直到達到0。
.playful {
color: var(--text);
text-shadow:
6px 6px var(--shadow),
5.75px 5.75px var(--shadow),
5.5px 5.5px var(--shadow),
5.25px 5.25px var(--shadow),
5px 5px var(--shadow),
4.75px 4.75px var(--shadow),
4.5px 4.5px var(--shadow),
4.25px 4.25px var(--shadow),
4px 4px var(--shadow),
3.75px 3.75px var(--shadow),
3.5px 3.5px var(--shadow),
3.25px 3.25px var(--shadow),
3px 3px var(--shadow),
2.75px 2.75px var(--shadow),
2.5px 2.5px var(--shadow),
2.25px 2.25px var(--shadow),
2px 2px var(--shadow),
1.75px 1.75px var(--shadow),
1.5px 1.5px var(--shadow),
1.25px 1.25px var(--shadow),
1px 1px var(--shadow),
0.75px 0.75px var(--shadow),
0.5px 0.5px var(--shadow),
0.25px 0.25px var(--shadow);
}

使用Sass簡化代碼結果可能看起來不錯,但是現在的代碼很難閱讀和編輯。如果要增大陰影,我們必須進行大量複製和粘貼才能實現。例如,將陰影大小增加到10px將意味著手動添加16個陰影。這就是SCSS的作用,我們可以使用函數自動生成所有的陰影。
@function textShadow($precision, $size, $color){
$value: null;
$offset: 0;
$length: $size * (1 / $precision) - 1;

@for $i from 0 through $length {
$offset: $offset + $precision;
$shadow: $offset + px $offset + px $color;
$value: append($value, $shadow, comma);
}

@return $value;
}

.playful {
color: #5362F6;
text-shadow: textShadow(0.25, 6, #E485F8);
}

函數 textShadow 具有三個不同的參數:陰影的精度,大小和顏色。然後創建一個循環,使偏移量增加 $precision (在本例中為0.25px),直到達到陰影的總大小(在本例中為6px)。
這樣,我們可以輕鬆增加陰影的大小或精度。例如,要創建一個10px大且增加0.1px的陰影,我們只需在代碼中進行更改即可:
text-shadow: textShadow(0.1, 10, #E485F8);

交替的顏色我們想通過選擇其他顏色來使事情變得有趣。我們將文本分成多個字母,並用span包裹起來(可以手動完成,也可以使用React或JavaScript自動完成)。輸出將如下所示:
<div class="playful">
<span>我</span>
<span>的</span>
<span>第</span>
<span>一</span>
<span>個</span>
<span>陰</span>
<span>影</span>
</div>

然後我們可以在span上使用 :th-child() 選擇器來改變文本和陰影的顏色。
.playful span:nth-child(2n) {
color: #ED625C;
text-shadow: textShadow(0.25, 6, #F2A063);
}

如果我們在原始CSS中完成此操作,那麼最終將得到以下結果:
.playful span {
color: var(--text);
text-shadow:
6px 6px var(--shadow),
5.75px 5.75px var(--shadow),
5.5px 5.5px var(--shadow),
5.25px 5.25px var(--shadow),
5px 5px var(--shadow),
4.75px 4.75px var(--shadow),
4.5px 4.5px var(--shadow),
4.25px 4.25px var(--shadow),
4px 4px var(--shadow),
3.75px 3.75px var(--shadow),
3.5px 3.5px var(--shadow),
3.25px 3.25px var(--shadow),
3px 3px var(--shadow),
2.75px 2.75px var(--shadow),
2.5px 2.5px var(--shadow),
2.25px 2.25px var(--shadow),
2px 2px var(--shadow),
1.75px 1.75px var(--shadow),
1.5px 1.5px var(--shadow),
1.25px 1.25px var(--shadow),
1px 1px var(--shadow),
0.75px 0.75px var(--shadow),
0.5px 0.5px var(--shadow),
0.25px 0.25px var(--shadow);
}

.playful span:nth-child(2n) {
--text: #ED625C;
--shadow: #F2A063;
}

我們可以用其他顏色和索引重複幾次,直到達到自己喜歡的圖案。添加動畫使用相同的原理,我們可以通過添加動畫來使文本更加生動。首先,我們要增加一個重複的動畫,讓每一個span都能上下移動。
.playful span {
color: #5362F6;
text-shadow: textShadow(0.25, 6, #E485F8);
position: relative;
animation: scatter 1.75s infinite;
}

我們可以通過使用prefers-reduced-motion媒體查詢來進一步優化此功能。這樣一來,不想要動畫的人就不會得到它。
.playful span {
color: #5362F6;
text-shadow: textShadow(0.25, 6, #E485F8);
position: relative;
animation: scatter 1.75s infinite;
}

@media screen and (prefers-reduced-motion: reduce) {
animation: none;
}

然後,在每個 nth-child(n) 中添加一個不同的動畫延遲。
.playful span:nth-child(2n) {
color: #ED625C;
text-shadow: textShadow(0.25, 6, #F2A063);
animation-delay: 0.3s;
}

相關焦點

  • CSS高級技巧:陰影效果
    點擊上方「web前端網頁設計」一鍵關注,更多網頁設計 UI設計 Html div css HTML5+CSS3、JavaScript
  • 使用CSS3 Cubic-Bezier創建動畫連結懸停效果
    我們將使用CSS3動畫過渡來創建簡單但引人入勝的連結懸停效果,將滑鼠懸停在連結上時,會彈出一個小彈出框。
  • 深刻認識css中的陰影
    css中可以寫陰影的屬性有:字體陰影(text-shadow)、盒陰影(box-shadow)、陰影(filter:drop-shaddow)。不多bb,下面北冥帶大家一起來學習這些屬性的用法和要點。盒子陰影(box-shadow)語法:box-shadow: 水平偏移(px),垂直偏移(px),陰影模糊度(px),陰影大小(px),陰影顏色值,內陰影(inset);可以設置多重陰影水平偏移(px):效果展示
  • 有趣的css屬性content
    ,今天就來好好的講講這個有趣的css屬性。以下知識內容均來自於張鑫旭的《css世界》,有興趣的可以去看看。content 介紹content用於元素內容的展示,平常用的多的地方在於內容前後的具體文字內容或者是圖片。圖片其實沒有很多好介紹,但是關於文字方面,它有很多種的類型,下面就一一將content的值類型進行介紹。
  • 30 CSS的4種編寫方式
    這裡是把h1標籤的文字設置成紅色,瀏覽器中效果如下:2 外鏈式所謂外鏈式,就是把CSS代碼保存在單獨的.css文件中,然後用<link>標籤引入這個文件。比如,我在項目文件夾中,創建一個"外鏈式.html"文件,再在css文件夾中創建一個"css.css"文件。然後在"css.css"這個文件中寫css代碼,在.css文件中寫css代碼,就不需要寫style標籤了,直接寫css語句就行了。
  • 巧妙使用photoshop來創建逼真的陰影與燈光的方法
    在這個教程中,我會告訴你一些巧妙使用photoshop來創建逼真的陰影與燈光的方法。第一步當然是理論,以幫助你了解燈光與陰影是如何運作的,在後面的步驟中,我將向你展示如何創建陰影。1)光源與陰影的角度。在你開始處理圖像前,你要確定時否需要陰影。為了讓你自己理清思路,你必須先確定主光源。
  • 【PS教程】創建火焰和鐵鏽文字效果
    本教程將向您展示如何為生鏽的文本添加風格和紋理,然後使用過濾器添加一些火焰以及其他一些煙霧和火花紋理,以創建充滿活力的火焰文字效果。1.創建背景和文本,並設置文本的樣式步驟1創建一個新的1740 x 1170 px文檔,並用顏色填充它。
  • 【開發小技巧】024—如何使用HTML和CSS創建加載模糊文本動畫效果?
    > 英文 | https://www.geeksforgeeks.org/how-to-create-loading-blur-text-animation-effect-using-html-and-css
  • 如何使用 CSS 和 SVG 剪切和遮罩技術
    SVGs 能夠很好的在 web 上工作, 剪切和遮罩允許你使用有趣的方式去展示或隱藏 web 圖像, 使用這些技術也能讓的設計變得更加靈活因為你不需要去修改或者創建新的圖像
  • 文字的影子——PPT陰影使用技巧.
    上述3種陰影分別是如何設置的呢?又會做出什麼樣的文字陰影效果?在本文中我們將會一一為大家進行分享,這對於PPT初學者了解PPT的文字特效設置有很大幫助。1、文字外部陰影為文字添加外部陰影之後,陰影顯示在文字外部,文字呈突出的效果。
  • 如何在HTML文檔中使用CSS樣式表?
    如果我們想使用「內部樣式表」將CSS添加到我們的Html文檔中,請參考以下步驟。步驟1:首先,在文本編輯器中輸入HTML代碼,或者打開現有的HTML文件。步驟2:將<style>標籤放置在<head>標籤的開始和結束之間,在<title>標籤之後。
  • CSS面試須知,哪些需要掌握得CSS技巧
    RGBA和透明度background-image background-origin(content-box/padding-box/border-box) background-size background-repeatword-wrap(對長的不可分割單詞換行)word-wrap:break-word文字陰影:text-shadow: 5px 5px 5px #FF0000;(水平陰影
  • CSS魔法堂:Box-Shadow沒那麼簡單啦:)
    實現原理:創建一個與元素border box尺寸一致的陰影盒子;將陰影盒子定位到於元素border box重合,並位於元素之下;根據horizontal offset和vertical offset來相對原位置作移動;根據spread distance縮放陰影盒子的尺寸(會影響盒子的位移);根據blur radius
  • CSS裡如何創建形狀,如何純CSS繪製圓,三角形等並文字環繞
    下面,我將解釋使用CSS創建形狀的基本知識。還有很多要告訴你關於這個話題!因此,我不會涵蓋所有(絕大部分)工具和形狀,但這應該使你基本了解如何使用CSS創建形狀,並且創建文字環繞圖形的方式方法。 有些形狀比其他形狀需要更多的「技巧和竅門」。
  • 微信公眾號文章中文字陰影怎麼設置的?
    很多新媒體小編在微信文章編輯排版的過程中,經常會用到一種【字體陰影】效果。如下圖所示具體添加步驟如下:第一步:打開【微信編輯器】第二步:在編輯區輸入內容之後,點擊頂部工具欄或者文字工具條中的【字體陰影】按鈕。
  • CSS圖像 hover 動畫效果
    CSS  Hover 在網頁設計中是極為常用的一個 CSS 效果,只要你有創造力,都可以讓 Hover 變得更多姿多彩
  • 將CSS樣式代碼應用到HTML頁面的幾種方式
    例如,為一段文本設置行內樣式表,樣式例如,為一段文本設置行內樣式表,樣式分別為文字顏色、文字下劃線、文字大小和加粗,其代碼和效果如下圖:這種方式的樣式表應用,其缺點是樣式代碼不能重複使用,所以一般不建議使用
  • HTML+CSS:三種css的引入方式,內鏈式、嵌入式、外部式
    (1)內鏈式引入內鏈式css樣式表就是把css代碼直接寫在現有的HTML標籤中,具體的使用方法如下面所示:<divstyle="color:red">設置文字的顏色為紅色</div>這裡要注意:樣式的內容寫在元素的開始標籤裡,並且css樣式代碼要寫在style=""雙引號中,如果有多條css樣式代碼設置可以寫在一起,中間用分號隔開
  • Web前端入門新人必看,怎樣使用CSS修改HTML的樣式
    一、CSS的起源當web開發還是一項新技術的時候,無論定義網頁內容還是定義網頁樣式,都是使用的HTML語言,HTML的內容和樣式沒有區分開,如古老的HTML樣式:Css樣式其中color表示顏色,center讓文字居中,不是目前規範的書寫形式,而且舊的HTML標籤都是大寫的,web開發人員還需要來回切換大小寫,所以很多人認識到了這種開發方式並不理想。
  • 《前端5分鐘》之使用純css實現網站換膚和焦點圖切換動畫
    你將收穫網站換膚設計方案介紹:target偽類介紹和用法以及如何使用css實現網站換膚transition動畫以及如何用純css實現焦點圖動畫效果展示1.網站換膚2.焦點圖動畫>實現思路1.網站換膚通常我們實現網站換膚都基於如下方式實現:方案一: 使用OOCSS模式,通過js動態切換公共類名來達到換膚效果方案二: 點擊不同的按鈕切換不同的樣式表,如下:theme-green.csstheme-red.csstheme-black.css方案三