このページは、ホストページ(貼りつけ先のページ)に、「いいねボタンのHTMLとCSSを、最初の一行から書いてみよう!」という企画のチュートリアルです。
下の図が、このチュートリアルで作るボタンの完成図です。
ユーザーによっては、こちらのほうが、直書き貼り付けよりなじみやすいかもしれません。このチュートリアルを実行する前に、ボタンテンプレートのセクションを一読しておくことをお勧めします。
まず、下のリンクをクリックして、このチュートリアルで使用するボタンテンプレート( tpl-sb-from-zero-h )をダウンロードしてください。
ダウンロード ( download-sb-from-zero-h.zip )
ここで「ホストページにHTMLとCSSを書き込むのに、なんでボタンテンプレートが必要なの??」と考える方がいらっしゃるかもしれません。確かにHTMLとCSSはホストページに直接書き込むので、ボタンテンプレート内のHTMLファイルとCSSファイルは使用いたしません。しかしボタンの設定(アンドゥー機能を有効・無効するなど)はできなければいけないので、設定ファイルを提供するボタンテンプレートが必要なのです。
ボタンテンプレートをダウンロードした後、お持ちのAjaxいいねボタンに追加してください。ボタンテンプレートの追加の仕方に関しては、「テンプレートの追加」のページを参照してください。
チュートリアル用ボタンテンプレート( tpl-sb-from-zero-h )を、二行貼り付け方式で、ウェブページに貼り付けてください。
※ いいねボタンのKeyは「my-button」を指定したと仮定します。
ホストページ上に、以下のような「お知らせ」が表示されることを確認してください。
前のステップで「二行貼り付け」を行いましたので、ウエブページ上には、以下のように、<script>タグと<div>タグがあります。
(1) <script src=".............."></script>
(2) <div class="ajax-iine" data-pid="my-button" data-tid="tpl-sb-from-zero-h"></div>
以下のように、(2)の<div>と</div>の間に数行の改行をいれて、HTMLコードを書き込める準備をしてください。
<div class="ajax-iine" data-pid="my-button" data-tid="tpl-sb-from-zero-h">
</div>
これから、(2)の<div>タグの間に、いいねボタンのHTMLコードを書き込んでいくわけですが、現在、<div>タグの間に「お知らせ」がスクリプトによって自動的に挿入される設定になっていますので、<div>タグの間に何を書いても、「お知らせ」に入れ替えられてしまいます。まずはこの挿入を停止しましょう。
ボタンテンプレートの設定ファイル( config.inc.php )をテキストエディタで開けて、以下のような、$cfg["load-resource"]を見つけてください。
$cfg["load-resource"] = 1;
$cfg["load-resource"]に、0 を指定してください。
$cfg["load-resource"] = 0;
ファイルを保存して、ブラウザの更新ボタンをクリックしてください。「お知らせ」が消えます。これでスクリプトによる「お知らせ」の挿入を停止させることができました。
さて、これでやっとボタンのHTMLコードを書きだすのかと思いきや、最初に書く込むのは次の二行です。
<div class="ajax-iine" data-pid="my-button" data-tid="tpl-sb-from-zero-h">
<div class="aiin-css-tpl-sb-from-zero-h">
</div>
</div>
<div class="aiin-css-tpl-sb-from-zero-h">は、一体なんなのでしょう!? 謎めいた<div>ですね。
この<div>は、この中で使用されるCSSスタイルが、他のボタンのCSSと混ざらないようするための、スタイル隔離用<div>です。この<div>に指定されている「aiin-css-tpl-sb-from-zero-h」は、後でCSSを書く際に使用いたしますが、ここでは、以下の tpl-sb-from-zero-h ( ボタンテンプレートの名前 ) の箇所が同じあることに注目してください。
<div class="ajax-iine" data-pid="my-button" data-tid="tpl-sb-from-zero-h">
<div class="aiin-css-tpl-sb-from-zero-h">
</div>
</div>
スタイル隔離用<div>につけるクラスの一般的な公式は、以下のようになります。
<div class="aiin-css-(ボタンテンプレートの名前)">
例えば、仮にボタンテンプレートの名前が「tpl-12345」だったら、スタイル隔離用<div>のコードは以下のようになります。
<div class="ajax-iine" data-pid="my-button" data-tid="tpl-12345">
<div class="aiin-css-tpl-12345">
</div>
</div>
今度こそ、いいねボタンのHTMLコードを書く準備が整いました。以下の二行を挿入してください。
<div class="ajax-iine" data-pid="my-button" data-tid="tpl-sb-from-zero-h">
<div class="aiin-css-tpl-sb-from-zero-h">
<div class="aiin-btn">
</div>
</div>
</div>
この <div class="aiin-btn">...</div> がボタンの外枠になります。この<div>タグの中をクリックすると、投票が行なわれます。
さて、<div>タグの中に何か入れておかないと、なにも表示されませんので、いいね!といれておきましょう。
<div class="ajax-iine" data-pid="my-button" data-tid="tpl-sb-from-zero-h">
<div class="aiin-css-tpl-sb-from-zero-h">
<div class="aiin-btn">
いいね!
</div>
</div>
</div>
ここで、ブラウザの更新ボタンをクリックしてください。ホストページ上に「いいね!」と表示されます。
いいねボタンの中に投票数を表示しましょう。以下の一行を書き込んでください。
<div class="ajax-iine" data-pid="my-button" data-tid="tpl-sb-from-zero-h">
<div class="aiin-css-tpl-sb-from-zero-h">
<div class="aiin-btn">
いいね!
<span class="aiin-vcnt"></span>
</div>
</div>
</div>
投票数は、<span class="aiin-vcnt"> と </span> の間に表示されます。
ブラウザのホストページを更新してください。以下のように、「いいね!」と投票数が表示されます。
ボタンをクリックして、投票数が変わるか確認してください。
これで、いいねボタンのHTMLコードが完了いたしました。次のステップから、いいねボタンのCSSコードを書いていきます。
CSSコードをウェブページに書くには、<style>のセクションが必要です。いままで書いてきたボタンHTMLコードの上に、以下のように、<style>のセクションを作ってください。
<style>
</style>
<div class="ajax-iine" data-pid="my-button" data-tid="tpl-sb-from-zero-h">
<div class="aiin-css-tpl-sb-from-zero-h">
<div class="aiin-btn">
いいね!
<span class="aiin-vcnt"></span>
</div>
</div>
</div>
これから、<style> と </style> の間に、CSSコードを書いていきます。
このステップでは、ボタンの色を指定します。文字の色を白、背景色を青にします。aiin-btnのクラスを持つ<div>が、ボタンのエリアを定義しますので、aiin-btnを<style>のセクションに書き込みます。
一見すると、次のようなコードでいいような気がします。
<style>
.aiin-btn {
color:white;
background-color:blue;
}
</style>
しかし、aiin-btn のクラスは、他のいいねボタンでも使われているので、もし他のスタイルのいいねボタンが同じページに存在した場合、このCSSコードは、それらの色に影響を及ぼしてしまう可能性があります。ここで、スタイル隔離用<div>で使用したクラス( aiin-css-tpl-sb-from-zero-h )の出番です。
この aiin-css-tpl-sb-from-zero-h を aiin-btn の前におくことで、色の指定が、aiin-css-tpl-sb-from-zero-h の中にある aiin-btn だけに適用されます。
<style>
.aiin-css-tpl-sb-from-zero-h .aiin-btn {
color:white;
background-color:blue;
}
</style>
<div class="ajax-iine" data-pid="my-button" data-tid="tpl-sb-from-zero-h">
<div class="aiin-css-tpl-sb-from-zero-h">
<div class="aiin-btn">
いいね!
<span class="aiin-vcnt"></span>
</div>
</div>
</div>
このように、このいいねボタンのCSSを書く時は、以下のように、必ず、.aiin-css-tpl-sb-from-zero-h で始めてください。こうすることで、ここに書いたCSSが、他のスタイルのいいねボタンに干渉することを防げます。
<style>
.aiin-css-tpl-sb-from-zero-h ........ {
....................
....................
....................
}
.aiin-css-tpl-sb-from-zero-h ........ {
....................
....................
....................
}
.aiin-css-tpl-sb-from-zero-h ........ {
....................
....................
....................
}
</style>
ここで、ホストページを更新して、どのように表示されるか見てみましょう。
色はきちんと適用されていますが、ボタンが横に長く伸びています。これは「置かれた場所で横に伸びれるだけ伸びる」というdivタグの習性です。これを次のステップで直します。
ボタンのスタイルに display:inline-block; を加えて、ボタンが伸びるのを防ぎます。
<style>
.aiin-css-tpl-sb-from-zero-h .aiin-btn {
display:inline-block;
color:white;
background-color:blue;
}
</style>
ホストページを更新して、結果をみてみましょう。
ボタンの伸びはなくなりました。ここで気になるのは、文字のまわりにまったくスペースがないので窮屈な感じがします。次のステップで隙間を作りましょう。
ボタンのスタイルに padding:10px; を加えて、文字のまわりに隙間を作ります。
<style>
.aiin-css-tpl-sb-from-zero-h .aiin-btn {
display:inline-block;
padding:10px;
color:white;
background-color:blue;
}
</style>
ホストページを更新して、結果を見てみます。
だいぶボタンらしくなってきました。
ボタン上にマウスのカーソルをのせた時に、カーソルがポイント型のアイコンに変わるようにします。
ポイント型のカーソルを使用するには、cursor:pointer; をCSSに追加します。
<style>
.aiin-css-tpl-sb-from-zero-h .aiin-btn {
display:inline-block;
padding:10px;
color:white;
background-color:blue;
cursor:pointer;
}
</style>
ホストページを更新して、マウスカーソルが変わるかテストしてみてください。
クリックされた後に背景色が変わるようにするためには、.aiin-btn.aiin-sel のCSS項目を追加します。
<style>
.aiin-css-tpl-sb-from-zero-h .aiin-btn {
display:inline-block;
padding:10px;
color:white;
background-color:blue;
cursor:pointer;
}
.aiin-css-tpl-sb-from-zero-h .aiin-btn.aiin-sel {
}
</style>
新しいCSS項目を追加する時は、.aiin-css-tpl-sb-from-zero-h で始めることを忘れないでください。
background-color:green; を追加して、クリックされた後に背景色が緑になるようにします。
<style>
.aiin-css-tpl-sb-from-zero-h .aiin-btn {
display:inline-block;
padding:10px;
color:white;
background-color:blue;
cursor:pointer;
}
.aiin-css-tpl-sb-from-zero-h .aiin-btn.aiin-sel {
background-color:green;
}
</style>
ページを更新して、いいねボタンをクリックしてみてください。ボタンの背景色が緑に変わります。
ボタンの全体の修飾はこれで終了です。次に投票数を表示する<span>にCSSを追加します。
投票数は <span class="aiin-vcnt"></span> の間に表示されます。
<div class="ajax-iine" data-pid="my-button" data-tid="tpl-sb-from-zero-h">
<div class="aiin-css-tpl-sb-from-zero-h">
<div class="aiin-btn">
いいね!
<span class="aiin-vcnt"></span>
</div>
</div>
</div>
<span class="aiin-vcnt"></span> にCSSを追加するには、以下のようなCSSセレクタを追加します。
<style>
.aiin-css-tpl-sb-from-zero-h .aiin-btn {
display:inline-block;
padding:10px;
color:white;
background-color:blue;
cursor:pointer;
}
.aiin-css-tpl-sb-from-zero-h .aiin-btn.aiin-sel {
background-color:green;
}
.aiin-css-tpl-sb-from-zero-h .aiin-vcnt {
}
</style>
このステップでは、投票数が表示できるスペースを前もって確保するために、min-width:20px;を追加します。<span>タグは、そのままでは幅を指定できないタグですので、display:inline-block; も追加します。さらに、投票数を右揃えで表示するために、text-align:right; を追加します。
<style>
.aiin-css-tpl-sb-from-zero-h .aiin-btn {
display:inline-block;
padding:10px;
color:white;
background-color:blue;
cursor:pointer;
}
.aiin-css-tpl-sb-from-zero-h .aiin-btn.aiin-sel {
background-color:green;
}
.aiin-css-tpl-sb-from-zero-h .aiin-vcnt {
display:inline-block;
min-width:20px;
text-align:right;
}
</style>
ブラウザを更新して、結果をみてみましょう。投票数の表示幅が確保されました。投票数も右揃えになっています。
これでチュートリアルの全ステップが終了いたしました。以下が完成したコードです。
<style>
.aiin-css-tpl-sb-from-zero-h .aiin-btn {
display:inline-block;
padding:10px;
color:white;
background-color:blue;
cursor:pointer;
}
.aiin-css-tpl-sb-from-zero-h .aiin-btn.aiin-sel {
background-color:green;
}
.aiin-css-tpl-sb-from-zero-h .aiin-vcnt {
display:inline-block;
min-width:20px;
text-align:right;
}
</style>
<div class="ajax-iine" data-pid="my-button" data-tid="tpl-sb-from-zero-h">
<div class="aiin-css-tpl-sb-from-zero-h">
<div class="aiin-btn">
いいね!
<span class="aiin-vcnt"></span>
</div>
</div>
</div>
極めてシンプルなボタンだったので、まだまだ改善の余地はあると思います。さらにHTMLとCSSを追加して、オリジナリティのあるいいねボタンに仕上げてください!