グーグルは最もクールな効果を持っています-かつてはパックマンゲームでしたが、今日は明らかに最初の万国博覧会の160周年であり、グーグルのロゴにはそれをイメージしています。また、マウスを拡大鏡に変えて、画像(金の指輪)を一掃することもできます 。
彼らはどうやってそれをするのだろうか。これは明らかにJavascriptであり、ページのソースを調べましたが、特に読みやすいわけではありません(当然のことです)。
グーグルは最もクールな効果を持っています-かつてはパックマンゲームでしたが、今日は明らかに最初の万国博覧会の160周年であり、グーグルのロゴにはそれをイメージしています。また、マウスを拡大鏡に変えて、画像(金の指輪)を一掃することもできます 。
彼らはどうやってそれをするのだろうか。これは明らかにJavascriptであり、ページのソースを調べましたが、特に読みやすいわけではありません(当然のことです)。
ソース コードを見ると、かなり基本的な手法を使用してこれを実現しているように見えます。
埋め込まれた気の利いたアニメーション gif をすべて無視すると、基本的に 2 つの画像があります - シーン全体の大小です。大きな画像はドキュメント内で 3 回繰り返されます。下の注釈付きの画像を見て、ズームがどのように機能するかをよりよく理解してください。
拡大円の内側の部分は、上、中、下の 3 つの div に分割されます。各 div のオーバーフローは非表示にする必要があります。各 div は、ズーム サークル内に相対的に配置されます。マウスの移動時に、ズーム円の絶対位置をマウス座標に変更します。彼らの例では、スケーリングとアニメーションの遅延の追加に CSS3 も使用しています。
これは、最小限の再構築された例です。
全体を正方形として表示するために div オーバーフローを非表示にしない別の例。
まず、このようなエフェクトを使いたい人のために、jQuery プラグインがたくさんあります。以下にいくつかを示します。
第二に、達成するのは非常に簡単です。フルサイズの画像をロードするだけですが、width
実際の幅よりも小さいので、CSS によってスケーリングされます。次に、JavaScript+CSS を使用して、背景と同じ画像で Div (虫めがね) を作成しますが、プロパティを、ユーザーのマウスが現在置かれてbackground-position
いる対応するスケーリングされた座標に変更します。x,y
他にも方法はあると思いますし、Google は別の方法で行っているかもしれませんが、これが私が思いつく最も明白な方法です。
実際の例とこの手法の詳細な説明については、http://codeblab.com/glass/にアクセスしてください。Flash と CSS v3 には、丸い虫眼鏡を作成するための十分な機能があります。ただし、simulate-a-circle-with-overlapping-rectangles
(多くの) より多くのプラットフォームで動作します。
(開示: codeblab.com は私の個人的な趣味のブログで、オランダでの私の仕事への弱いリンクがいくつかあります。)
http://www.aplweb.co.uk/blog/js/magnifying-glass/には、HTML5 を含む、あらゆる種類の HTML を拡大する完全な例があります。クロスブラウザでも動作します - ほとんどのブラウザでは丸みを帯びた角は少し不安定ですが - そのため、円ではなくボックスを使用する必要があります.
動作する方法は次のとおりです。
それもほとんどそれです。ただし、すべてのブラウザで動作させるために注意すべき点がたくさんあります。
私の地域ではロゴが表示されなくなったので、Google がどのようにそれを行っているのかわかりません。ただし、この効果は、キャンバスを使用して通常の画像の上に拡大されたアニメーション GIF をクリッピングすることで実現できます。別の方法として、CSS の border-radius (角を丸くするために一般的に使用されます) を使用して、円形のクリッピングを作成することもできます。
編集: CSS ボーダー半径を使用する場合に必要な基本的なテクニックを示すために、これを一緒にハックしました: http://jsfiddle.net/yjBuS/
1つはロゴ用、もう1つはズーム用の2つの画像を使用しているようです(アニメーションを個別に実行するために、ズームされた画像は実際にスライスされています...?)おそらく、マウスが通常のロゴの上にあるかどうかを検出し、表示します黄色の円をクリックして、マウスの位置に取り付けます。次に、他の画像を表示し、マウスの反対側に移動します。または似たようなもの。