blog

メニューなど、目立たせたい要素を反射させて かつ波打たせてゆらゆらさせてみる

完成サンプルです

  • メニュー1
  • メニュー2
  • メニュー3
  • メニュー4
  • メニュー5

こんな感じに仕上げました。

メニューナビゲーションバーを反転させてゆらゆらさせてます。水面に映ってるようなエフェクトです。そのままのエフェクトだとキャラが濃くなってしまうので、白画像を透過させてグラデーションさせてます。

注意点

CautionWave

まず このプラグインは 画像の要素のみにしかききません。imgタグのみです。

つまり、CSS3で加工したナビバーなどでは適用できません。CSSでbackground に指定した画像でもダメです。適用したい要素は必ず HTMLでimgタグを使用してください。

実装コード

jQuery

[javascript]

jQuery(document).ready(function(){
jQuery(function(){
jQuery("#hogeImg img").lake({
‘speed’: 0.3,
‘scale’: 0.3,
‘waves’: 7
});
});
});

[/javascript]

ゆらゆらさせたい要素を指定して、オプションの値を入れていくだけです。

オプションの効果

オプション エフェクトの効果内容
speed 波打ちのスピードです。数値を大きくするほど速くゆらゆらします。
scale 波の高さです。数値を大きくするほど横にゆらぎます。
waves 波の数です。数値を大きくするほどゆらゆらの感覚が細かくなります。

HTML

[html]

<div id="hogeWrap">

<img src="waveNav.png" alt="waveNav" width="500" height="60" style="display: none;">

<ul id="hogeNav">
<li>メニュー1</li>
<li>メニュー2</li>
<li>メニュー3</li>
<li>メニュー4</li>
<li>メニュー5</li>
</ul>

</div>

[/html]

エフェクトさせたい要素は display: none させてください。プラグイン側のルールだそうなので、必須です。

ナビの部分のリストと、ゆらゆらさせる画像のimgを用意して CSSの position: absolute で重ねてます。

さっきも書きましたが、ul や li にはゆらゆらさせるエフェクトの指定ができません。ので、こうしてみました。

HTMLを汚したくない!キレイに書きたい!っていう場合は、擬似要素だったり jQueryで要素を追加することも可です。その場合のコードはこんな感じで。

jQueryでHTML要素を追加

[html]

<div id="hogeWrap">

<ul id="hogeNav">
<li>メニュー1</li>
<li>メニュー2</li>
<li>メニュー3</li>
<li>メニュー4</li>
<li>メニュー5</li>
</ul>

</div>

[/html]

[javascript highlight=”3″]

jQuery(document).ready(function(){

jQuery("#hogeImg").prepend("<img src=’waveNav.png’ alt=’waveNav’ width=’500′ height=’60’ style=’display: none;’>");

jQuery(function(){
jQuery("#hogeWrap img").lake({
‘speed’: 0.3,
‘scale’: 0.3,
‘waves’: 7
});
});
});

[/javascript]

jQueryの prepend を使用して、id=”hogeWrap” のなかの先頭にimg要素を追加します。

これでHTMLだけをみたら、普通のナビゲーションメニューのようなリストスタイルのみになります。

最後に一手間。ゆらゆらを薄くする

上記で実装までは出来ているんですが、それだとキャラが濃ゆくなってしまいます。要素によってはいいんですが、ナビゲーションバーとかでは ちょっと主張が強すぎです。

ので、少し色味を薄くして、下にいくにつれて フワーっ と消える感じにしました。

ただ、プラグインのオプションではそういった設定がないので、力技で実装してます。

まずはこういった透過してるグラデーションの画像をつくります。IE無視ならCSS3でも構いません。

Transparent

まんなかの透けてる白い四角です。バックは見やすくするのに適当なテクスチャを敷いてます。

その要素をゆらゆらしてる箇所にかぶせます。こう!

[html]

<div class="hogeWrap">

<ul class="hogeNav">
<li>メニュー1</li>
<li>メニュー2</li>
<li>メニュー3</li>
<li>メニュー4</li>
<li>メニュー5</li>
</ul>

<div class="hogeWhite">
<!– 白い四角にする空要素です。CSSのpositionで重ねます。 –>
</div>

</div>

[/html]

してみました。

プラグイン作成者様のダウンロード先

です。

今回のプラグインはユニークな視点のモノだったので、私なりに実用性を何か付け足せないか、的な記事にしてみました。

以上です!!