検索
ホームページウェブフロントエンドCSSチュートリアル3Dテキスト効果を実現する純粋なCSS3(ソースコード分析)

この記事では、3D テキスト効果の実装原理について説明します。コードの再利用性と移植性は考慮されていません。一定の参考価値があります。必要な友人は参照できます。役立つことを願っています。みんな。

3Dテキスト効果を実現する純粋なCSS3(ソースコード分析)

1. 簡単な効果 1


操作を簡単にするためでは、以前の記事「推奨される Pure 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;  
}

次に、単純なエフェクト 1 のコア コード

/*简单单纯的效果一*/
.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);
}

から、3 次元効果を実現するために text-shadow を使用する 3 つの要素があることがわかります。

    複数の影を設定して奥行き感を出し、
  • 影の水平方向と垂直方向のオフセットを変更して方向感を出し、
  • 影の色のグラデーションを設定して、ふらふら感を実現します。
この実装方法はシンプルですが、移植性が低く、再利用性が低く、3D キャラクターをさまざまな方向に修正するにはどうすればよいでしょうか。色違いの立体キャラクターを実装するにはどうすればよいですか?一言一句異なる効果を実現するのが面倒な場合はどうすればよいでしょうか?では、アニメーションが必要な場合はどうすればよいでしょうか?

次に、「シンプルな」効果を徐々に改善していくことで、これらの質問に 1 つずつ答えていきます。


#2. 「シンプル」をやめることの 2 番目の効果、sass は 3D テキスト ミックスインを実装します


# # 子供たちの靴は「お兄さん、その変化はどうですか? 前の靴と何ら変わらないようですね?」と言いました。コードを見れば理解できると思いますので、しばらくお待ちください。

sass を使用してテキスト 3D ミックスインを作成しました。このミックスインを使用すると、立体文字の深さ、方向、千鳥を簡単に制御できます。

/*  对“单纯”说不的效果二,  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 次元のキャラクターを実現し、アニメーションさせることができます。3 番目の効果をご覧ください。

3. 3 番目のエフェクト「多動性」、アニメーションで影を動かします


2 番目のエフェクト Mixin を使用, 効果3は自然と出てきます。

/*  “多动”效果三, 加上动画 */
.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.「個性」を出す4つ目の効果、letering.jsで単語単位の制御を実現

##letring.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.「個性」アップグレード効果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.テキスト-shadow IE9- の解決策

もちろん、残念なことに、text-shadow は IE10 まで比較的完全なサポートを受けていませんでした。そのため、IE9- は何をすべきか、特にXPが熱狂的な趣味となっている中国。幸いなことに、IE の組み込みフィルターでも同じ効果を実現できるため、テキストシャドウ ポリフィルがあります。ここでは、sass を使用してテキストシャドウにパッチを当てます。

この場合、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));
}
お楽しみください。

このケースの影響はまだ残っています。コードペン:

オンライン調査: http://codepen.io/whqet/pen/eGuqf

プログラミング関連の知識の詳細については、次を参照してください:

プログラミング ビデオ# ##! !

以上が3Dテキスト効果を実現する純粋なCSS3(ソースコード分析)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はcsdnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
マージンは何ですか:40px 100px 120px 80pxは意味しますか?マージンは何ですか:40px 100px 120px 80pxは意味しますか?Apr 28, 2025 pm 05:31 PM

記事では、CSSマージンプロパティ、特に「マージン:40px 100px 120px 80px」、そのアプリケーション、およびWebページレイアウトへの影響について説明します。

さまざまなCSSボーダープロパティとは何ですか?さまざまなCSSボーダープロパティとは何ですか?Apr 28, 2025 pm 05:30 PM

この記事では、カスタマイズ、ベストプラクティス、および応答性に焦点を当てたCSSボーダープロパティについて説明します。主な議論:Border-Radiusは、レスポンシブデザインに最も効果的です。

CSSの背景とは何ですか、プロパティをリストしますか?CSSの背景とは何ですか、プロパティをリストしますか?Apr 28, 2025 pm 05:29 PM

この記事では、CSSのバックグラウンドプロパティ、Webサイトの設計の強化における使用、および避けるべき一般的な間違いについて説明します。重要な焦点は、バックグラウンドサイズを使用したレスポンシブデザインです。

CSS HSLの色とは何ですか?CSS HSLの色とは何ですか?Apr 28, 2025 pm 05:28 PM

記事では、CSS HSLの色、Webデザインでの使用、およびRGBよりも利点について説明します。主な焦点は、直感的な色の操作を通じて設計とアクセシビリティを向上させることです。

CSSにコメントを追加するにはどうすればよいですか?CSSにコメントを追加するにはどうすればよいですか?Apr 28, 2025 pm 05:27 PM

この記事では、CSSでのコメントの使用について説明し、シングルラインとマルチラインのコメント構文を詳述しています。コメントはコードの読みやすさ、保守性、コラボレーションを強化するが、適切に管理されていないとウェブサイトのパフォーマンスに影響を与える可能性があると主張しています。

CSSセレクターとは何ですか?CSSセレクターとは何ですか?Apr 28, 2025 pm 05:26 PM

この記事では、HTML要素のスタイリングのCSSセレクター、その種類、および使用法について説明します。 IDとクラスのセレクターを比較し、複雑なセレクターでパフォーマンスの問題に対処します。

どのタイプのCSSが最優先事項を保持していますか?どのタイプのCSSが最優先事項を保持していますか?Apr 28, 2025 pm 05:25 PM

この記事では、CSSの優先順位について説明し、特異性が最も高いインラインスタイルに焦点を当てています。 CSS競合を管理するための特異性レベル、オーバーライド方法、およびデバッグツールを説明します。

HTMLファイルにCSSを追加できますか?HTMLファイルにCSSを追加できますか?Apr 28, 2025 pm 05:24 PM

記事では、HTMLにCSSを追加する3つの方法について説明します:インライン、内部、および外部。ウェブサイトのパフォーマンスと初心者の適合性に対する各方法の影響が分析されます。(159文字)

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター