カテゴリー:CSS小技

表示タイプ
リスト表示へ
ボックス表示中

余白を設定したDIV内のタイトル要素だけ余白を無視させる

2008年6月19日 18:16

カテゴリごととか、コンテンツごととか、DIVでひとくくりにして決まったレイアウトで並べていく、というのはよくあると思います。

その中で、ひとつのDIV内にh1要素やP要素、UL要素などが混在していると思います。
そのDIVに全体の余白を設定するケースもよくあると思います。

しかし、h1要素などのタイトル部分には余白を設定したくない、という状況も結構あるのではないでしょうか。(俺だけかな・・)
まぁサンプルを見るのが一番早いので↓こんな感じ。

サンプルタイトル

サンプル文章、サンプル文章、サンプル文章、サンプル文章、サンプル文章。
サンプル文章、サンプル文章、サンプル文章、サンプル文章、サンプル文章。
サンプル文章、サンプル文章、サンプル文章、サンプル文章、サンプル文章。
サンプル文章、サンプル文章、サンプル文章、サンプル文章、サンプル文章。
サンプル文章、サンプル文章、サンプル文章、サンプル文章、サンプル文章。
サンプル文章、サンプル文章、サンプル文章、サンプル文章、サンプル文章。

ぱっと見はわかりづらいかもしれませんが、全体を囲うDIVにpaddingを設定し、タイトル部分だけネガティブマージンで相殺しています。
これに気付く前は、そのDIVからタイトル要素だけを外に出して…みたいなことをやってました。
が、コンテンツが増えていくとソースが見づらい上に編集もなんだかめんどくさい。

で、ネガティブマージンで解決できるだろうってことに気づいて適用してみたものの、なぜかIEでは見た目的には余白が消えたものの、なぜか反対の余白がまだ残っているらしく、親ボックスのDIVの幅が伸びる。
さらにIEの「幅が勝手に伸びる」というバグも手伝って、floatしているレイアウトの場合なんかはカラム落ちまでする始末。

なので、しばらくこの方法を封印していたのですが、なんと反対側の部分にもネガティブマージンを設定するときれいに余白が消えることを発見!(当たり前かもしれませんが、気づかなかった・・)
なのでメモ的にエントリーを書いてみました。ソースは以下から。

CSS管理を少しだけ便利にする小技

2008年6月 1日 00:22

最近使っているCSSの管理の方法を書きたいと思います。
みなさんも色々工夫をしていると思いますが、CSSの管理はなかなか大変です。
それも、他人が書いたCSSを読むのはとても困難。
というのも、プログラムほどCSS同士の関連性が見えないせいだと思います。

そこで、色々なところで、後から見てもどんな処理をしているのかが分かるようにコメントをつけます。
その際、ある塊ができると思います。
たとえば、あるレイアウトを記述している際に、「#container h2」とか「#container .text span」みたいに「#container」を基準としたCSS群なんかができると思います。
そのCSSを記述する上部に、「#conainerの記述部分はここだよ」的なコメントを入れることが考えられます。
そのコメント部分に「[=toNext]」みたく、タグ(?)を挿入します。
また、この部分以外にも、各コメント部分に上記のタグのようなコメントを挿入するわけです。

これをすることのメリットは、あるプロジェクトなんかでCSSの記述方法のルール付けの際に、「CSSの頭だしは「[=toNext]」で検索すること、みたいにルールを作ります。
この方法に従って描かれたCSSファイルを閲覧するときは、この頭だしのコメントを検索することで各コメントごとへ飛んで行き、ざっとファイルの中身を把握するのに役立てる、ということです。

また、その頭だしされたコメントの中に、そのコメント以下に続く処理がなんなのかを書いておくと、さらに可読性があがると思われます。

・・と、最近やってることを書いて見ました。
みなさんも、こんな工夫をしてるよ、ってことをコメントくださるとうれしいです(*'-')
ちなみに、コメントのサンプルはこんな感じ↓

左右に余白のある横並びのリストを親要素の両端にぴったりとくっつける小技

2008年3月11日 16:43

floatさせてリストを横に並べる機会は結構あると思います。
メニューなんかの場合はそれぞれのリスト要素を余白を空けずに並べたりしますが、
通常のリストなんかの場合は左右どちらかに余白を空けて並べるのが通常だと思います。

その際、当然marginを使ってそれぞれのリストとの余白を空けますが、
すべてが同じCSSが適用されるため、marginを指定したくない(大概は最後の)要素が出てきます。
最後の部分に別途クラスを指定するか、CSS3であれば3回に1回の部分はmarginを消す、
なんていうフレキシブルな対応ができますが、CSS3はまだまだ実装されてきているとは言えません。

そこで、現状でも使えるプロパティのみで親要素の両端にぴったりとくっつくように
リスト要素を収める方法を書いてみました。

左右に余白のある横並びのリストを親要素の両端にぴったりとくっつける小技サンプル

CSSの1行でできるIE6対策(ハック)

2008年3月 5日 17:33

Internet Qualityさんの所の紹介エントリーにあったサイトで、IE6だけにうまくCSSを適用しているサイトがあったので、自分のメモとしてもエントリー。

Example: margin: 20px !important; margin: 10px;

サンプルを見ると、ごく簡単な処理になってます。
通常、importantを指定したスタイルが適用されますが、どうやらIE6の場合、同じセレクタ内の場合はimportantで書かれていても、そのあとに書かれた同じスタイルが適用されてしまうようです。

なので、IE6だけに適用したいものなんかは、ハックを使わずにこんな感じで適用するとスマートかも。ただし、imporantを使ってるので、他のところで上書きしようとしてもできないので、通常のハック同様、乱用は禁物ですが・・・。

クラスを複数設定する。

2006年7月 6日 13:02

CSSのテクニックではないですがw
わりと使われてなかったり、本の紹介とかにないような気がしたので、書いてみました。
クラスを複数指定できることはわりと知られてないんですかね?
それとも、どこかで不具合があって使われてないとか…?
とりあえず、自分の検証できる環境で調べた所、問題が出たことはなかったので「不具合なんてない!」と思い込んだまま書きますw

リンクテキストにアクセント(画像)をつける

2006年6月30日 20:01

リンクテキストにマウスオーバーで色を変化させたり、というのはよくあると思います。
それではなく、リンクテキストにちょっとした装飾を施しちゃいましょう。
例えば、リンク文字の横に矢印の画像を入れたりとか。

clearを使わずにfloatの親ボックスに背景を表示させる

2006年6月21日 16:35

clearを使わずにfloatの親ボックスの背景を表示する方法を発見。
まだ試してはないけど、これが特に不具合なく動く(将来的にも)なら、かなり便利そう。
内容は、親ボックスに「overflow: auto;」を追加するだけ。
clearを使った方法だとちょっとした問題があったりしたので、今度使ってみようと思う。