お問い合わせ営業日カレンダーサイトマップコニファHOME
コニファ:ツール紹介やプログラム集・CSSの小技・まとめ


● CSSの小技・まとめ

olを使った箇条書きの開始番号を指定

<ol>の最初の子要素<li>にvalue=""で開始番号を指定します。
<li value="5"><span>ダミーテキスト5</span>
通常のol
  1. ダミーテキスト5
  2. ダミーテキスト6
  3. ダミーテキスト7
  4. ダミーテキスト8
<li>にvalue値を指定したol ( <li value="5"> )
  1. ダミーテキスト5
  2. ダミーテキスト6
  3. ダミーテキスト7
  4. ダミーテキスト8

htmlソース内に記述されている<br>を無効化

cssの指定で、br {display:none; }を記述します。<br>を一時的に無効にして、デザインを確認するときなどに役立ちます。下のサンプルはともに「ダミーテキスト」の後ろに<br>が入っています。サンプル2は、br {display:none; }を指定しています。
.sample2 br	{display:none; }
●サンプル1

ダミーテキスト
ダミーテキスト
ダミーテキスト
ダミーテキスト

●サンプル2

ダミーテキスト
ダミーテキスト
ダミーテキスト
ダミーテキスト

リストにborder-topを付けたとき、最初のborderのみを消す

