Author Archives: ake_nyanko

高さ揃えJavaScriptの落とし穴・その後

jquery.flatheights.jsを使ってボックスの高さを揃える際、高さ指定の無い画像が含まれているとwebkitでボックスがつぶれてしまうということについて前回記事を書きましたが、その後@mattari_pandaさんの協力でとりあえず解決に至りました。

var _UA = navigator.userAgent.toLowerCase();
if(parseInt(_UA.indexOf('applewebkit')) > -1){
$(window).load(function(){
$('.box1').flatHeights();
});
}else{
$(function(){
$('.box1').flatHeights();
});
}

こんな感じでwebkitの場合は実行タイミングを「load」にしてやることで画像の高さを取得してくれるようになります。UAで分岐しないで全て「load」にしてもできるのですが、そうすると問題の無いブラウザでの表示パフォーマンスを無駄に落とすことになりますのでUA分岐しています。

高さ揃えJavaScriptの落とし穴

ボックスを格子状に並べて一覧表示する際、どうしても高さを揃えたいというのは当たり前の要求だと思います。
ところがCSSレイアウトの場合、隣り合うボックスの高さを揃えるということが案外大変です。
中身が画像などで高さが確実に固定できる場合はheightを指定すればいいだけなので問題ありませんが、
中身が可変コンテンツだった場合、ボックスから中身がはみ出してしまったりする危険があるため単純にheightを指定するわけには行きません。
しかもECサイトなどで商品一覧が動的に書き出されてくるような場合、何がどのような順番でいくつ書き出されるのか全く特定できないため、手動で高さを揃えてやることも不可能です。
そういう場合に威力を発揮するのがボックスの高さを揃えるためのJavaScriptです。
有名なものは
heightLine.js
jquery.flatheights.js
の2つだと思います。
これらは非常に便利で、私もよく利用させていただいています。
特に最近は2つ目のjquery.flatheighs.jsがお気に入りです。
が、このJS、思わぬ落とし穴がありました!それは、
子要素にheightが指定されていない画像が含まれているとボックスがつぶれて表示されてしまう(webkitのみ)
ということです。
普通はhtmlの属性かcssで画像のwidth・heightを指定するはずなので問題ないのですが、
サイズがバラバラの画像をプログラムで書き出すようなサイトの場合、個別の画像のwidth・heightを指定することが困難になるので敢えて指定しない、という判断を下すこともあると思います。
そういう所にこのjquery.flatheights.jsを使っていると、ブラウザが画像のサイズを取得して表示する前に高さを揃えようとしてしまうため、画像の高さが無い状態でボックスの高さを揃えてしまいます。
滅多にある状況ではないと思いますが、そういう状況も考えられなくもないので、このJSの利用を考えている方は一応注意した方がよいと思います。
ちなみにheightLine.jsの方だとどうなるか、というのは検証していないのでわかりません(汗)

どんな要素でも簡単にカルーセル化「CarouFredSel」

Amazon等でよく見かける「カルーセル」表示。
jQueryで自作したりその都度仕様にあったプラグインを探して導入したりするのは大変ですが、「CarouFredSel」なら簡単な設定でどんな要素でも簡単にカルーセル化でき、大変便利です。
http://caroufredsel.frebsite.nl/
このプラグインの便利なところは、
・<ul>や<img>などの単純なHTMLソースを自動的にカルーセル化してくれる
・縦、横、秒数設定、循環/非循環、NEXT/PREVボタンの有無など、豊富なオプションが用意されている
というところです。
サイトもヘルプもすべて英語ですが、「Configration Robot」が用意されており、各項目についてチェック方式で質問に答えていけばオプション設定の記述を自動的に書き出してくれる便利なサービスもついています。
http://caroufredsel.frebsite.nl/configuration_robot.php
これは便利!
おすすめです。

CSS3で背景グラデーションをピクセル指定する方法

CSS3を使えば画像を使わずにグラデーションを表示させることはできますが、
その書き方として紹介されている方法は、ボックスサイズに対して%(割合)でグラデーションの幅を指定する方法ばかりです。

参考:http://www.css-lecture.com/log/css3/css3-gradient.html

そこで、「上から100pxまでグラデーションにして残りはベタにしたい」といったピクセルでグラデーションの幅を決めたい場合の書き方を調べてみました。

background-image:-webkit-gradient(
linear,
0 0,   /*開始点の位置を座標(X,Y)で指定 */
0 100, /*終了点の位置を座標(X,Y)で指定 */
from(#ffffff),
to(#ff0000)
);

webkitの場合、座標指定に(0 , 100px)のように単位をつけると無効になってしまうので、必ず単位無しで指定するのがポイントです。

background-image: -moz-linear-gradient(
top,
#f30,
#ffc 100px /*終了点の位置をpxで指定*/
);

上記のような書き方をすればピクセル幅固定の2色グラデーションを表現できます。
webkitの場合、color-stop()を使った構文だとうまくグラデーションを作る事ができず、
またwebkitもmozも両方、3色以上のピクセル固定をどうしたら良いのかはまだ不明です。
どなたかご存知の方いらしたら教えていただけると嬉しいです。m(_ _)m

Mac→Winのデータ受渡しの決定版「MacWinZipper」

MacユーザからWindowsユーザにでーたを受け渡しする際、困ることの代表例が
1.日本語のファイルが文字化けする
2..DS_StoreなどWindowsでは不要なファイルが含まれる
の2点だと思います。
この2点を一気に解決してくれる圧縮ソフトが「MacWinZipper」
ドラッグアンドドロップするだけで不要ファイルを削除し、文字化けしないデータをつくってくれます。
かなり、おすすめ。パスワード付きZipにも対応。
http://www.tida.bz/macwinzipper