【これは約 4 分の記事です】
ここ一週間(8月10日頃から8月19日今日まで)、このサイトをかなりいじっているのですが、いじっている部分はデータベース部分なので見た目の違いは全くわからないと思います。
数少ない見た目関係でいじっているところは、動画のバナー部分です。
このバナーは、ポインタを重ねると、バナーが暗くなるようにしています。
反転する前の画像と、反転後の画像ですが、一つのファイルに収まっています。つまりこんな感じ。
ポインタが重なっていない時には上の部分、重なっている時は下の部分が表示される作りになっています。
二つの画像ファイルを切り替えるのではなく、一つの画像ファイルの中に複数の画像を入れ、状況に応じて部分分を見せることで画像が切り替わっているように見せるウェブ画像処理上のテクニックです。ここで使っている手法は
CSSスプライト
という方法です。
この手法のなにがいいかというと、
- 二つの画像の切り替わりだと、2つ目の画像がダウンロードされていない状態で切り替わると一瞬画像が途切れるのだが、ひとつの画像の表示部分の切り替えなので、画像表示が途切れることがない
ことです。
このバナーを作った最初の時点では、影のある画像と影のない画像とは別ファイルにしていました。CSSスプライトの手法、知ってはいたのですが、
- 昨今のネットワーク環境で画像が途切れることはないだろう
と高をくくって二つのファルに分けていました。・・・考えが甘かったです。ポインタを重ねると、最初の一回目では一瞬バナー画像が乱れていました。二回目以降は問題が起きないのですが、一回目で結構気になるレベルだったので、修正しました。
CSSスプライトでの指定方法はこんな感じ
元の画像は 幅234px * 高さ120px で、半分の高さが60px。
マウスを重ねない時のCSSが
a {
display: block;
box-sizing: border-box;
width: 234px;
height: 60px;
background-image: url(“./images/twicastbutton/twitcast-csssprite.png”);
background-repeat: no-repeat;
background-position: left top;
}
重ねた時。
a:hover{
background-position: left bottom;
}
ということで、マウスポインタを
- 重ねていない時は「background-position: left top;」とtop(上)のほうを表示
- 重ねた時は「background-position: left bottom;」とbottom(下)の方を表示
と設定しています。
CSSスプライトはどこからどの範囲を見せるかという表示範囲の座標を計算するのが面倒だと思って、後回しにしていました。ですが、対象となる部分が2つだけであれば、上を表示するか下を表示するかだけを指示すればいいので、高さだけ正確にちょうど半分で画像が変われば後は計算はしなくてすみます。
面倒臭がらずに、最初からCSSスプライトでバナー表示すればよかったと今では反省しています。
防災SNSアドバイザー。情報処理安全確保支援士第5338号。ネットワークスペシャリスト。ITコーディネータ
東北大学大学情報科学研究科第2期生。1994年からインターネットに携わる。システムベンダーの総務社内SEとして、社内システムの構築運用やBCP策定、従業員教育に関与。2015年情報セキュリティ専門法人「まるおかディジタル株式会社」を福井県坂井市丸岡町に設立し現在に至る。研修では基本的に防災のお話以外では着物でお話させていただいております。
情報セキュリティ・IT関連資格取得・企業防災(BCP)の組織内教育・コンサルティング・支援・取材のお問い合わせなどございましたら、こちらからご連絡ください。
メール・お電話・FAX・Facebook
https://www.maruoka-digital.jp/contact/form/