制作者の活動(PR)。

アイドル・堀北真希ちゃんにうさみみを着けた創作キャラクタ。次
主な作品

制作者が作ったイラストと動画の例

内容をスクロール出来るブロックレヴェル要素。

CSSに於ける基本的なCSSの小技として、内容をスクロール出来るブロックレヴェル要素の作り方をご紹介します。

サイト表紙に置かれる更新案内などに利用すると良いでしょう。

内容をスクロール出来るブロックレヴェル要素・目次。

具体的なサンプル。

まず、内容をスクロール出来るブロックレヴェル要素を実現させるための具体的なサンプルとして好ましくないマークアップを行っているHTMLを挙げましょう。

好ましくないマークアップのHTML。

結構多くのサイトで見かけるのですが、サイトの更新案内を<textarea>要素としてマークアップしているものがあります。

例えば以下のようなものです。

<textarea rows="4" cols="32">平成19年 9月 6日
 △△を更新しました。
平成19年 9月 1日
 ××のコーナに□□を追加しました。
平成19年 8月25日
 ××のコーナに◇◇を追加しました。
平成19年 8月17日
 新コンテンツ・△△を追加しました。
  (以下略)
</textarea>

確かに、ファイヤーフォックスやインターネットエクスプローラなどのグラフィカルなウェブブラウザでは、<textarea>要素の内容は領域がcols属性及びrows属性で定められ、それを超えた内容の場合にはスクロールするように出来ております。

ですが、それはあくまでも多くのウェブブラウザがそのように実装しているだけに過ぎないのです。

そもそも、<textarea>要素はテキスト入力欄(しかも置換インライン要素)であり、内容をスクロール出来るブロックレヴェル要素ではありません。

表示効果を期待するのであれば、希望の表示効果が出る要素としてマークアップせず、その内容に相応しい要素としてマークアップし、スタイルシート言語を用いるのが順当です。

ここでは、その方法を考えて見ましょう。

好ましいマークアップに直しましょう。

まず、件の更新案内を好ましいマークアップに直しましょう。

この例で言えば、更新日と更新内容を組とした定義リスト(<dl>要素)としてマークアップするのが順当でしょう。

更に言えば、<textarea>要素と違って<dl>要素ではアンカーが自由に降ろせますので、更新されたコンテンツに素早くアクセス出来るようにしておくと便利になるでしょう。

そこで、以下のようにマークアップし直しましょう。

<dl id="history">
    <dt>平成19年 9月 6日</dt>
    <dd><a href="triangle.html">△△</a>を更新しました。</dd>
    <dt>平成19年 9月 1日</dt>
    <dd><a href="cross.html">××</a>のコーナに<a href="square.html">□□</a>を追加しました。</dd>
    <dt>平成19年 8月25日</dt>
    <dd><a href="cross.html">××</a>のコーナに<a href="diamond.html">◇◇</a>を追加しました。</dd>
    <dt>平成19年 8月17日</dt>
    <dd>新コンテンツ・<a href="triangle.html">△△</a>を追加しました。</dd>
  (以下略)
    </dl>

続いて、スタイルシートを作ります。

適切なマークアップが出来たなら、今度はこれに対して内容がスクロール出来る適切なスタイルをCSSで記述します。

dl#history {
    width: 16em;
    height: 4.8em;
    margin: 1em 0 0;
    padding: 0.5em;
    font-size: 100%;
    line-height: 1.2em;
    border: #0bb solid 1px;
    overflow: auto;
    }

dl#history dt {
    margin: 0;
    padding: 0;
    }

dl#history dd {
    margin: 0;
    padding: 0 0 0 1em;
    }

ここで重要なのは初めの dl#history セレクタで指定される要素のスタイル定義です。

  1. 先ず、widthプロパティheightプロパティで表示領域の横幅と高さを指定します。

    高さについては、一行の高さ(line-heightプロパティ)も絡んできますので、line-heightプロパティで一行の高さを指定しておくと正確なデザインが出来ます。

  2. 続いて、overflow: auto;プロパティを指定します。

    このプロパティは内容が入り切らない場合にスクロール出来るようにします。

  3. 以上の指定の上で、余白, パディング及び枠線などを適宜設定する事で読み易くします(ここでは枠線を青緑色にしております)。

実際に見てみましょう。

以上のスタイルを当てたうえで、ファイヤーフォックスで見てみると以下のようになります。

注意したい事。

オペラ 6.xでの問題。

オペラ 6.xでは要素内容のスクロールがサポートされていないため、以下のような表示になります。

もっとも、現在ではオペラはヴァージョンが既に9.xにまで達しており、実際オペラ 6.xを利用しなければならない環境もほとんど無いので、読めれば良いと割り切っても問題は無いでしょう。

この記事のまとめ。

最後にこの記事をまとめておきましょう。

しらぎくのウェブサイト作成入門サイトマップ

ページ外へのご案内。

marguerite.site@gmail.com