Category Archives: XHTML+CSS

[XHTML+CSS]CSS Spriteで表現する角丸

3
Filed under Web Design, XHTML+CSS

このエントリーはリライトされています。そちらも併せてご覧ください。
XHTML+CSS – CSS Spriteで表現する角丸2

ネタ元は有名所コリスさんのこれ
コリス CSS 一枚の画像で、四隅が角丸のパネルを実装するスタイルシート
そのネタ元はコリスさんの方から見れる。

私は最近DesignWalkerさんのエントリーを読んでからCSS Spriteに興味がありまして、自分の仕事の中で可能であればコッソリしこんでます。これ系のテクニックってよく使いながらも、総称のようなものを知らなかったので、知って目からうろこというかなんというか。でもこれ複数人でコーディングする場合は混乱を招く可能性があるんでそこは注意を。

これも有名所DesignWalkerさん。CSS Spriteの簡単な説明と利点。
DesignWalker CSS Spriteを活用しよう

でまぁ今回のネタについてはコリスさんを読んでいただくとして、これをテストしてみました。まず、Demo2をダウンロードして試した感想としては「こりゃ凄い!」という驚き。無駄なタグがない!。ありそうでなかった発想に脱帽。僕のようにjavascriotがまったく使えない人間でも、スライスしてDivをテーブルレイアウトの様に配置しなくても簡単に実現できる所が良いです。(他にもやり方ありますけどね)とりあえず日本語向けにCSSをカスタマイズしてみた。


Demo

こんな感じです。何処かで見たことがあるというか、はてな丸パクリですが、まぁお遊びということでお許しください。fontは僕の好みでh2のみメイリオです。で、これに使ってる画像はこれ一枚です。


実サイズの画像(448バイト)
画像次第でサイズを落とすことも可能でしょう。

で、ここで「やったー出来た出来た」と喜んでいたんですが、コリスさんのコメントを見るとどうやらIE5.5では崩れるらしい。まぁぶっちゃけ「Ie5.5は無視しよっかな・・・」と思ったんですが、とりあえず問題はPを背景として使うから生じるんだから、pのwrapを作って背景を指定すれば崩れないなと。(wrapper+inner否定派の方ごめんなさい)

で、Pを包んだ結果がこれ。

Demo2 ついでに画像も入れてみた。

Demo2の主なCSS

body, div, address, p, h2 { margin: 0; padding: 0;}

body { font: 100%/1.231 Arial, Helvetica, sans-serif;}

.contentbox {
width: 350px;
background: url(画像) no-repeat left bottom;
padding-bottom: 15px;
margin: 0 auto;
}

.contentbox h2 {
width: 320px;
background: url(画像) no-repeat left top;
padding: 0 15px;
font-family:"メイリオ";
color: #fff;
font-size:108%;
font-weight:bold;
line-height: 2;
height: 35px;
}

.contentbox p {
width: 318px;
background: url(画像) repeat-y right top;
padding: 10px 16px 0 16px;
letter-spacing: 0.1em;
line-height: 1.5;
font-size: 85%;
}

Demo2のhtml

<div class="contentbox">
<h2>タイトル</h2>
<div class="IE55"><img alt="" />

文章

</div>
</div>

IE5.5用にdivが一つ増えてる。もっと良い方法があるかも。

これならIE5.5でも崩れずに表示可能です。ただしIE Testerの5.5でしか確認してないんで、実機では不明。いけるかな?で、例のごとくソースが殴り書きなんで整理整頓せれてなくて汚いです。これだけの手間で角丸が使えてフレキシブルなら、常用できるテクニックだと思うんだけどどうでしょうか。

[CSS] 教科書には書いていないCSS

0
Filed under Web Design, XHTML+CSS

題名にはあまり意味は無いです。たぶん書いてる本には書いてると思います。なので正確には

僕の持っている 教科書には書いてない か、僕が見落としている XHTMLとCSS」

なのでニュアンス的にはちょっとした小技みたいな感じで受け取ってくれるとこちらも気が楽ですけど、いかがなものでしょうか。さて情けない逃げ口上もすんだことですので、本題に入ります。

