layer13.com トップページで使った CSS のメモ

とりあえず組んだ、って感じだから、これから直していく予定ですが、
layer13.com トップページで使った CSS についての覚え書き。忘れんうちにメモ。

clearfix

参考に、というか、そのまま使わせていただきました。

.cf{ /zoom : 1; }
.cf:after{ content : ''; display : block; clear : both; height:0; }

border-radius
角丸


/* 全部 5px */
.hoge{
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
/* 上だけ 5px */
/* 左上 右上 右下 左下 */
.fuge{
border-radius: 5px 5px 0px 0px;
-moz-border-radius: 5px 5px 0px 0px;
-webkit-border-radius: 5px 5px 0px 0px;
}

div で border-radius を指定しても、その中の要素(h1など)は角丸にならないので、そこにも border-radius をつけないといかん。

box-shadow
箱に影


/* fff の背景を 15px ぼかし。 こりゃ影っちうよりグローだけど。*/
/* hオフセット vオフセット ぼかし 色 */
.hoge{
box-shadow: 0px 0px 15px #fff;
-moz-box-shadow: 0px 0px 15px #fff;
-webkit-box-shadow: 0px 0px 15px #fff;
}

text-shadow
テキストシャドウ


/* 色 hオフセット vオフセット ぼかし */
.hoge{
text-shadow: #333 -1px -1px 0px;
}

gradient
グラデーション


.hoge{
background-color: #484232; /* 背景色 */
/* 透明から白。 */
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0, rgba(255,255,255,0.7)),
color-stop(1, rgba(255,255,255, 0))
);
background-image:-moz-linear-gradient(
center bottom,
rgba(255,255,255,0.7) 0%,
rgba(255,255,255,0) 100%
);
}

gradient は background-image に指定する。 -moz と -webkit で指定方法がぜんぜん違うのでめんどい。ハイライトっぽいのを付けるだけであれば、背景色は backgroud-color、ハイライトを background-image にしておけば、色を変更するのも楽。

ページの背景を薄く radial-gradient をかけようと思ったのだけど、 firefox 3.6.8 だと重い、Chrome 6.0.472.51 beta だとレンダリングが思ったように出ない(共に Ubuntu上) なので、却下。

そのた

  • position: static の位置指定はhtmlの左上からのみ?
  • layer13.com のテキスト部分だけ、Web Fonts 使ってます。

css を書くの、なんとか楽にならんものかなぁ。

NZサイト を作ったときの css コーディングの覚え書きというか、メモというか。

ちと、今回は、セレクタの階層をなるべく浅くやってみようというポリシーで作ってます。なので、ほとんどクラス名のみ。
このやり方で書くのは正直めんどくさい。 自分のサイトだからやってみたけど、仕事ではしないと思います。

ul.hoge > li とかやったほうが絶対楽なのはわかってんですけど、パフォーマンスに影響する とか、yahoo どっかで見た気がして、やってみようかと。

(とか思ったら、そんなに効果は無いっぽい? CSSセレクタのパフォーマンスへの影響)

クラス名のみでやってると、当然ながら html のタグが変わっても多少粘れるっていうのはあるかも。
ま、div と span とっかえて、display 指定が無かった場合なんかは壊れますが。

あと、class 名のつけかた。相変わらずいきあたりばったりでつけているので、一貫性が無い。これはなんとかしたい。
やっぱり最後に整理しないといかん。


今回は less を使いました。コーディング時はファイルを分割して書き、プレビューするときに 1 つの css にまとめて表示させるようにしています。手動じゃやってられんので当然自動で。

今のところ、ちと気になる点が2つほどあって、
・less ファイル(cssも?)のプロパティの値を改行するとパースエラーになっちゃって、グラデーションの指定をするときに見辛くて大変困る。
・複数セレクタを指定しているとき、セレクタに疑似クラスが入っていると、レンダリング時に分割されてしまう。同じ指定がいくつもあるので無駄。

でも、 変数が使えたり計算できたりするのはかなり便利。-moz-hogehoge と -webkit-hogehoge をまとめたりするときに重宝してます。


デザインが落ち着いて、整理し始めたら、プロパティ別整理法っぽいこともやっています。
font-size とかフォント色・背景色とか。

/* font-size 12px がデフォ */
/* font-size: 9px */
.photo_info_title,
.exif_key
{
  font-size: 9px;
}

/* font-size 10px */
.header_navi,
.no_map,
.index_top_navi_item_ja,
.nogps,
.photo_section_title
{
  font-size: 10px;
}