リストにborder-topを付け、全体をborderで囲んだ場合、最初のborderがデザイン的にじゃまになることがあります(●サンプル3)。直に対象のliにborderを消すcssを記述しても良いのですが、動的にリストを生成する場合などはかえって面倒です。そのようなときは、ulにoverflow: hiddenを指定するだけで済みます(●サンプル4)。
ul {overflow: hidden;
●サンプル3
  • ダミーテキストダミーテキスト
  • ダミーテキストダミーテキスト
  • ダミーテキストダミーテキスト
  • ダミーテキストダミーテキスト
●サンプル4
  • ダミーテキストダミーテキスト
  • ダミーテキストダミーテキスト
  • ダミーテキストダミーテキスト
  • ダミーテキストダミーテキスト

注釈文等で折り返した次の行以降を一文字おくる

注釈文等で折り返した次の行以降を一文字おくります。サンプル5は、比較のための通常の文章で、一文字おくる文章と先頭を合わせるため、padding-left: 1emにしています。サンプル6が一文字おくった文章で、text-indent: -1emを付加しています。

●サンプル5

※マークを付けた注釈文等で文章が長くなって折り返したときに次の行の最初の文字がマークと並んでしまうと注釈文として分かりづらくなる。

●サンプル6

※マークを付けた注釈文等で文章が長くなって折り返したときに次の行の最初の文字がマークと並んでしまうと注釈文として分かりづらくなる。

サンプル6のソース
.indentp2	{ padding-left: 1em; text-indent: -1em;}

div要素内にある横並びブロックに対して、div要素の幅に合わせてマージンをつける

webページ制作担当者用CSS、jQuery等のテストページ」から採録
幅320pxのdiv要素内(赤紫の囲み)にlisタグをfloatして、ブロック(画像100px、25px)を横並びに均等配置。

●サンプル7

サンプル7のソース
.menu { width: 320px; border: 1px solid #9d06ea; }
.menu ul { width: 330px; margin-right: -10px ;overflow: hidden;_zoom: 1;  }
.menu ul li { float: left; list-style: none; margin-right: 10px;  }
.menu ul li img { margin: 0; }

col要素、colgroup要素を使って、データの種類ごとにグループ化して背景色を設定。

table要素の縦列であるcol要素をデータの種類ごとにまとめてcssを指定して表を見やすくします。
問題点:ブラウザごとにcss指定の解釈の違いがはっきり出る要素です。バックグランドの色指定だけは、ほぼ共通で使えそうです。ブラウザごとに差が出るcssは、padding、width、text-align、color、font-weightなど。
下のtableは、colgroupごとにtext-alignをleft、center、rightと3種類指定していますが、MacのSafari4、Firefox3.6で見ると、すべてleftになってしまいます。Windows IEはtext-alignを3種類表示できます。

●サンプル8
年月日 数値01 数値02 数値03 地名01 地名02
2012-03-26 2365 4792 12554 東京都 中野区
2012-02-20 6659 12478 25866 東京都 新宿区
2012-01-18 10020 6989 45778 神奈川県 横浜市
2011-12-16 99687 25566 20336 千葉県 千葉市
2011-11-10 336655 102030 26699 埼玉県 草加市
2011-10-05 20099 200556 2351 長野県 松本市

サンプル8のtableのソース
<table class="main-t" width="560" cellspacing="2" cellpadding="0">
<colgroup span="1" class="gcol01"></colgroup>
<colgroup span="3" class="gcol02"></colgroup>
<colgroup span="2" class="gcol03"></colgroup>

サンプル8のcssのソース
.gcol01	{ background: #fff999; text-align: center;}
.gcol02 { background: #dffcb1; text-align: right;}
.gcol03 { background: #b1fcec; text-align: left;}

:after擬似要素を利用して、floatを解除するclearfix。

子要素にfloatを利用すると、親要素の高さがなくなってしまいます。→関連ページ
下の例では、親要素(青紫の地)の高さが無くなり、「float:left;」した3つの画像が下にはみ出ています。

●サンプル9
floating image1 floating image2 floating image3
clearせずに、後に続く文字

これを修正する方法の一つに「clearfix」があります。「clearfix」はプロパティやセレクターの名称ではなく、:after擬似要素を利用したテクニックの名称です。この場合は、画像の親要素のdivに「class="clearfix"」を指定します。
:after擬似要素は、要素の直後に内容を挿入する際に使用するもので、必ずcontent:"追加内容"が必要です。

●「clearfix」を使用したサンプル9

floating image1 floating image2 floating image3
clearせずに、後に続く文字
「clearfix」のcssソース
.clearfix:after
{content:""; display:block; clear:both;} 
html・画像の親要素のcss指定ソース
<div id="testwrapp01" class="clearfix"> 
<img ・・・> <img ・・・> <img ・・・></div>

tableで、セルに連続した半角英数字が入る場合、勝手に広がってしまうのを折り返しで防ぐ

URLなど連続した長い半角英数字が入る場合、一つの単語と見なされるらしく、thやtdにwidthを指定しているにも関わらず、勝手にセルの幅を広げてしまいます。下の例1では、すべてのthで幅を140pxに指定していますが、広がってしまいます。
●(例1)サンプル10
width140 width140 width140 width140
width140ダミーテキスト width140abcdefghijklmnopwqstuvwxyz width140ダミーテキスト width140ダミーテキスト
ダミーテキスト width140abcdefghijklmnopwqstuvwxyz ダミーテキスト ダミーテキスト

これに対処するためまず、140pxのセル幅をブラウザに強制します。tableに指定しているcssに次の要素を加えることでセル幅は直ります。ただこのままでは、overflowプロパティのデフォルトが"visible"なので、下の(例2)のように内容がはみ出してしまいます。比較のため、overflow:autoを問題のセルの下のtdに加えてありますので、スクロールバーが出ているはずです(Google ChromやSafariの場合。IE9では、両方ともoverflow:hiddenと同じに、Firefox10では、両方ともoverflow:visibleと同じになります)。いずれにしても、overflowプロパティでは、きれいに折り返すことはできません。
table-layout: fixed;
●(例2)サンプル11
width140 width140 width140 width140
width140ダミーテキスト width140abcdefghijklmnopwqstuvwxyz width140ダミーテキスト width140ダミーテキスト
ダミーテキスト width140abcdefghijklmnopwqstuvwxyz ダミーテキスト ダミーテキスト

次に内容が飛び出すtd部分に、overflowプロパティの代わりに、word-wrapプロパティを加えます。これできれいに折り返すことができます(例3)。word-wrapプロパティは、Internet Explorerが独自に採用したものですが、他のブラウザでも利用できます。
word-wrap: break-word;
●(例3)サンプル12
width140 width140 width140 width140
width140ダミーテキスト width140abcdefghijklmnopwqstuvwxyz width140ダミーテキスト width140ダミーテキスト
ダミーテキスト width140abcdefghijklmnopwqstuvwxyz ダミーテキスト ダミーテキスト

「abbr」タグと:after疑似要素を使って、title値をhoverでツールチップのように表示

abbr(Abbreviation:省略、略語):このタグに囲まれた語句は略語や頭字語であることを示します。
このabbrタグと:after疑似要素を使って、略語の元の語句をツールチップのように表示します。「サンプル13」の右側に赤いアスタリスク付きの略語が対象で、マウスオーバーするとtitle値を表示します。IE7以前は非対応です。

●サンプル13
HTML5は、WHATWGによって2004年に定められ、W3Cにより2008年1月22日にドラフト(草案)が発表されました。 HTML4.01で非推奨だった font要素やcenter要素など、CSSで実現できるマークアップはすべて廃止されます。また、acronym要素も廃止され、abbr要素に一本化されます。 」

CSS
abbr.help01:after { 
margin: auto 4px; font-size: 1em; color:red; content: "*"; }
abbr.help01:hover:after {
padding: 3px 5px; olor: #555555; border: 2px solid #b41315; content: attr(title) " の略語"; background: #ccffcc; }




Copyright© 2012 Conifer,Inc. All rights reserved.