PNGのコンテンツに影を落とすことは可能ですか?
正方形ではない、しかしオブジェクトは影を落とす
PNGの不透明なコンテンツに作用します。
それは間違いなく可能です。
フィルターを使用して、サンプル:
img {
-webkit-filter: drop-shadow(5px 5px 5px #222);
filter: drop-shadow(5px 5px 5px #222);
}
CSSでこれを行うことはできません。ただし、キャンバスを介してそれを行うことは非常に可能ですが、(クライアントによって毎回処理されるため)幾分非効率的であり、JavaScriptに依存します。 PNGで実行する方が簡単で、より多くのブラウザで動作します。
さらに詳しい情報が必要な場合は、「html canvas blur」や「html canvas load image」などをウェブで検索してください。または、さらに良いことに、すべてを実行できるキャンバスシャドウ機能を使用します。
以下に例を示します。 http://philip.html5.org/demos/canvas/shadows/various.html
context.shadow(Color|OffsetX|OffsetY|Blur)
を必要に応じて設定しますcontext.drawImage
を使用してimgタグからPNGをロードしますそしてボーナス:
context.toDataURL
を使用します(PNGをドロップするWebアプリを作成すると、影が付きます)。CSSで利用できるようになるまで、私のアプローチを試すことができます。
私の例ではこの写真を使用しています。
透明な背景があり、正方形ではないため(CSSのボックスシャドウが動作するため)。それはあまり空想ではありませんが、この小さくてシンプルなチュートリアルをうまく提供します。
次のステップは、上の画像に基づいて別の画像を作成し、元の画像の下に配置することでした。
ステップ1。ぼかしを追加:
ステップ2。光とコントラストを削除:
だから、オリジナルとシャドウがあります。
次に、あたかも影のように表示します。
スタイル:
.common {width: 100px;height: 100px;background-size: 100% 100%; position:absolute;}
.divOriginal {background-image: url(../img/original.png);top:2em;left:2em;z-index:10;}
.divShadow {background-image: url(../img/shadow.png);top: 3em;left: 2.5em;z-index:8;}
魔法をかける:
1つのdivを追加し、attribute class="divOriginal common
"とclass="divShadow common"
を使用して別のdivを設定します。
結果は次のようになります。
乾杯!
アディ
キャンバスに関するChris Morganの提案に基づいて、このためのjQueryプラグインを作成しました。 GitHubで見つけることができます: https://github.com/Kukunin/image-shadow
Createjsサンプルの使用は JSFiddle にあります。
shadowTarget.shadow = shadow;
stage.addChild(shadowTarget);
shadowTarget.x = 500 / 2;
shadowTarget.y = 450 / 2;
shadowTarget.regX = shadowTarget.image.width/2;
shadowTarget.regY = shadowTarget.image.height/2;