ボタンとリンクのスタイルを同じに見えるようにしたいのですが、一般的にはこれを行いました。しかし、ボタンとリンクをまったく同じに見せることはできません。
- ボタンの高さを 25px に設定しましたが、高さが 25px ではなく、Firebug と Chrome では 21px と表示されます。
- 幅も同じです。設定した値よりも 4 ピクセル小さくなっています。
- リンクには奇妙なマージンがありますが、ボタンにはありませんが、マージンを 0 に設定しました。
取るに足らないように聞こえますが、ボタンとリンクを一緒に配置すると、デザインのバグとして簡単に認識されます (レイアウトが壊れている場所に赤い線を追加しました)。ログインボタンはフォームを送信する実際のボタンであり、登録はボタンのように見える登録ページへのリンクです。
ここで、ログイン ボタンは 106x21 ピクセル、登録リンクは 110x25 ピクセルです。
ここに私のスタイルがあります:
a.button,
button {
display: inline-block;
width: 110px;
height: 25px;
padding: 0;
margin: 0;
color: white;
background: #7dbedb; /* Old browsers */
background: -moz-linear-gradient(top, #7dbedb 0%, #95c3ea 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7dbedb), color-stop(100%,#95c3ea)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #7dbedb 0%,#95c3ea 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #7dbedb 0%,#95c3ea 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #7dbedb 0%,#95c3ea 100%); /* IE10+ */
background: linear-gradient(to bottom, #7dbedb 0%,#95c3ea 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7dbedb', endColorstr='#95c3ea',GradientType=0 ); /* IE6-9 */
text-shadow: 1px 1px 1px #757575;
filter: dropshadow(color=#000000, offx=1, offy=1);
border: 2px solid #79cee6;
border-radius: 2px;
text-align: center;
text-decoration: none;
}
使用法:
<form ...>
...
<button>Login</button>
<a href="..." class="button">Register</a>
</form>
一言で言えば、 <button> と <a> を完全に同じに見せることはできません。
PS。onclickイベントでどこでもボタンを使用できることを知っています。すべての送信ボタンを onclick イベントのリンクとして作成します。しかし、私はこれをやりたくないので、フォームを送信したりリンクをたどったりするのに js は必要ありません。