2008-09-30

CSS Browser Selector を使って Google Chrome を個別対応する。textarea のフォントサイズの相対値がおかしな件。

Google Chrome だけ textarea の font-size がひとまわり小さくなってしまう
Google Chrome を使って Golazo MA4 の動作確認をして気が付いたのですが、Google Chrome だけ、次のように textarea の font-size がひとまわり小さく表示されてしまうのです。em 単位で指定してるのが良くないのかなぁ。ネットで調べてみたのですが、それらしき話題は見つかりませんでした。時間があるときに原因を調べてみます。
引き続き、調べてみました。Google Chrome の textarea は、気になるところが2点ほどあります。

1つ目は、textarea のフォントサイズが、他のブラウザに比べて、ひとまわり小さいことです。他のブラウザに比べて 80% くらいの大きさでしょうか。Styling even more form controls を使うと、様々なフォームのスタイルを手軽に確認できます。

2つ目は、次のように textarea のフォントサイズに相対値を指定すると、元々の textarea のフォントサイズに対して .8em 分、小さく表示されるということです。CSS の仕様は、あまり詳しく把握できていないのですが、.8em と指定したときは、1em に対する .8em のフォントサイズになると理解しているのですが、どうもそうじゃないようです。Safari 3.1 だと期待どおりなのですが...。

#content form input,
#content form textarea {
font-size: .8em;
}

次のとおり、フォントサイズに絶対値を指定すると、Google Chrome も含め、すべてのブラウザで、期待どおりのフォントサイズで表示できます。ただし、フォントサイズを固定すると、文字サイズの拡大と縮小で、ブラウザ間で差異が出てしまう(特にIE)ため、対処としては不完全といえます。

#content form input,
#content form textarea {
font-size: 13px;
}

Google Chrome だけ個別に対応する手法(いわゆる CSS Hack)がないか探してみましたが、Google Chrome は Safari 3 の CSS Hack を適用できるが、Google Chrome だけ適用できる CSS Hack はなさそうでした。Google Chrome を調整すると Safari 3 に影響が出ちゃうということですね。う~む。

ということで CSS だけでの対応はあきらめ、CSS Browser Selector という JavaScript を使って、User-Agent ごとに CSS を切り替える仕組みを使って対応することにしました。

CSS Browser Selector の導入はとても簡単です。次のように JavaScript をロードして、

<script type="text/javascript" src="css_browser_selector.js"></script>

次のように、ブラウザごとに CSS を記述するだけです。Google Chrome だけ textarea のフォントサイズを 1em にしています。これで、すべてのブラウザで、ちょうど 80% の大きさになります。

#content form input,
#content form textarea {
font-size: .8em;
}

.chrome #content form textarea {
font-size: 1em;
}

CSS Browser Selector が何をするかというと、navigator.userAgent を見分けて、HTML 要素にブラウザの種類を表すクラス名を動的に追加するというだけです。ブラウザのエンジン、オペレーティングシステムの区別もできます。なかなかシンプルなアイディアに感心します。

<html class="gecko ff2 win js">

JavaScript が無効だと使えないという欠点がありますが、JavaScript の有無による CSS の区別も備えるため、JavaScript が無効なときの妥協的な CSS を用意するといった対応もできます。

1 件のコメント:

Dinh Ha さんのコメント...

đồng tâm
game mu
cho thuê nhà trọ
cho thuê phòng trọ
nhac san cuc manh
số điện thoại tư vấn pháp luật miễn phí
văn phòng luật
tổng đài tư vấn pháp luật
dịch vụ thành lập công ty trọn gói
lý thuyết trò chơi trong kinh tế học
đức phật và nàng audio
hồ sơ mật dinh độc lập audio
đừng hoang tưởng về biển lớn ebook
chiến thắng trò chơi cuộc sống ebook
bước nhảy lượng tử
ngồi khóc trên cây audio
truy tìm ký ức audio
mặt dày tâm đen audio
thế giới như tôi thấy ebook

Mẹ kiếp, quy củ của thời cổ đại này sao mà lắm thế, Lưu Phong an ủi Ân Tố Tố: “Hay là chúng ta kết hôn sớm một chút.”

Hôn sự của chúng ta là do hoàng gia ân chuẩn, chiếu theo pháp chế của hoàng triều thì công tác chuẩn bị cũng phải mất một năm.” Ân Tố Tố giải thích.

Một năm? Lưu Phong buồn bực vô cùng, chuyện liên quan đến hoàng gia thật phiền toái. Quên đi, một năm thì một nắm, dù sao bản thân hắn cũng còn trẻ. Chỉ cần mỗi ngày cùng Ân Tố Tố gặp nhau, phượng đảo loan điên là được

……………………….

Ngày hôm nay Lưu Phong vừa ăn điểm tâm xong thì Hồ An chạy đến nói có vài người tới quấy nhiễu.


Lưu Phong bất giác cảm thấy bực bội, mấy ngày hôm trước cự tuyệt Cẩm y vệ Bạch Thọ, Thiên Thượng Nhân Gian lập tức xảy ra rất nhiều chuyện, có điều kông biết đối phương là ai.

“Hồ bang chủ, người có biết đối phương là ai hay không?” Dọc đường đi, Lưu Phong vừa đi vừa hỏi.

Hồ An vội nói:

- Công tử, đó chính là Trần Đại Niên, bang chủ Thanh Trúc bang. Thanh Trúc bang so với Kim Long bang chúng ta thì thực lực yếu hơn rất nhiều, nhưng không biết tại sao gần đây xuất hiện rất nhiều cao thủ, huynh đệ chúng ta tựa hồ đối phó không được