テキストリンクのアンダーラインをボーダーで表現する

リンクのアンダーラインを自分色で染めたい(調整・装飾したい)場合ってありますよね。そういうときはボーダーでアンダーラインを表現します。ですのでボーダーの幅やスタイル(実線、ドット、ダッシュ等)等で表現が可能です。(その他手書き風等のオリジナルの”飾り”を指定する場合は背景でやります)

1.が普通に指定したアンダーラインのあるリンク

2.飾りがnoneでボーダーの下が2pxのdotted

2.hoverの飾りがnoneでボーダーの下が2pxのsolid

文字と下のボーダーとの距離はline-heightかheightで調整します。その場合はdisplay: block;にする必要があるので少々クセがあります。

IEデフォルトのツールチップを表示させない

html内に<img>で画像を表示させた場合は必ずaltを指定する必要があります。このブログはaltが適当なんでけしからんです!最近ではもっぱらユーザビリティやSEOの要素として扱われる事が多いですが、純粋にちゃんと書いてた方が後々ソースを見直したときにも理解が早いですよね。

しかし色んな人の思惑や意図が絡み合って、どうしてもaltが長くなってしまいツールチップの表示が邪魔になることがたまーにあります。

そんなときは<img>の中にtitle=”"を入れましょう。そうすることでツールチップが表示されなくなります。ですが、本来の意味で考えると本末転倒になってしまうので積極的にはオススメできません。

DTDによる画像の下に出現する意図しない隙間を埋める

僕がサイトを作る場合、基本的にXHTML 1.0 Strict+XML宣言で作ります作ってました。そうなると右の画像のようにFirefoxでは画像の下に意図しない隙間が出来てしまいます。

右の場合は特に問題ないのですが、装飾要素のある部位だと困ります。なのでそういうときはCSSでimgに対して

vertical-align: bottom;

を指定してあげます。こうすることで画像の下に表示されていた隙間は無くなります。

Fiirefoxの縦スクロールバーを常時表示させる

Firefoxはサイト全体が画面内に収まる場合はスクロールバーを表示しません(IEは縦スクロールバー常時表示)。縦にスクロールの必要がある場合にのみスクロールバーが表示されるので、制作側の大きいモニタでは問題なくても、一度に表示できない小さいモニタとFirefoxを使ってサイトを見ている訪問者は、ページ移動の度にスクロールバーが表示・非表示と切り替わってしまいます。

そうなるとページ移動の度にスクロールバーの幅だけ横にズレてしまうので、見ている人に何とも言い難い不安定感を演出してしまいます。サイトの縦幅が全ページ同じなら気にすることもないのですが、なかなかそういう風にはいきません。ですのでそういうときにはCSSに

html>/**/body { overflow-y:scroll;}

を記述することによってFirefoxでの縦スクロールバーの常時表示が実現します。これはIE7以外のモダンブラウザに適用されるようにCSSハックを利用しています。そしてこのハックはW3CのCSS Validatorには通りませんので注意してください。そもそもoverflow-y自体がCSS2.1に存在しないので最初から通らないんですが。

頑張って作ったサイトは自分の作品ですから、できるだけ色んな人に綺麗な状態で見てもらいたいですよね。

またなんか思いついたら書いてみます。

[CSS]CSSで簡単に拡大画像をアナウンスする

0
Filed under XHTML+CSS

CNET JAPANのニュースにフォトレポート(リンク先は新型PSPのフォトレポート)という形式の記事があるんだけど、そこでは写真上ににカーソルが乗った瞬間に、「写真をクリックすると次へ移動します」みたいなのが写真の上に出てくるんです。で、それを見てたらふと「写真をクリックすると拡大します」みたいな感じでも使えるような気がしたので、真似したくなった。

フォトレポートの画像周辺のソースをざっと見ただけなんではっきりとは言えないんだけど、<a>と<img>の間に空spanが入ってるんでなんとなくやり方がわかったようなわからないような。以前Web Designer WallでやってたCSS Decorative Galleryみたいなのの延長線上+αかなぁとは思うんだけど確証なし。でもまぁあんまり難しい事は出来ないので、簡易バージョンで再現してみました。

Read More »