個性を出すためにブログのカスタマイズをする。
ブログを始める誰もがそう思う事だと思います。
私もブログを始めた頃はブログカスタマイズのサイトを渡り歩いたものです。
なにしろ、特にSeesaaブログはテンプレートが(´・ω・`)ションボリなので、
カスタマイズしないと見栄えが整わないんですよね・・・。
しかしカスタマイズをしていく上でどうしても避けられない問題が発生します。
それは、
使っているブラウザが違うと表示されるデザインが崩れてしまう可能性がある。
という事です。
代表的な崩れ方として、右サイドバーが落ちるという現象があります。(後述します)
この原因の解消を後回しにしてしまうと後々修正がものすごく大変になりますし、致命的なミスだと取り返しがつかなくなってしまうなんていう事もありますので、カスタマイズを始める前に注意しておきましょう。
猛烈にシェアを伸ばすMozilla系ブラウザ Firefox
現在世の中で最も使われているブラウザはご存知Microsoft Internet Explorer(以下IEと呼びます)です。
そのシェアは現在のところおよそ9割近く、10人に9人がIEを使っている計算です。
しかし、
現在シェアを猛烈な勢いで伸ばしてきているブラウザにはMozilla系のFirefoxがあり、
『数年後には4人に1人がMozilla系のブラウザを使っているのであろう』
なんていう事も言われています。
こうなってくると
IEを使っている人だけが正常に見ることが出来たら満足だ!
なんて言っていられませんね。
Firefoxと同様の表示形式を持つブラウザとしてはOperaやSafariといったブラウザもありますが、この記事はFirefoxのみをご紹介します。
ここでひとつ質問です。
IEとFirefoxで表示させた場合、どんな不整合が発生するかご存知でしょうか?
例えば、以下の様な不整合が発生します。
- サイドバーが落ちる(←よくある問題)
- 画像がセンタリングされない
- 文字が小さすぎて読めない
- 背景色が表示されない
特にデザインが崩れてしまう(サイドバーが落ちてしまう)不具合の大半の原因は、
- IEは後方互換モード(以下互換モードと略)と呼ばれる表示形式を使っている。
- Firefoxは標準準拠モード(以下準拠モードと略)と呼ばれる表示形式を使っている。
この違いによって引き起こされているのです。
この2つのモードの違いを一言で表現すると、
ブラウザの仕様の解釈の違いに起因する表示上の相違
といえますが、
そもそもIEの互換モードの方が独自路線を突き進んだために生まれた負の遺産というべきものなのです。
標準準拠モードの方がWebの世界では標準と扱われています。
ブログのデザインが崩れてしまう事は、特にアフィリエイトなどショップ系のブログを作られている方にとっては、かなり重大な問題です。
IEの致命的な問題〜paddingとwidthを一緒に設定するな!
このモードの違いによる表示の不整合は、WidthやPaddingを設定すると顕著に出現します。
具体例として、以下のようにスタイルシートを設定したとしましょう。
右図の様なレイアウトにしようとして作成したスタイルとします。

- #container{
- widht:750px;
} - #content{
- float:left;
width:550px;
padding-left:10px;
} - #links{
- float:right;
width:200;
}
こうやって設定すると、ブラウザでは以下のように表示されます。
- IEでの表示・・・・・思っていた図の通りに表示される
- Firefoxで表示・・・右サイドバーが落ちる
この右サイドバーが落ちてしまう原因は、#contentの幅の値が大きすぎるからなのですが、
なぜ同じ設定を使っているにも関わらず、違う表示になってしまうのでしょうか?
それは、IEとFirefoxでは以下のように異なる解釈をしているからなのです。
- IE(互換モード)の解釈
-
#contentの幅 = 文字入力ができる幅540px + 左padding(10px)
(#contenの幅は550px)
-
- Firefox(準拠モード)の解釈
-
#contentの幅 = 文字入力ができる幅550px + 左padding(10px)
(#contentの幅は560px)
-
よって、このスタイルをFirefoxで表示させた場合は、
#contentと#linksの幅の合計 = 560px + 200px =760px
という計算になるので、
合計が#containerの値(750px)を超えてしまい、右サイドバーが落ちてしまうのです。
また、border(枠の線)を設定したときもこれと同じ現象が発生します。
つまり、
IEのwidthというのは『その要素全体の横幅』という解釈で、
文字入力で使える範囲は設定したwidthからpaddingとborderの値を引いた値であり、
それに比べてFirefoxのwidthというのは『文字入力範囲の横幅』という解釈で、
その要素全体の横幅はpaddingとborderを合計した値になっている
という事です。
この解釈の違いがありますので、widthとpaddingを一緒に設定するとデザインが崩れてしまうのです。
以上の内容をまとめると以下の様な計算式になります。
- IE(互換モード)での表示
-
表示される幅 = width
- widthはpaddingとborderを含む
- 文字入力範囲が狭まっている事に注意してください。
上の例の場合だと文字入力範囲の横幅は
width(550px) − 左padding(10px) = 540px になります。
-
- Firefox(準拠モード)の表示
-
表示される幅 = width + padding + border
-
IEの致命的な問題〜floatとmarginを一緒に設定するな!
IEには上記の『padding+width』の現象よりも、さらに奇怪な現象(というよりバグ?)があります。
それは
回り込み指定(float)と一緒にmarginを設定すると、marginの値が倍になる。
という現象です。
しかも倍になるのは回り込み指定した方向のmargin分だけで他の方向のmarginは倍にならないんです・・・。
例えば、
『float:left;』と設定すると左方向のmarginのみが倍になって
『float:right』と設定すると右方向のmarginのみが倍になるんです。
まったくもって不可解な現象です。
具体的な例でいうと
- #content{
- float:left;
width:500px;
margin-left:10px;
margin-right:10px;
}
とスタイルを設定すると、このスタイルの横幅は、
横幅 = width(500) + 左margin(10)×2 + 右margin(10)
= 530px
と、なってしまうんです。
ここまでくるともう理解不能じゃぁぁぁ!(ノ ゚Д゚)ノ ==== ┻--┻
という感じで投げ出さないで下さい・・・。
IEを使っている限りはこの不具合とは離れられない運命ですので、仲良く付き合っていくしか方法はありません。
『あきらめる』というのも解決方法の一つですので。
徹底しましょう!レイアウトに関わるスタイルを設定する原則
以下はまとめになります。
レイアウトを決めるスタイルを作成するときは以下の2点を厳守しましょう。
-
widthとpadding、borderは一緒に設定しない!
-
floatと左右marginは一緒に設定しない!
つまり、レイアウトを決定するIDやクラスには『widthとfloatの設定しかしない』と思っていた方が無難です。
paddingやmarginは、中に入れる要素のスタイルで代用しましょう。
borderは代用方法が無いに等しいので、使用する際は微妙にレイアウトがずれることを覚悟して設定しましょう。
Firefoxでレイアウトを確認してみる
今回の記事はIEとFirefoxでの表示のされ方の違いについてご紹介してきましたが、この記事を読まれた方は、
自分のブログがFirefoxでどのように表示されるのかな?
と気になってきたのではないでしょうか。
ちなみに、私は2ヶ月ほど前に初めてFirefoxで自分のブログを確認してみたのですが、
しっかりと右サイドバーが落ちていました。
その他にも、自分が思っていたよりも文字が小さすぎたり、センタリングしたつもりの画像が左寄りになっていたりしてましたので、1ヶ月くらい修正に追われる日々をすごす事が決定・・・。
Firefoxのダウンロードは右のボタンのリンク先からダウンロードが可能になっています。
嬉しいことに、FirefoxはインストールしてもWindowsの再起動は必要ないですし、IEのお気に入りも自動でコピーして取り込んでくれますのでものすごく親切です。
そして最近FirefoxでもGoogleツールバーをインストールできるようになったので、PagerankもFirefox上で確認が可能になりますます利便性が高まってきています。
さらに、
現在ベータ版が公開されているIEの新バージョン(ver7)では、Firefoxなどと同じ準拠モードが採用されるという記事もあります。
この様に、世の中のブラウザがどんどん準拠モードになっていく傾向にあります。
時代を先取りする感覚で自分のブログが準拠モードでどのように表示されるのかを確認してみても面白いのではないでしょうか。
| 前の記事 | カテゴリTOP | 更新待ちです |
| この記事がお役に立てましたら、クリックを・・・。 | ||
昨年末はいろいろご指導頂きましてありがとうございました。
12月31日の投稿記事にイタチさんの紹介をさせて頂きました。
TBをしたのですが巧く行きませんでした。
2〜3回前までのブログを拝見したのですが
ご造詣の深さにに驚きました。
今後とも宜しくご教示下さい。
新年明けましておめでとうございます。本年もどうぞよろしくお願い致します。
※本コメントは前回のコメントの続きとなっております。
http://hikoitachi.seesaa.net/article/10157960.html#comment
さて、本質問を受けまして、
なぜ上手くいかないのかが不思議でgooブログをテスト用に登録してみて検証してみました。
そうしたところ、明らかな不具合っぽい部分を発見しました。
それは
『ホームページビルダーの編集画面で第1行目を改行すると、次の行から先頭に数十個の半角スペースが入ってしまっている』
ということです。
たとえば、以下の文章を書いてgooブログに投稿したとします。
*************************
(1行目)謹賀新年
(2行目)本年もどうぞよろしくお願い申し上げます。
(3行目)ボブサップも曙もガンガレ!
(4行目)イタチ
*************************
そうすると、なぜかgooブログには下のように投稿されます。
(1行目)謹賀新年
(2行目) (半角スペース数十個) 本年もどうぞよろしくお願い申し上げます。
(3行目) (半角スペース数十個) ボブサップも曙もガンガレ!
(4行目) (半角スペース数十個) イタチ
これがTABLEになると、さらに悪化します。
例えばビルダーでTABLEを作成するときは下のようになるのですが、
*************************
(1行目)<table>
(2行目) <tbody>
(3行目) <tr>
(4行目) <td>半角スペースはバグ?</td>
(5行目) </tr>
(6行目) </tbody>
(7行目)</table>
*************************
これを、gooブログに投稿すると以下のようになっています。
(1行目)<table>
(2行目) (半角スペース数十個) <tbody>
(3行目) (半角スペース数十個) <tr>
(4行目) (半角スペース数十個) <td>半角スペースはバグ?</td>
(5行目) (半角スペース数十個) </tr>
(6行目) (半角スペース数十個) </tbody>
(7行目) (半角スペース数十個) </table>
こうなってくると、
TABLE内の文章『半角スペースはバグ?』にたどり着くまでに、
2行目と3行目と4行目の文章の前に発生している半角スペース全てと、
HTMLタグを組む際のタブ揃え分の半角スペースが発生します。
ちなみに、宿六様のブログデザインの場合、
第2行目から冒頭に36個ずつの半角スペースが発生しています。
※この半角スペースの数は、
デザインによって数量が変わるみたいです。
さらに、行間を整える為に改行を行った際も、
空欄であるはずの行の先頭に、
同じく数十個の半角スペースが発生します。
TBを送る機能はこの半角スペースを1文字とカウントするので、
これが原因でTBが上手く動作していないのではないかと思われます。
この様に、回避不能なバグが生じています。
ちなみに宿六様は「TEXTエディター」と「HTMLエディター」のどちらで編集をされていますか?
この半角スペースは
「TEXTエディター」だとすぐに判別できますが
「HTMLエディター」だとなかなか判別できません。
(なぜか数十個の半角スペースがあるのに、HTMLエディターだと1個の半角スペースとして表示されます。)
よってこの問題は回避不能ですので、投稿するときは
『@ブログ連携機能で投稿する
A冒頭のTEXTエディターで行の先頭の半角スペースを全て削除する
B半角スペースを全て削除してからトラックバックを送る』。
という方法をとるしかないようです。
問題解決のご参考にしていただければ幸いです。
livedoorのブログに連携機能を使って投稿してみましたが、
この謎の半角スペース挿入は生じませんでした。
(HTMLタブ揃え用の半角スペースはありますが。)
これはgooブログのみの仕様(というか不具合?)なのかもしれませんね。
【TEXTエディター】を使用しました。
それで、31日の記事のTBは、
前回どおりの手法で半角のスペースを除去し、自信を持って投稿したのでした。
それでも、前回の様に巧く行かずに、うんとも、すんとも表示されません。
そこで、ふと気になって【HTMLエディター】に、
編集モードを変えてTBをしましたらご覧のとおりです。
goo で言う所の【HTMLエディター】は
ホームページ・ビルダーの編集画面と似ています。
【TEXTエディター】は画像の挿入やリンク、フォントなどの指定はタグで書きます。
なので勘違いをしそうですが・・・。
http://blog.goo.ne.jp/info/blog_use3.html
をご覧下さい。
元日早々お手を煩わせまして、申し訳ございません。
いろいろと検証をしていますが、疑問に思った点があります。
TEXTエディターで編集していた記事をHTMLエディターに切り替えると、
『改行』が削除されていまいませんか?
そのまま投稿すると改行が削除されてしまっています。
これが標準の仕様なのでしょうか?
(この記事を現在作成中です)
TEXTエディターで編集していた記事をHTMLエディターに切り替えると
『タグが削除されます。実行しますか?』 「はい」、「いいえ」
とボックスが開かれます。
と聞いてきますので本日は実行しませんでした。
(イタチ様にTBを頂いた日に、どちらか忘れましたが記事が修復不能で消えてしまった事がありましたので)
今度実験してご報告します。
こちらに来ました。
1:HPビルダーで投稿するときに、
『公開する』をチェックして投稿していますか?
<<はい、今までの投稿記事はすべて『公開する』をチェックして投稿しています。
2:記事の中身には改行タグ<br>をよく使っていますか?
(HPビルダーだとEnterキーを押して出てくる青い矢印マーク)
<<はい、文脈と行間隔を考えると、殆んど改行を打ちます。
勿論、青いマークは表示されています。
3:HPビルダーで投稿した記事をトラックバックしたとき、
トラックバックを送ったあとで
ブログの記事は通常通り表示されていますか?
【これをお話したかったのですが・・・】
@TEXTエディターでご指摘の半角スペースを除去して、プレビューで確認の上、
TBしたのですが、巧く行きませんでした。
(イタチさんのブログには枠の表示すらなかった)
投稿のボタンを押しますと、編集画面は閉じられます。
A再度開きますと修正した筈の原稿は何と、元の半角スペースの入った
問題の原稿になっています。
B次に@を実行した後、右上のHTMLエディターのボタンを押して
改行の抜けた原稿でTBしたら、巧く出来たと言う訳です。
4:ブログ管理画面で投稿した記事を編集したいとき
いきなりHTML編集モードで編集する事は可能ですか?
可能だと思います。前述 3−@の状態でブログ画面に変化はありませんでした。
ご回答ありがとうございます!
回答4の『いきなりHTML編集モード』ですが、
どこから入れるのでしょう・・・?
いろいろ調べてみましたが
管理画面の『記事一覧』から投稿した記事を編集しようとすると
必ずTEXTエディターを経由しなければHTMLエディターに移動できないのですが・・・。
ひょっとしてこれは『アドバンス』と『無料』の違いですか?
さて、質問を追加させてください。
5:TEXTエディターで編集している際に、
プレビューでは改行が行われていますか?
※プレビューで改行が行われていたら、
実際に『投稿』しても表示は崩れない事は確認できました。
6:『TBを送っても枠すら表示されなかった』とありますが
質問5の通り、TBは送れることは検証できたので、
ひょっとするとTBアドレスの入力ミスという可能性はありませんでしょうか?
(TBアドレスではなくURLをコピペしてしまったとか・・・)
下記の通りお答えいたします。
回答4の『いきなりHTML編集モード』ですが、
どこから入れるのでしょう・・・?
これは宿六のミスです。
ホームページ・ビルダー10で投稿すれば
必ず「TEXTエディター」に表示されます。
5:TEXTエディターで編集している際に、
プレビューでは改行が行われていますか?
はい、必ず改行されています。
しかし、プレビュー画面とブログの表示画面とは
イコールではありません。ビルダーでも同じ事が言えますが・・・
ひょっとするとTBアドレスの入力ミスという可能性はありませんでしょうか?
それはありません、例えばこの記事であれば
この記事へのTrackBack URL ↓
http://blog.seesaa.jp/tb/11220965
を初めにコピーして
3回ペーストいたしました。
お手数掛けますね。
頑張りますので何なりとお申し付け下さい。
本日の記事をTBいたしました。
一番目は
修正しない「TEXTエディター」です。
二番目は
修正しない「TEXTエディター」を
「HTMLエディター」に切り替えて
そのままTBしました。
と言うことは、「HTMLエディター」で送れば
取り敢えずはTBは出来ると解釈すれば良いのでしょうか。
結局、ブログ連携機能で投稿した記事をブログ管理機能で編集すると
絶対に文章の構成が崩れる(改行タグ<br>が削除される)という結論となりました。
大きく分けると次の2パターンです。
***********************
●パターン1
ビルダーで投稿>管理画面『TEXTエディター』>TB入力>投稿
【現象】
TB送り先で文字数が減少して表示される。
(半角スペースが挿入され、文字数としてカウントされるから。)
さらに保存後の記事が崩れる。
●パターン2
ビルダーで投稿>管理画面『TEXTエディター』
>『HTMLエディター』に切り替え>TB入力>投稿
【現象】
TB送り先では文字数はおよそ標準どおりに表示される。
(半角スペースがほとんど削除されているから。)
しかし<br>タグは削除されてしまうので保存後の記事が崩れている。
***********************
この様な現象になり、
これはもう避ける事が出来ないようです。
よって、
TBを通常通りに送信したい場合は
パターン2の手法でTBを送った後に、ホームページビルダーで
『ブログ』>『記事を開く』>『投稿済み記事』
の機能で、記事を再投稿する必要があります。
このような力技で無理やり解決するしかないですね。
なお、この手法はIneternetExplorerのみでしか確認していません。
別ブラウザのFirefoxではこの手法は使えませんでしたので、他のブラウザでもこの手法を使えない可能性があります。
また、話は変わりますが
FirefoxではHTMLエディターの編集機能が一部使えなくなっていました。
管理画面の話だけの話ですのであまり関係ないかもしれませんが
気になられたらダウンロードして検証してみてください。
(ひょっとして、規約かどこかに『gooブログはIE限定』という記載があったりしますか?)
上記の通り正に相違ございません。
経験した宿六は非常に解り易い文章だと思います。
壊れてしまったブログの画面の修復方法も
「まー良いか」と思いつつ再投稿したら、
修復されましたので、ご報告しなければと思っていた所でした。
宜しければ、この最後のコメントを
イタチ様のお名前でブログに投稿と
ホームページ ブログ 「ホランナビ日記」 に
お借りできませんでしょうか?お願いいたします。
再現性があるようなので、やはりこれが仕様なんでしょうね。
本コメントの内容をお使いになられたいとの事。
どうぞどうぞお使い下さい(*゜▽゜)ノ
他コメントも組み合わせて編集していただいても結構です。
申し入れの件早速お聞き入れ頂きありがとうございました。
ブログの花や蝶が舞い飛ぶ、非生産的な趣味の
世界に癖々して、ストレスとなりました。
今度、ブログを再開する時はストレスとならない
自分の世界を開きたいとおもっていたのです。
好い方に巡り合えて嬉しいです。
そう言っていただけてとても嬉しいです( ^▽^)
私の方でもいろいろと分からない部分も出てくると思いますので
その際はぜひお力をお貸し下さい。
これからもどうぞよろしくお願い致します。