[CSSチュートリアル】CSSのシングルDivの描画スキル
純粋なHTML+CSSでドラえもんの絵を描くなど、CSSの描画に関する記事をよく見かけますね。この方法は、divを一つずつ積み重ねて、絵の一部を実現するものです。この手法に本質的な問題はないのですが、難易度が低く、忍耐力が必要なだけで、多くのグラフィックはまだまだゆっくり実現できます。
このようなCSSによる描画の必要性を踏まえて、新しい考え方としてシングルタググラフィックスというものがあります。これは、複雑なグラフィックを1つのタグで行うことを意味しますが、タグを無制限に使ったり、divを積み上げたりできるよりもはるかに難しく、CSSに対する深い理解が必要になってきます。
例えば、以下のグラフィックは、1つのdiv要素から派生して作られます。 単一のDiv
今回は、1つのタグを借りて描画するテクニックを紹介し、それを使って複雑なグラフィックを実現します~ ?・?
擬似要素を賢く使う
シングルタグとはいえ、シングルタグによるグラフィックヘッダーの例では、ほとんどすべて3つの要素を使用しています。これは、単一タグのグラフィック実装の中で最も中心的な部分である
要素自体のスタイルに加えて、この要素の2つの擬似要素 -- すなわち
scipy
と
optimize
であり、実際には全部で3つの要素になります。
なるほど、例えば次のようなハートグラフィックはdivでしか実装できないわけですが、どうやるんですか?
このような不規則な形状は、純粋なCSSでは本来複雑であり、SVGの助けを借りて作成することが多いのですが、これはもちろん
fmin
. しかし、よく見ると、このグラフィックには
fmin_powell
で、画像を3つに分割してみる。
<イグ
なんと、正方形を実装するために要素そのものが必要で、絶対位置決めを使って2つの円を実装するために要素の2つの疑似要素が必要なのです!お互いに重なり合うのです。完全なコードも非常にシンプルです。
fmin_bfgs
完全なサンプルコードについては、ここを参照してください。 CodePenデモ -- サインペンDivのハート型
グラデーション & マルチグラデーション
グラデーションは、グラフィックのシングルタグ実装において、最も使用されるCSSプロパティの一つと言っても過言ではありません。
その理由は、複数のグラデーションを持つことができるからです! 単一のlinear-gradientや単一のradial-gradientではなく、backgroundについては、複数のグラデーションの重ね掛けをサポートしていることに注目したい。
では、この太極図を見てみましょう。
太極図は、実はいくつかの色の違う円が組み合わさってできているのですが、ここにいくつかの違うdivを積み重ねて組み合わせても絶対にOKなんです。しかし、私たちの目標は、それを一つのタグで行うことです。
グラフが円や線ばかりになると、複数のリニア(放射状)グラデーションの使用を検討する時期になるので、上の画像を少し崩してみましょう。
実際には、1つのリニアグラデーションに4つのラジアルグラデーションを加えて円を構成しています。
つまり、太極図の完全なコードは、たった一つの div で済み、疑似要素の助けさえも必要ありません。
fmin_cg
完全なサンプルコードについては、ここを参照してください。 CodePenデモ -- 1つのディブのPURE CSS太極拳
シャドウ&マルチシャドウ
グラデーションとよく似た性質に、シェーディングがあります。
fmin_ncg
は、その
leastsq
属性は、複数のレイヤーを重ねることができる機能でもあり、複数のシャドールールを組み込むことができる、まさに究極のシングルタブ描画キラーなのです。
divを使って、次のようなグラフィックを実装してみましょう。
一見すると、このグラフィックは非常に複雑で、雲や雨粒はタグや疑似要素だけでは実現できないように見えます。
まず、雲を見てみましょう。不規則な輪郭をしていますが、実はひとつひとつが円になっています。複数の放射状グラデーションや複数のシャドウを使うのに最適です!
実際には円を実現し、さらに影を使って複数の円の重ね合わせを実現した、サンプルアニメーションです、一目瞭然です:。
コード量も実はとても少なく、以下のコードでクラウドを実装しています。
fmin_l_bfgs_b
雲のサンプルコードと同様に、雨粒は実際には複数のシャドウの助けを借りて実装されています。
fmin_tnc
要素そのものと、要素の擬似要素が使われただけで、残りの擬似要素で下部の影円を実装しています。
グラフィックに輝きが欠けているように感じるので、Divの上にいくつかの
fmin_cobyla
で、盾の表面にハイライトを追加します。
fmin_slsqp
OK、それなら完璧にforで動作します。
完全なコードについては、以下のサイトを参照してください。 サインディブシールド
テープのシングルラベル実装
もう一度、テープのグラフィックを見てみましょう。
とても複雑に見えますが、すべて円と様々な線で構成されており、実は1枚のラベルを使った実装に適しているのですが、とても時間がかかり、細かい制御が必要です
nnls
の中のグラデーションはそれぞれ
anneal
は、その
brute
:
fminbound
brent
golden
bracket
curve_fit
brentq
brenth
ridder
bisect
関連
-
[CSSチュートリアル】カットコーナー+ボーダー+プロジェクション+コンテンツ背景色のグラデーション効果を実現するCSS
-
[css3]css3におけるtransformプロパティの4つの機能
-
[CSSチュートリアル】CSSのfloatとunfloatについて
-
[CSSチュートリアル】CSSカウンターを使った数字の並びの美化方法
-
[css3]本のページをめくるような効果を実現するcss3サンプルコード
-
[CSSチュートリアル】SVGを使ったCSSアニメーションでエネルギーフローを表現する
-
[CSSチュートリアル]マウスをスライドさせてカードを浮かせるCSSの例
-
[css3]テキストタイポグラフィのためのCSS3テキストオーバーフローソリューション
-
左上または右上にリマインダーのドットを表示するCSS3サンプルコード[CSSチュートリアル
-
[CSSチュートリアル]純粋なCSSは、効果を引き出すために、ページ内のリストを達成するために
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[CSSチュートリアル】よくある2D変換を5つ実現するCSS
-
[CSSチュートリアル】 css border add four corners コード
-
[CSSチュートリアル】CSSアニメーション 途中で止める方法とポーズを維持する方法
-
[CSSチュートリアル】resizeで画像のプレビューを切り替える方法
-
[CSS3] CSS3リスト無限スクロール/回転効果
-
[CSSチュートリアル]テーブル table :nth-child()を使って行間の色変更と整列を実現する。
-
[css3]CSS3は本当にSCSSに取って代わるのだろうか?
-
原理を説明するためにいくつかの方法の虫眼鏡効果の模倣で[css3]css3
-
[CSSチュートリアル】ピュアCSSでロウソクの溶ける(水滴)を実現するサンプルコード
-
[CSSチュートリアル】cssのボックスモデルを解説 余白のパディングと省略について