星19個のうち5つだけを表示させて「星レベル」を表現

先ほど用意した「星が19個並んだ画像」は、星1つあたりの横幅が15pxになるよう作られています。(空白も含めて15px)

星1つの横幅は15ピクセル
 

つまり、以下のように表示開始位置を調整した上で、横幅75px(星5つ分)だけを表示させれば、様々な星レベル(星ランク)の値を表現できます。

左端から 0pxの位置: 星5.0 , 左端から150pxの位置: 星4.5
左端から15pxの位置: 星4.0 , 左端から165pxの位置: 星3.5
左端から30pxの位置: 星3.0 , 左端から180pxの位置: 星2.5
左端から45pxの位置: 星2.0 , 左端から195pxの位置: 星1.5
左端から60pxの位置: 星1.0 , 左端から210pxの位置: 星0.5
左端から75pxの位置: 星0.0

星19個のうち5つだけを表示させるスタイルシート

上記のように表示範囲を限定するスタイルシートソースは、以下の通りです。 (星画像のファイル名は「starlevels.gif」としています。)

.starlevel5 {
   background-image: url('starlevels.gif'); /*星画像*/
   background-repeat: no-repeat; /* 繰り返しはナシ */
   width: 75px;                  /* 横幅は星5つ分 */
   height: 15px;                 /* 高さは星1つ分 */
}
.star50 { background-position: left top; }
.star40 { background-position: -15px top; }
.star30 { background-position: -30px top; }
.star20 { background-position: -45px top; }
.star10 { background-position: -60px top; }
.star00 { background-position: -75px top; }

.star45 { background-position: -150px top; }
.star35 { background-position: -165px top; }
.star25 { background-position: -180px top; }
.star15 { background-position: -195px top; }
.star05 { background-position: -210px top; }

■starlevel5クラス:
最初の「starlevel5」クラスで、背景画像(background-image)として星画像を指定しています。
タイル状に繰り返す必要はないので、背景画像の繰り返し(background-repeat)は「なし(no-repeat)」を指定しています。
横幅(width)は星5つ分である「75px」(=15px×5個)を指定し、高さ(height)は星1つ分である「15px」を指定しています。

■star50~star05クラス:
次に、背景画像の表示位置を決定する background-position プロパティのみを記述した9個のクラスを列挙しています。
background-positionプロパティの値には、「左端からの表示位置」と「上端からの表示位置」の2つを並べて記述します。
※値「left」は左端のことで「0px」と同じ。値「top」は上端のことで「0px」と同じ。

「star50」クラスは「星5」,「star45」クラスは「星4.5」
「star40」クラスは「星4」,「star35」クラスは「星3.5」
:   :   :      :   :   :
「star00」クラスは「星0」,「star05」クラスは「星0.5」
……を表しています。

例えば、「星4」を表す star40クラスでは、値に「-15px」を指定しています。 これは、背景画像をマイナス方向(左側)へ15ピクセルずらして表示することを意味します。 その結果、「左から15ピクセル目」から始まる「合計75ピクセル」が表示されることになり、「橙色4つ+灰色1つ」が表示できます。

さて、上記のスタイルシートを用意できたら、実際に星を表示させるHTMLを記述しましょう。 詳細は、次のページでご紹介いたします。