/* font-size 18px */
.page_title,
.photo_title
{
  font-size: 18px;
}

これで、新しいクラスのフォントサイズを 10px にしたいなーって時には、10px んとこにクラス名を追加すると。制作も後のほうになってくると、他のクラスとの整合性なんかが気になってくるので、個人的にはこっちが好きです。が、プロパティ別なものと、クラス別なもの両方あったりするので、自分しか理解不能ってのはあるかも。そんなときの Firebug でw。

あと、同じ見た目にしたいけど、クラス名は同じにならんよなぁ〜っていう時にもこの方法でやってます。
class="hogehoge shadow1"
class=”shadow1″ なんて class=”red” と同じじゃん って感じなんで、やりたくない。けど、同じ影のプロパティつけたいし、後で変更するかもしれないし・・・ ってとき。

/* ボタン用シャドウ */
.footer_pagetop_link:hover,
.index_top_navi_item_link:hover,
.photo_prev_footer_link:hover,
.photo_next_footer_link:hover
{
  .box-shadow(0, 1px, 5px, rgba(0,0,0,0.3)); // .box-shadow を別のところで定義してます。
}

とか。

コメントを書いとかないと、何やってんだかわかんなくなるので、この部分に関してはなるべくコメント書くようにしてます。

ちょっとめんどくさいのは、セレクタの一番下のものにコンマをつけるとエラーになる (ま、そうですな) ので、一番したのものを消すときに行削除だけじゃすまないこと。 たまに忘れるんです。上の行のコンマ消すの。


んー、もーちっと楽になんないかのう・・・。
やっぱ経験値稼がんとだめやなぁ。

IEで11pxの日本語を表示したいんです。

使いたいのに使えない~。

12px 基準で考えてるから、11pxが欲しい。10pxだとちっこすぎるのね~。しかも、日本語フォントはそのままに、欧文だけ11pxになるので、欧文交じりだとガタガタorz。

画面上だと1px差ってけっこうあるからなぁ。

それと、Vista & Meiryo になったときにどうなるかわからんから、下手に XP / 2k 用にいじりたくないんだよなぁ。かといって、アクセスの多いブラウザは、しばらく IE6(7) on XP だろうし・・・。ふが~

もうこのさい全部flashで・・・(嘘

フォントサイズ指定って難しい・・・。

やっぱピクセル指定が一番楽なんかな~と思ったりする(ブラウザでPCに表示する場合は)。

まぁ、何をしていたかというと、最初 em 指定で0.87em とか、1.2em とか、うらうらやってたわけです。したら、IE6 と FF2 で大きさ違うんでやんの。それどころか、IE6で、和文と欧文のサイズが違うんでやんの・・・欧文はちっこくなってくけど、和文はそのまま・・・とか。

これじゃいかんってんで、%指定にしてみようと、いじっていると、IE6での和文と欧文のサイズ変化は同じなんだけど、ブラウザ間でサイズの変わるタイミングが違う。たとえばIE6は、171%で大きくなるけど、FFは172%で大きくなる。あと、100%未満で日本語の文字の高さが1pxずつ違う・・・。ふが~。

割合で指定してるときは、継承していった先も困る。bodyが 12px だとして、font-size 80% の div の中の font-size 92% のh3 テキストのサイズは何ピクセル? って。スクリーンの解像度がすんごく高くて、たとえばベースが12pxで、その100%~80%まで滑らかに表示してくれるならいいんだけど、実際は、(12pt = 12px だとして・・・えらい強引だ・・・)12px, 11px, 10px,9px、の階調でしか表示できないうえに、ピクセル未満の値の扱いがブラウザや文字の種類によって違うとなると、どうしていいかわからん。アンチエイリアスが欧文でかかって和文でかからんとか。気にしだすときりがない。

そうすっと、ピクセルでいいんじゃ~んと。まぁ、ピクセルってったって、12px は画面上で何mmって話にはなるんだけど。

どこまで想定してこちらで対応するかを決めるのがすごく難しいです。とりあえず、今回は%でやろう・・・IE6め~!(笑。

サイズチェックに使ってみたJavaScriptコード


str = 'The quick brown fox jumps over the lazy dog. 1234567890';
str += ' すばしっこい茶色の狐は のろまな犬を飛び越える';
for(var i = 200; i > 50; i-=1) {
    tag = '<p style="font-size:' + i + '%";>';
    tag += str;
    tag += ' ____ ' + i + '%</p>';
    document.write(tag);
}