2008年11月27日

メモ The IE Doubled Float-Margin Bug

IE6ではfloatを使ってレイアウトを組んでいる時、floatした方向と同じ側にmarginを指定すると、IEだけ設定してあるmarginが倍になってしまう現象が発生します。

これは
「The IE Doubled Float-Margin Bug」

と呼ばれるIE特有のバグらしいです。
例えば
div p{ margin-left:50px;  float:left; }
と設定した場合、左に50pxの余白を作るはずがIE6では100pxくらいの余白を生み出してしまいます。
このバグを防ぐためには、上記のプロパティ以外に display:inline;を指定してあげる必要があります
div p{ margin-left:50px;  float:left; display:inline; }
display:inlineはfloatした要素に対して無視されますので、単純にバグを防ぐためだけに使う事が出来ます。
 

2008年10月17日

メモ Flash のループミュージック

Flashサイトで音楽を使う時ループ再生させる事がある。
そういった場合は、もちろんASで制御する事は可能、
でも 再生する音源によっては注意が必要。

特にMP3は開始部分に一瞬無音状態が挿入されている。
なので、つなぎがうまく行かずループにならない。

どうしてもFlashでループ再生をしたいのなら、
他の形式に変換するか、最初から別の音源(生のWAVやAIFF形式など)
をインポートするべきだと思う。

2008年10月 7日

CSS リストの横置きで

CSSでリストを横置きにしてナビゲーションを作るケースは多い。
横置きにするには <li>タグに

li{ display:inline; }

といった記述で可能になる。

が、それでもブラウザによっては縦置きに変換されてしまう事もある。(特にIE5.x)
そういった事態を解決するには、リストをかこんでいるコンテナのwidthプロパティの指定を自動から数値での明示に変えてみる。


しかしインライン配置をした場合、特性を考えた上でスタイルを指定しないと各ブラウザで見栄えが均一にならない時がある。そういった時は均一にしたいリストタグの<ul>タグに

ul{ line-height:0; }

を指定してやれば回避できる。

2008年9月29日

メモ SWF内で別のFLVを再生


    my_nc = new NetConnection( );
    my_nc.connect(null);

    my_ns = new NetStream(my_nc);
    my_ns.play(" url ");

●サイズの修正が効かない時は   videoオブジェクト.smoothing でビデオのスムージングを設定。
●再生ヘッドの位置を秒単位で前後に変更   my_ns.seek( 秒数 );

2008年8月 5日

メモ Star html Hack


Safari や FirefoxをIE6などと同時にメインのブラウザ環境にする場合、
どうしてもIE5.5やIE6などの特異性に手間取ってしまい、
コーディング作業に時間がかかる。

Star html Hack は IE6以前だけにプロパティの適用対象を設定する。
使用したいセレクタの前に
 *html
を置いてあげるだけで設定完了。

対象をIE7にのみ設定するやり方もある。こちらは、
*:first-child+html
をセレクタ前に配置する。

2008年7月15日

メモ 別ページのアンカーポイント


別ページ内にあるアンカーポイントの位置にリンクを指定する時は
指定したURLの終わりにidタグを付けてやる。


../index.html 内の#fotterに飛ばしたい場合
../index.html#fotter でタグを指定する。


2008年7月11日

メモ FlashPlayer無しの表示を確認したい IEで


Webサイト制作中、IEでFlashPlayerが無効状態の画面を確認したい時がある。
そういった時は基本的にはjavascriptを無効にしてしまえば、とりあえずはPlayer無しの状態は確認する事はできる。
が、しかし
javascriptの動作を確認したい時は厄介で単純に無効にするわけにはいかない。
ポップアップメニューやウィンドウの制御などjavascriptのみでの確認の場面は多い。

そういった状態に陥ったらまずは

ツールメニュー -> インターネットオプション -> セキュリティータブ
インターネットのレベルのカスタマイズで
ActiveXコントロールとプラグインの実行を「無効にする」を選択

上記の方法を用いればIEでFlashPlayerのみを無効にした環境を作り出せる。

2008年7月 2日

メモ AS2.0 cacheAsBitmap



true に設定すると、ムービークリップまたはボタンインスタンスの内部ビットマップ表現がキャッシュされます。これで、複雑なベクターコンテンツを格納している ムービークリップのパフォーマンスを向上させることができます。ビットマップがキャッシュされているムービークリップのすべてのベクターデータは、メイン ステージではなくビットマップに描画されます。

2008年6月26日

メモ ユニバーサルセレクタ

全称セレクタ、通称ユニバーサルセレクタと呼ばれる「*」
昨今の流れではcssのブラウザリセットは必要なタグのみにのみ、リセットをかけていく方向に動いている。
レンダリングが遅くなったり、問題のないプロパティの設定まで初期化してしまうかららしい。
ただ、実際にレンダリングスピードがどのくらい変わるのか把握しているわけではないし。
cssメインのページじゃなければ問題ないみたい。
参照記事


今回使用した理由
必要な部分にのみリセットをかけても「swfobject.js」と「swfforcesize.js」を使用してトップページのみフルFLASHでスマートに表示されないため。


症状
スクロールする必要がない状態(ページが全体表示されている)でもスクロールバーが非表示にならない。
ページ下部に無駄な余白が生まれる。


結果
どのプロパティに問題があるのか、正直見当もつかないがSafari,firefoxではきれいに仕上がった。
とはいえ、下層ページはcss主体のページになるため別のcssファイルでレイアウトする必要があるだろう。

2008年6月25日

メモ javascriptからFlashに値を渡す(swfobject.js編)


jsファイル「swfobject.js」で
body内に基本的な記述をする時は
<script type="text/javascript">
var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699");
so.write("flashcontent");
</script>

上記のようなものになるが、その時に
<script type="text/javascript">
var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699");

so.addVariable("variable1", "value1");
so.addVariable("variable2", "value2");
so.addVariable("variable3", "value3");

so.write("flashcontent");
</script>
上記の太字のような文章を挿入することでムービーのロード時に設定した値を
swfに渡すことができる。

この場合は

so.addVariable("variable1", "value1");
so.addVariable("variable2", "value2");
so.addVariable("variable3", "value3");

variable1という変数にvalue1という値を、
variable2という変数にvalue2という値を、
variable3という変数にvalue3という値を、
それぞれswfに渡している

渡した値でASを使えば、複数のHTMLで一つのswfファイルを使い回すことも可能になる。その際は、各HTMLに対してフレームごとに中身を変えておき、値を使った条件式で移動すればいい。