tags:

views:

1335

answers:

2

Let me try to explain...

I found this article and I decided that I liked the way they styled links and buttons. So I took the CSS from the article...

.buttons a, .buttons button{
    display:block;
    float:left;
    margin:0 7px 0 0;
    background-color:#f5f5f5;
    border:1px solid #dedede;
    border-top:1px solid #eee;
    border-left:1px solid #eee;

    font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
    font-size:100%;
    line-height:130%;
    text-decoration:none;
    font-weight:bold;
    color:#565656;
    cursor:pointer;
    padding:5px 10px 6px 7px; /* Links */
}
.buttons button{
    width:auto;
    overflow:visible;
    padding:4px 10px 3px 7px; /* IE6 */
}
.buttons button[type]{
    padding:5px 10px 5px 7px; /* Firefox */
    line-height:17px; /* Safari */
}
*:first-child+html button[type]{
    padding:4px 10px 3px 7px; /* IE7 */
}
.buttons button img, .buttons a img{
    margin:0 3px -3px 0 !important;
    padding:0;
    border:none;
    width:16px;
    height:16px;
}

Then I have several buttons in a row I want to use like this...

<div class="buttons">
    <a href="/password/reset/"><img src="pict1.png" class="positive" alt=""/>Button 1</a>
    <a href="/password/reset/"><img src="pict2.png" alt=""/>Button 2</a>
    <a href="/password/reset/"><img src="pict3.png" class="negative" alt=""/>Button 3</a>
</div>

See this example http://reljac.com/csstest.php

But that row of buttons may need to be aligned center, not all to the right or left. If I change the CSS to...

.buttons a, .buttons button{
    /*display:block;
    float:left;*/
    margin:0 7px 0 0;

The buttons no longer appear correctly when there is an image, specifically in IE 6,7 & 8.

See this example http://reljac.com/csstest_wo.php

I can change the float to right to get the buttons to align right but I can't figure out what to do to get them centered (like in a )

So the short of it is I want to use the style as it is but I also need to be able to center justify the buttons if necessary.

Any help would be great.

+4  A: 

Try adding this to the CSS:

.buttons
{
    text-align:center;
    margin: 0px auto 0px auto;
}

The auto makes the margins equal on each side. The text-align is a bodge for older browsers.

EDIT:

Add an extra div around the buttons called buttonwrapper. then apply this CSS

.buttonwrapper
{
    position:relative;
    float:left;
    left:50%;
}

.buttons
{
    position:relative;
    float:left;
    left:-50%;
}

Method taken (but not tested) from http://www.pmob.co.uk/temp/centred-float4.htm

Eric
This is correct... however, I might not even bother with the text-align thing, since any browser that requires that no longer has a significant market share.
Noldorin
So I added that entire selection to the bottom of my CSS and I didn't see any difference in IE8 (reljac.com/csstest.php). Am I missing something?
Jason
You're right. Looking at http://www.pmob.co.uk/temp/centred-float4.htm is helpful. I've modified/will modify the answer
Eric
Thanks Eric, that did the trick
Jason
A: 

Also, inline-block is a great way to get the same benefits of floating, but a lot more control (like centering).

Here's an article.

rpflo