文字量によって背景を伸縮させるタイトルバー

文字量によって背景を伸縮させるサンプル

文字量によって背景画像を伸縮させる方法です。タイトルバーやメニューをマウスオーバーしたときの背景画像にも使えるので紹介します。

画像を用意

左部分
elastic_bg_left.png(左部分)

右部分
elastic_bg_right.png(右部分)

次に、HTMLを記述。

HTMLを記述

 
<p><span>世界一短い国名:Japan, India, Spain</span></p>
<p><span>世界一長い国名:the United Kingdom of Great Britain and Northern Ireland</span></p>
 

<p>タグの中に<span>タグを入れます。この<span>タグがポイントです。<p>タグなどのブロック要素を入れますと横幅いっぱいに伸びますので、インライン要素である<span>タグを入れることで文字量に応じて幅が変わるようにします。

そして、CSSを記述。

CSSを記述

 
p {
    margin: 0 0 10px 0;
    padding: 0px 0px 0px 15px;
    background: url(elastic_bg_left.png) left center no-repeat;
}
 
p span{
    padding: 20px 20px 20px 0px;
    background: url(elastic_bg_right.png) right center no-repeat;
    color: #FFFFFF;
    font-size: 0.8em;
    
    zoom: 1;	/* for IE */
    display: table-cell; /* for modern browser */
}
 

→文字量によって背景を伸縮するサンプル

IEに関して、<span>タグはインライン要素ですので、「padding:20px 20px 20px 0px;」を指定しても効きません。このままだと背景が途切れてしまいますので、<span>タグに「zoom:1;」を指定して「padding」を効かせるようにします。モダンブラウザに関しても、挙動がおかしいので「display: table-cell;」を指定して解決しています。

「幅と高さを指定できるインライン要素」を作り出すには「display:inline; zoom: 1;」と「display:table-cell;」で実現できるので、覚えておいたら結構役に立ちますよ。

TRACKBACK URL トラックバック用URL

COMMENT LIST

No.1

 

がんちゃ

Re:

はじめまして。
CSSハックについて探していたらこのサイトに辿りつきました。非常に役に立つ情報ですので有難いです。

サンプルページの文字サイズを最大にすると背景画像が途中で途切れてしまうのですが、これはどうすることもできないのでしょうか?

2009.05.03 02:03

No.2

 

webbibo管理人

はじめまして

背景画像が切れてしまう場合は、画像を伸ばさないといけないですね。上のサンプルでいったら、elastic_bg_right.png(右部分)が433pxなので、例えば、600pxぐらいにしないといけませんね。

2009.05.04 10:57

No.3

 

がんちゃ

Re:

こんにちは。
本記事の件ですが、右側画像を長く作成して適用すると問題ありませんでした。
ありがとうございました。

2009.05.07 08:42

No.4

 

webbibo管理人

Re:

解決できてよかったです。

2009.05.07 21:05

POST YOUR COMMENT

送信内容
vericode

おすすめCSSサイト

あわせて読みたいブログパーツ

TopPageへ

更新情報RSSアイコン

閉じる