2013-08-28 32 views
20

Ich versuche, einige Schaltflächen für eine Website mit formatierten Hyperlinks zu erstellen. Ich habe es geschafft, den Button so aussehen zu lassen, wie ich es will, ein kleines Problem. Ich kann den Text ("Link" im Quellcode unten) nicht vertikal zentrieren.Text vertikal in einem Inline-Block zentrieren

Leider kann es mehr als eine Textzeile geben, wie mit der zweiten Taste gezeigt, so dass ich line-height nicht verwenden kann, um es vertikal zu zentrieren.

Meine ursprüngliche Lösung war zu verwenden display: table-cell; anstatt inline-block, und das sortiert das Problem in Chrome, Firefox und Safari, aber nicht im Internet Explorer, also denke ich, ich muss inline-Block bleiben.

Wie gehe ich vor, um den Linktext innerhalb der 57px x 100pxinline-block vertikal zu zentrieren, und es auf mehrere Textzeilen ausrichten zu lassen? Danke im Voraus.

CSS:

.button { 
    background-image:url(/images/categorybutton-off.gif); 
    color:#000; 
    display:inline-block; 
    height:57px; 
    width:100px; 
    font-family:Verdana, Geneva, sans-serif; 
    font-size:10px; 
    font-weight:bold; 
    text-align:center; 
    text-decoration:none; 
    vertical-align:middle; 
} 
.button:hover { 
    background-image:url(/images/categorybutton-on.gif); 
} 
.button:before { 
    content:"Click Here For\A"; 
    font-style:italic; 
    font-weight:normal !important; 
    white-space:pre; 
} 

HTML:

<a href="/" class="button">Link</a> 
<a href="/" class="button">Link<br />More Details</a> 

Antwort

16

Wickeln Sie Ihren Text mit einer Spanne (Zentriert), und schreiben Sie eine weitere leere Spanne, kurz bevor es (Zentrierer) wie folgt aus.

HTML:

<a href="..." class="button"> 
    <span class="Centerer"></span> 
    <span class='Centered'>Link</span> 
</a> 

CSS

.Centered 
{ 
    vertical-align: middle; 
    display: inline-block; 
} 

.Centerer 
{ 
    display: inline-block; 
    height: 100%; 
    vertical-align: middle; 
} 

Werfen Sie einen Blick hier: http://jsfiddle.net/xVnQ6/

+1

Hallo danke für deine Antwort, leider geht das nicht. Die Textzeile "Link" scheint 57px hoch zu sein und bewirkt, dass die sekundäre Textzeile (More Details) außerhalb der 57px x 100px Box erscheint. Es ignoriert auch die .button: vor dem Text. –

+0

Ive hat eine Geige für dich hochgeladen. mit ein paar kleinen Eti .. Sag mir, ob es jetzt für dich funktioniert. – avrahamcool

+1

Das funktioniert! Danke vielmals! –

23

Vielen Dank @avrahamcool, wirkt wie ein Zauber!

Ich habe ein kleines Upgrade. Sie können

.button:before { 
    content: ''; 
    display: inline-block; 
    vertical-align: middle; 
    height: 100%; 
} 

Siehe Demo hier mit CSS redundanter .Centerer Spanne ersetzen: http://jsfiddle.net/modernweb/bXD2V/

Hinweis: Dies wird nicht mit Text in "content" -Attribut arbeiten.

+0

dieser hat nicht für mich gearbeitet! Wahrscheinlich stimmt etwas nicht, es hat sich etwas verändert. – happyhardik

+1

Entschuldigung, ich habe vergessen zu erwähnen, dass dieses Upgrade nicht funktioniert, wenn Sie einen beliebigen Text in das Attribut "content" einfügen. –

Verwandte Themen