モバイルサイトの3キャリア共通CSSと最新コーディング事情

标签: モバイルサイトの開発 | 发表时间:2011-09-13 17:25 | 作者:ld_directors GOT4416
出处:http://blog.livedoor.jp/ld_directors/
こんにちは、「livedoor Blog」を担当している吉沢です。

スマホの登場で、すっかりケータイ (フィーチャーフォン/ケータイ/ガラケー) が日陰に追いやられた感がありますが、ケータイも毎年進化していて、モバイルサイトの開発が行いやすいケータイがユーザへ浸透してきています。

livedoor Blog では、スマートフォン分野に注力しながら、月間15億PV あるケータイ版のUI最適化にも引き続き取り組んでいます。今回は、livedoor Blog で採用した事例を元に、この先1~2年のケータイ開発・運用に役立てられる、3キャリア共通の CSS から最新のコーディング事情を紹介したいと思います。

アクセスシェア~ライブドアの場合


まずはどの世代のケータイをメインに開発して表示くずれを起こさないようにするか検討するため、アクセスシェアを把握します。

1年前と比べると、iモードブラウザ2.0が逆転して急激に増えています。また EZweb の KCP が減少し、KCP+以上が増加傾向にありました。Yahoo!ケータイは2年以上機種変更していない人が多いようでした。

gurafu_01gurafu_02
gurafu_03gurafu_04

ケータイCSSやコーディングの今昔話


ケータイの CSS は、機種依存が多く、キャリア別やブラウザバージョン、OS 別で使える style や指定方法が異なります。

外部 CSS 対応有無やフォントサイズ、画像の回り込み、罫線などの指定方法が異なっていたので、それらを補完する仕組みを自社で開発して採用していましたが、2009年夏モデルより登場したiモードブラウザ2.0と KCP+以上の普及により、補完する仕組みがなくても、3キャリアほぼ共通で CSS を書くことが実現できるようになってきました。

◆これまでのケータイCSS特徴

こちらの「【03】コーディングについて」をご覧ください

◆iモードブラウザ2.0の特徴

PCに近い表現をするCSSかつ、EZweb と Yahoo!ケータイで使えていた CSS が、iモードブラウザ2.0で使えるようになっています。
  • MIME タイプの XHTML 設定がなくても CSS を認識して、HTML タグの共存が可能
  • 外部 CSS、head へ style まとめ書きに対応
  • body の background-image の並び方、表示位置の指定が可能
  • box に margin、padding、border、background-image などの指定が可能 (これ一番重要!)
  • list-style-image や line-height の指定が可能
※詳しくは「作ろうiモードコンテンツ」i-CSS2 対応属性一覧をご覧ください。

◆まめ情報

EZweb の KCP の大半は来年の7月で終了するため、うっかり table を入れ子にしても内容が表示されないということがなくなり、フォントサイズがピクセル指定でないと反映されなかったのが、small/medium/large などのキーワード指定も可能になってきました。

3キャリア共通CSSの考え方と事例


livedoor Blog の場合、iモードブラウザ1.0のシェアを対象外にするにはまだ多い数なので、iモードブラウザ1.0とそれ以外 (iモードブラウザ2.0/EZweb/Yahoo!ケータイ:以後リッチブラウザと仮に呼びます) に、ポイントとなる部分だけ表示の切り分けを行います。

非対応の CSS は無視して表示されるクセを利用して、見た目のリッチさや視認性のアップなど見やすくなるためのコーディングをしています。

【1】ホワイトスペースを margin や padding、br、spacer.gif で使い分ける

jirei_01-2

以前は、br だと広すぎるホワイトスペースの代用として、表示スピードの問題からbgcolorと同じhrを使用していましたが、margin や padding に徐々にシフトしてきています。

この場合、すべてのケータイでホワイトスペースがほしいと思ったので、spacer.gif を使用しています。

jirei_01-1

一覧表示のリンクとリンクの間に padding を入れていて、iモードブラウザ1.0は無視して表示されます。

paddingが反映されなくても background-color を交互に指定しているので、iモードブラウザ1.0で読みにくいということは少ないと思いますが、アクセスシェアの多いリッチブラウザに向けて、さらに可読性があがるようにと padding を入れています。

