Reputation: 4751
I'd like to style buttons and links to look the same and in general I've done this. But I can't make button and link look absolutely the same:
Sounds insignificant, but when button and link are placed together, it's easily noted as bug in design (I added red lines where layout is broken). Login button is real button that submits form, and Register is a link to register page that looks like a button.
Here Login button is 106x21 px, Register link is 110x25 px.
Here are my styles:
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;
}
Usage:
<form ...>
...
<button>Login</button>
<a href="..." class="button">Register</a>
</form>
In two words: I can't make <button> and <a> look perfectly the same.
PS. I know I can use button everywhere with onclick event. As well as make all submit buttons as links with onclick event. But I wouldn't like to do this so no js will be required to submit a form or follow a link.
Upvotes: 3
Views: 6260
Reputation: 839
a,
input {
font-family:arial;
display:inline-block;
border:1px solid black;
background-color:blue;
color:white;
float:left;
text-decoration:none;
font-size:12px;
**padding:2px 5px;
height:20px;
vertical-align:top;
-webkit-box-sizing:content-box;
-moz-box-sizing:content-box;
-ms-box-sizing:content-box;
-o-box-sizing:content-box;
box-sizing:content-box;**
}
Upvotes: 0
Reputation: 382150
Buttons (and other inputs) don't follow the block model.
In order to adjust the size of a button, you may :
box-sizing: content-box;
to force the button to use the standard modelFor the second solution, you may have to use the whole set of equivalent declarations :
a.button,
button {
...
box-sizing: content-box;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
}
EDIT :
a problem in adjusting this is that different browsers have different buttons.
So this works in Chrome/ubuntu : http://jsfiddle.net/HAB6W/
this works in FF/ubuntu : http://jsfiddle.net/Z5H5u/
I'm not sure it's a good idea to trying to get a precise look of a button. I know I use only standard elements (usually span) for buttons when I want to have a pixel-precise style.
NEW EDIT :
This may be useful : input type=submit text vertical alignment in Firefox
Upvotes: 7