WordPressのPlugin Link Indicationとは、
Link Indication←コレ(外部リンクにicon)や、yokoi@greenwich.co.jp←コレ(Mailにicon)などを実装するプラグインです。
Pluginの内容については説明されている方々が多くいますので、例によって割愛。
今回の問題は、やっぱり、いつもの、アレのバグによる問題です。
まず、期待値はこちら。(Firefox)
参考ページ:導入事例サイドバー 最新のお仕事情報
そして、IEはこちら。(IE6,7)
ワンデーえー?
これは、WordPressのPlugin「Link Indication」がどうのこうのではなくて、本当に単純にIEの問題です。
改行が入るインライン要素に対して、背景画像(末尾に背景画像を配置する場合)がうまく表示出来ない、という話。
スマートに対処をしたいものの、なかなか苦しいです。
なので、
- IEのみに適応
- 改行が入るインライン要素の中に「インライン要素」
<span class="liexternal_ie"> </span>を自動追加 - <span class="liexternal_ie">に「背景を指定する」
- Link Indicationが付けるclassを利用する
- jQueryを使用する
という対処をする事にしました。
改善のためのSTEP
- jQueryを導入
- 追加でjsを作成
- CSSの調整
この3点です。前提として、Link Indication Pluginを使用している方向けのjsです。
1. jQueryを導入
header.phpの一番最初、1行目にwp_enqueue_script('jquery');を書きます。
<?php /** * @package WordPress * @subpackage Greenwich_Theme */ wp_enqueue_script('jquery'); ?> ※?は半角に直してくださいね!
これでWordPressが自動的にjQueryを入れてくれます。
2. 追加でjsを作成
jQuery.fn.extend({
inlineBgFix: function() {
if (jQuery.browser.msie && jQuery.browser.version < 8.0) {
jQuery(this)
.append(' ');
}
}
});
jQuery(function() {
jQuery("a.liexternal").inlineBgFix();
});
これをinlineBgFix.jsなどの名前で保存し、header.phpに読み込ませます。
簡単に説明すると、
- browser.version < 8.0 …IE8以下で~
- "a.liexternal" … aタグにLink Indication Pluginが自動で付けているclass。これが付いてたら~
- '<span class="liexternal_ie"> </span>' …このタグを~
- .append …aタグのお尻に付けなさいよ><
という事です。
3. CSSの調整
a.liexternal { padding-right: 16px; margin-right: 6px; background: url(images/link-icon_external.gif) no-repeat right center; }
これが元々Link Indication PluginのCSSに書かれています。テンプレートのstyle.cssに、IE用のCSSを追加します。
a.liexternal { /padding-right: 0; /margin-right: 0px; /background: none; } a.liexternal span.liexternal_ie { /padding-right: 16px; /margin-right: 6px; /background: url(images/link-icon_external.gif) no-repeat right center; }
全てIE6,7用ハックで書いています。
1つめ、IE6,7だったらa.liexternalのスタイルを無かった事に。※IE8については問題ありません。
2つめ、(IE6,7に付いているはずの)<span class="liexternal_ie">にスタイルを付けています。
以上で完了です。
環境によって色々あると思いますが、デザイナーだからといって諦めず、Google先生と仲良く粘ってみてください!