◆すべてのケータイに表示するソース

<div style="margin-top: 3px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px;"><a href="http://blog.m.livedoor.jp/dqnplus/">痛いニュース(ノ∀`)</a></div>
<div class="padding-top: 3px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px;background-color:#efefef;"><a href="http://blog.m.livedoor.jp/news4vip2/">【2ch】ニュー速クオリティ</a></div>


【2】borderを使用した見出しの装飾

jirei_03-2

iモードブラウザ1.0のときだけ spacer.gif に背景色をつけて border の style として代用しています。

すべてのケータイに反映させたいときは、iモードブラウザ1.0のソースを記述してもかまいませんし、border がなくても見出しとして成り立つので、リッチブラウザのソースをiモードブラウザ1.0に記述しても、全体の雰囲気がくずれにくいと考えます。

◆リッチブラウザに表示するソース

<div style="padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 5px; background-color: #ffef73; color: #ed6f84; font-size: x-small; border-top-style: solid; border-top-color: #ffcc00; border-top-width: 3px; border-bottom-style: solid; border-bottom-color: #ffcc00; border-bottom-width: 1px;"><span style="color: #3cace0;">&gt;</span>&nbsp;マイページ</div>

◆iモードブラウザ1.0に表示するソース

<div style="background-color: #ffef73;">
<img src="/img/spacer.gif" width="1px" height="3px"><br>
</div>
<div style="padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 5px; background-color: #ffef73; color: #ed6f84; font-size: x-small; border-top-style: solid; border-top-color: #ffcc00; border-top-width: 3px; border-bottom-style: solid; border-bottom-color: #ffcc00; border-bottom-width: 1px;"><span style="color: #3cace0;">&gt;</span>&nbsp;マイページ</div>
<div style="background-color: #ffef73;">
<img src="/img/spacer.gif" width="1px" height="1px"><br>
</div>


【3】boxに背景画像を使用した装飾

jirei_03-3

角丸風の背景画像を使用しているので、box で背景画像を指定して、レイアウトは table で代用しています。
角丸風の背景画像でなければ、table に背景画像を指定してリッチブラウザのみ表示させることも可能です。この場合iモードブラウザ1.0は背景画像が表示されないので、table の bgcolor へ背景画像に近い色を指定する必要があります。

◆リッチブラウザに表示するソース

<div style="background-image:url(frame.gif); background-repeat:no-repeat; background-position:center; padding-top:15px; padding-right:14px; padding-bottom:15px; padding-left:14px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="240">
<tr>
<td width="72" valign="middle">
<img src="thumbnail.jpg" width="72" height="48"  />
</td>
<td valign="middle">
<span style="font-size:x-small;"><a href="url.html">最高に癒される<br>"もふもふ画像"</a></span><br />
</td>
</tr>
<tr>
<td colspan="2" align="right">
<span style="font-size:x-small; color:#999999;">2011-08-19</span>&nbsp;<br />
</td>
</tr>
</table>
</div>

◆iモードブラウザ1.0に表示するソース

<table align="center" border="0" cellpadding="0" cellspacing="3" width="95%" bgcolor="#ffffff">
<tr>
<td valign="middle">
<img style="float:left; vertical-align:top; margin-bottom:0px; margin-left:0px; margin-top:0px; margin-right:0px;" src="thumbnail.jpg" width="72" height="48" /><span style="font-size:x-small;"><a href="url.html">最高に癒される<br>"もふもふ画像"</a></span><br />
<div style="clear:left;"></div>
<span style="font-size:x-small; color:#999999;">2011-08-19</div>
</td>
</tr>
</table>


いかがでしたか?PCサイトをコーディングしている方にはありえない!ややこしい!と思われがちですが、IEや他のブラウザをCSSハックするのと大差ない感じにまでケータイも追いついてきました。

ケータイの margin、padding、border は spacer.gif や table に置き換えることができるので、ひとつのソースですべてのケータイを同じ見た目で表示することも可能ですし、spacer.gif や table の使いどころを工夫すれば、スマートなコーディングも可能になります。

ライブドアでは、スマートフォン・PC・ケータイとデバイスを問わず、全力でUI最適化に取り組めるディレクターを募集しています。

相关 [css] 推荐:

CSS图形

- GLORY - 酷壳 - CoolShell.cn
下面的示例展示了使用纯CSS制作的各种图形,你可以自由地修改文中的CSS代码. 经测试,IE9, Chrome, FF, Safari都可以正常显示. 五角星形 via Kit MacAllister. 心形 via Nicolas Gallagher. 无穷大 via Nicolas Gallagher.

用 Compass 寫 CSS

- Jay - Blog.XDite.net
最近在開發一個新產品,整體來說應該是接近寫完了,不過越接近完工,抓 IE 系列的 bug 就越是挫折. 朋友 @evenwu 就來洗我要不要換成 Compass,說這東西超神奇,超好用,還可以把 IE bug 殺光光. 其實之前就久仰 Compass 大名了,只是文件實在看起來太他媽的眼花繚亂,因為專案進度一直在跑,不太敢貿然換掉寫 CSS 的方式.

CSS 入门

- - 博客 - 伯乐在线
级联样式表非常简单,也就是 (X)HTML 网页之上的分层设计. 使样式表 “级联”,这样您就可以跨站点应用它 — 也就是说,将样式应用到网站,它就会自行应用到每个网页的每个元素. ●XHTML:可扩展 HTML. 对于网站,将数据与设计分离是一个重要的概念:数据使用 (X)HTML 发送到 浏览器,而设计使用 CSS 应用到该数据.

css 圆角

- - CSDN博客推荐文章
作者:kangquan2008 发表于2012-2-20 22:32:24 原文链接. 阅读:6 评论:0 查看评论.

CSS架构

- - 博客 - 伯乐在线
英文原文: CSS Architecture,编译: CSDN-张红月. Philip Walton 在AppFolio担任前端工程师,他在Santa Barbara on Rails的聚会上提出了CSS架构和一些最佳实践,并且在工作中一直沿用. 擅长CSS的Web开发人员不仅可以从视觉上复制实物原型,还可以用代码进行完美的呈现.

CSS总结

- - CSDN博客Web前端推荐文章
         接触过一段CSS,为简单理解,将CSS说成两步,一步是你做个“记号”,另一步是根据记号设置样式.      网页的内容和样式是分开的. “记号”便是能标识网页中某部分内容的关键字词(选择器),而根据记号设置样式呢,就是按图索骥根据记号设置标识的那部分内容的样式.     这段时间练习的每个CSS小例子,或是用id做记号,或是用name,或是用class,只有有了这些所谓的记号,CSS设定的样式才有用,.

CSS基础

- - CSDN博客Web前端推荐文章
1、引入CSS的四种方式. 行内样式、内嵌样式、链接样式、导入样式. 基本选择器:标签选择器,ID选择器,类选择器,通用选择器. 通用选择器:*{css代码}. 通用选择器作用:对整个网页中所有HTML标签进行样式定义. 常见用法:定义*{margin:0;padding:0}通用样式,并置于CSS文件最顶端,用于对HTML内所有的标签进行重置以保证页面能兼容多种浏览器.

CSS命名规范

- - BlogJava-首页技术区
网上整理的比较好的css命名规则,为css代码的规范化做参考,增加代码的可读性. 容器: container 页头:header 内容:content/container. 页面主体:main 页尾:footer 导航:nav . 侧栏:sidebar 栏目:column 左右中:leftright center .

css基础入门

- - CSDN博客推荐文章
css是Cascading Style Sheets的缩写,是一种用于为Html文档定义布局的样式表语言. Css是一种样式表语言,用于为html定义布局. Css弥补了Html对标记属性控制的不足. Css将网页内容与样式实现分离,使得网页设计更加明了、简洁. Css可以精确控制网页布局,如行间距、字间距、段落缩进和图片定位等.

CSS样式重置

- - CSDN博客Web前端推荐文章
为了让页面在各不同浏览器之间显示效果一致,CSS样式清除和重置是前端开发必需要做的事情,结合前车之鉴,整理了份CSS重置样式代码供参考. 作者:bbirdsky 发表于2013-5-19 21:24:58 原文链接. 阅读:141 评论:0 查看评论.