bonnie styles.

tape

06/14
Mon
[HTML/CSS] CSSだけで縦書き。



Sample View
※Windows/Webkit系(Safari/GoogleChrome等)/IEのみ対応(理由は後記述)

なんか和風のサイト作ってたら縦書きにキュンと来てしまったので、CSS3でやろうかと思ったらまだ実装未定っぽいしどうしようかと思っていたら、CSS3の-transformでどうにか出来るんじゃないのと思ったのでやってみました。

safari

Firefox – Firefoxは@~のフォントに対応していないみたいなのでこのような表示になります

HTML

<div id="container"> 
<div id="header"> 
<h1>蜘蛛の糸</h1> 
<span class="sub">芥川龍之介</span> 
</div> 
<div id="content"> 
<p>
ある日の事でございます。<ruby><rb>御釈迦様</rb><rp>....
</p>
</div>
</div>

CSS

html {
	background: url(bg.gif) fixed no-repeat bottom right;
	overflow-y:hidden;
	width: 800px;
	overflow-x:auto;
}
body {
	font-size: 13pt;
	color: #222;
	font-family: "MS P明朝";
	height: 100%;
	text-shadow: 1px 1px 1px #ccc
}
#container {
	font-family: "@MS P明朝";
	-webkit-transform: rotate(90deg);
	-moz-transform: rotate(90deg);
	position:absolute;
	right: 0;
	top: -40px;
	margin-right: 22%;
	height: 100%;
}
#header h1 {
	margin: 0;
	font-size: 50pt;
	letter-spacing: -15px;
	line-height: 1.7em;
	font-weight: normal;
}
#header .sub {
	margin-left: 30px;
}
#content {
	height:auto;
	width: 400px;
	padding: 0 20px;
	line-height: 1.3em;
}
 .pre {
	-webkit-transform: rotate(-90deg);
	-moz-transform: rotate(-90deg);
	font-family: "MS P明朝";
	position:absolute;
	right: 0;
	bottom: 0px;
	margin-right: -30px;
}
  • 全体を囲っている#containerを90度傾けます。-webkit-transform: rotate(90deg);/-moz-transform: rotate(90deg);
  • 傾けた部分のフォントを@~という風にします※Windowsのみ有り
  • そのあとは微調整をして・・・・(←ここら辺は自分でも良く構造が理解できていません←これは酷い
  • #container内で、もじを元の0度にしたかったら、transformを-90し、普通のフォントを指定するともとに戻ります

CSS*IE

<!--[if IE]>
<style type="text/css">
body {
    overflow-y:hidden;
	font-size: 14pt;
}
#container {
	width: 80%;
	margin: 5% auto;
	top: 0;
	right: 10%;
	writing-mode:tb-rl;
}
#header .sub {
	margin-top: 50px;
}
#container #content {
	width: 100%;
	height: 500px;
	line-height: 1.5em;
}
</style>
<![endif]--> 
  • IE様に<!–[if IE]><![endif]–> を指定します
  • IEではもともと縦書きに対応しているので、#containerにwriting-mode:tb-rl;をしています。
  • あとは調整s(略

今回は、とっても複雑なソースで自分でも観るのが嫌になります。
または、解像度が小さかったり大きかったりすると非常にヨロシク無い感じになるので、実用には耐えないと思えます。
縦書きを実現するJavaScript「nehan」(jQuery未使用)を使った方がソース的にも表示的にもキレイにできます。

カテゴリー: HTML/CSS | タグ:, , |

これまでのコメント

  1. 瀧正治 :

    老化予防にホームページを作成しています

    段組の縦書きの場合、IE7の場合標準タイプに移行出来ますが IE8の場合文字が重なり読むことは出来ます IE9では文字間隔が異なってしまいます。

    意見を聞きたくて質問します。

    IE7とIE8の表示 http://ryuso.info/me/se1/tp_p1.htm#t_tr1

    IE9参照した内容で 上は、移行モード 下は、標準モードで表示内容 http://ryuso.info/me/pot1/ta80.gif

    実際に縦書きが必要か http://ryuso.info/h/zouei_6f_gy.htm
               http://ryuso.info/h/h_eng_6f_yt.htm

    縦書きに対応していないブラザーは、javascriptで対応しています。

この記事にコメントする

contentsfooter