2007年 06月 03日(日曜日) 17時 00分

画像の位置

 相変わらず些細な部分ですけどブログの変更。

 画像を貼り付けた時、大抵の場合は文字を回り込みさせます。その場合、画像と文字の隙間が無くなってしまうので、imgタグにhspaceやvspace属性で画像の回りに空白スペースを確保していました。FireFoxではhspaceやvspace属性が使えないので隙間は常に0pxでしたが。
 この方法だと、右端に画像を置いた場合(imgタグのalign=left属性を使用)、厳密には右端からhspace分、左にズレてしまうことになります。
 そこで、スタイルシートにクラス属性(highslide使用時にはid属性を使用)で画像の位置が左なら、テキストの回り込みと隙間の確保、画像の位置を左へ8pxズラすなどの設定を追加して、画像の位置をコントロール出来るようにしました。FireFoxでの表示も思い通りになってくれました。ここが気になってた所なんです。

 ここまではよかったんだけど、この画像の位置をズラしたおかげで不具合が。
 IEが持つブラウザ上の機能で、リンクをクリック(onfocus)した時に、そのリンクの回りに点線が出るのですが、この点線が画像をズラす前の本来の位置に表示されます。つまり、8px分のズレが発生するんです。
 こればかりは悩みました。この点線そのものは、障害者などへの配慮で使用されるているものです。しかし、他のブラウザでは使われてなかったりします・・・。

 だったら、「ページ内の全てのリンクに対して、この点線を消す裏技である【onfocus="this.blur()"】を適用してしまえ!」という発想に。とは言う物の、全てのリンクタグを変更するのは無理なので、「ページを読み込んでから、リンクタグの記述に対して【onfocus="this.blur()"】を追記する」ようにしてみましょう。
 あらゆるサイトを探したものの、そんな方法は載っていません!

 で、たどり着いたのが、unbland.net blogさんの「HighSlide JS での手間を省く」エントリーにあるjQueryを使う方法に手を加える事でした。お世話になりました。本当にありがとうございます!

 と言うわけで、リンク選択時の点線が、IEでは表示されなくなっています。

 なかなか苦労しただけあって、思い通りにいきました!

トラックバックURL

このエントリーのトラックバックURL:

コメントする

太字 イタリック アンダーライン ハイパーリンク 引用