質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Q&A

解決済

3回答

1965閲覧

下記のような、いろいろな方向からのぼかしグラデーションはCSS3で作ることも可能なのでしょうか?

退会済みユーザー

退会済みユーザー

総合スコア0

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

0グッド

0クリップ

投稿2016/02/29 01:46

下記のような、いろいろな方向からのぼかしグラデーションはCSS3で作ることも可能なのでしょうか?
フォトショで作らないとやはり無理ですかね。

イメージ説明
イメージ説明
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

box-shadowを使えばいけるんじゃないですかね。

box-shadow: 0 0 50px #fff;

3番目の引数で大きめにぼかし範囲をとっておいて、
4番目の引数でぼかし色を指定すればOKかと。

投稿2016/02/29 01:59

ogaaaan

総合スコア765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/02/29 02:10

box-shadow: 0 0 50px #fff;をやってみたのですが、 ボックスの外側にふわっとした光彩はできるのですが、 中にグラデーションはできません。組み合わせるということでしょうか?
ogaaaan

2016/02/29 02:25

そっすねー。 具体的にいうと、 position: relative; overflow: hidden; なボックスつくって、 その中に、先ほどのぼかしboxをいくつか入れればいいかと。 ぼかしboxは position: absolute; にしておいて、 left: 10px; top: 80px; みたいにbox内で位置指定できるので、 いろいろやってみてください。 注意点として、グラデーションは処理がかなり重いので、 あんまりたくさん入れ込むと、スクロールとかががたつくかもしれない。 ちなみに自分だったら画像にします。
退会済みユーザー

退会済みユーザー

2016/02/29 03:12

ポジションでdivを四つくらい上下に重ねて、それぞれに別のグラデーションをかけるということですね。 CSSなら何でも画像より軽いわけではないのですね。 フォトショで小さめに作って、それとわざとWEB上で拡大表示させて表示するか、 フォトショで小さめに作って、SVG化するほうがいいですかね。
ogaaaan

2016/02/29 05:24 編集

htmlもcssも画像も、まずはPCが計算してメモリ上にレンダリングします。 レンダリングしたらそれを画面にペインティングします。 レンダリングはCPU、ペインティングはGPUが使われることが多いですが、まず、レンダリングもペインティングも軽いほうが最終的に『速い』わけです。 1枚画像なら、1枚の画像をレンダリングするという処理だけで済み、あとはペインティングするだけです。 CSSだと各種パラメータを計算し、それをレンダリング結果として保存し、それをペインティングします。ぼかしBOXが大量にあれば、それだけ計算が走ります。 SVGも基本同じです。 予断ですが、canvasタグでAndroid4系でSVGを表示させると、欠けたり表示されなかったり、いろいろ不具合が出ます。 そういう意味も含めて、画像1枚のほうがはるかに処理が軽いじゃないですかね。 ぼかしをそれぞれアニメーションとかしたいなら、ぼかし画像を1個ずつpng画像でつくっておいて、jQueryとvelocity.jsで動かすのがお勧めです。いろいろな理由でvelocity.jsはちらつきなどほとんどないので。
退会済みユーザー

退会済みユーザー

2016/02/29 06:18

ありがとうございます。 まさに下記のサイトのような感じなのですが、やはりはじめからぼかした画像を使っていますね。 https://app.codegrid.net/entry/bem-basic-1 やはりヒーローイメージにぼかしグラデーションは今はやっているのかもしれないですね。 また、画像よりもCSS3のグラデーションのほうが遅くなる可能性があるのですね。 それはびっくりしました。 画像のほうが絶対に遅いと思っていました。
退会済みユーザー

退会済みユーザー

2016/02/29 06:19

レンダリングの速度を考えても、複雑なグラデーションは画像のほうが早いのですね。
退会済みユーザー

退会済みユーザー

2016/02/29 06:20

SVG化しても、画像のほうがはやいのですね。
ogaaaan

2016/02/29 06:23

っそっすね。 画像でシンプルにやったほうが良いかもしんないっす。
退会済みユーザー

退会済みユーザー

2016/02/29 08:12

了解しました。簡単なグラデはCSS3で行い、その他はSVG化しても軽くならないのでそのまま画像にします。
ogaaaan

2016/02/29 08:14

Google Chromeだったら開発者ツール(Ctrl+Shift+IもしくはF12)でTimelineつかってどれくらい処理が重いかわかるんで、参考にどうぞ~。
退会済みユーザー

退会済みユーザー

2016/03/01 02:46

ありがとうございました。 論より証拠ですね。
ogaaaan

2016/03/01 02:53

予談ですが、画像を拡大させてぼかすのは、 バイリニアとかバイキュービックとかいろいろなアルゴリズムがありますが、 余計な処理が走るのでその分重くなります。 基本的には当倍が一番早く、2の倍数サイズがその次に早いです。あんまり人間が感じる速度の差はないですけど、ぼかすために拡大するよりかは早いです。
guest

0

そこまで複雑になるのだったら、CSSで書くより何かしらの画像にすることをおすすめします。

とりわけ、SVGであればHTMLに直接埋め込むこともできますし、JavaScriptからの操作もできますので、(どんな使い方をするのかにもよりますが)悪くないかなと思います。

投稿2016/02/29 02:57

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/02/29 03:12

フォトショで小さめに作って、それとわざとWEB上で拡大表示させて表示するか、 フォトショで小さめに作って、SVG化するほうがいいですかね。
guest

0

現実的かどうかは別にして、
もともとPhotoshopでも複数のグラデーションを被せる場合は「半透明の色->透明」のグラデーションを利用すると思いますので
position:absolute; グラデーション塗り
のような同じ大きさのboxタブを画像の上に重ねていけば可能ではないでしょうか?

ここでやっているようなことを複数回

投稿2016/02/29 02:24

編集2016/02/29 02:28
hirohiro

総合スコア2068

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/02/29 02:59

ポジションでdivを四つくらい上下に重ねて、それぞれに別のグラデーションをかけるということでしょうか?
hirohiro

2016/02/29 04:15

そうですね。 ただメモリサイズはともかく、実行時に描画するわけですからクライアントの負荷は増大します。 複雑な画像をイメージしているなら別の方法を検討したほうが良いと思います。
退会済みユーザー

退会済みユーザー

2016/02/29 06:19

レンダリングの速度を考えても、複雑なグラデーションは画像のほうが早いのですね。 SVG化しても、画像のほうがはやいのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問