2016-05-25 2 views
1

Ich bin mir nicht sicher, ob dies ohne Pseudoelemente möglich ist - aber was weiß ich.CSS vertausich Text in <a> anchor wenn der Anzeigetyp blockiert

Ich habe ein Tab-Element, das eine <LI> ist.

In jedem LI befindet sich ein <A>.

Ich möchte 2 Dinge erreichen:

  1. die Make A-Element den Raum seiner Mutter LI füllen. Die Höhe ist bekannt, aber die Breite ist variabel. vertikal
  2. der Text-Center,

Offensichtlich ist dies leicht mit 1 Liner gemacht wird, einfach display:block und line-height auf den Anker hinzuzufügen.

Allerdings muss ich für die Zeilenumbrüche auch zulassen.

Also zur Wiederholung: Füllen Sie den verfügbaren Platz im übergeordneten und vertikal ausrichten Text innerhalb eines eigenen Blocks.

Ich kann flexbox oder was auch immer verwenden, aber im Moment kann ich das eine oder das andere nicht beides.

+0

Es wäre hilfreich, wenn Sie etwas bieten haben Sie schon haben uns einen kleinen Ausschnitt zu zeigen, dass das aktuelle Verhalten zeigt, so dass wir von dort – Randy

+0

Das Problem gehen wird randy, dass es ist jeweils eine Zentralisierung mit 1 Zeile zu erreichen (ich habe die Methode in der Post hervorgehoben), aber nicht 2 oder mehr. Momentan tüftele ich an Pseudoelementen, aber ich habe nichts Konkretes auf den Tisch zu legen. Das Problem, das ich mit dem Pseudo-Ansatz habe, ist, dass das Link-Ziel nicht auf das Pseudo-Element angewendet wird, so dass ich beide meiner Ziele erreichen kann, aber der Pseudo von A ist im Moment kein gültiger anklickbarer Link. –

Antwort

0

Ich verwende Flex-Box um die Elemente zu wickeln, die li Elemente eine Höhe von 50 px geben und dann die a Tag eine Zeilenhöhe von 50px.

  • Aufgrund der Zeilenhöhe ist der Text vertikal zentriert.
  • Aufgrund der Flex-Box wickeln die Elemente Multiline.

ul { 
 
    width: 200px; 
 
    height: 200px; 
 
    border: 1px solid #c3c3c3; 
 
    list-style:none; 
 
    margin:0; 
 
    padding:0; 
 
    display: -webkit-flex; /* Safari */ 
 
    -webkit-flex-wrap: wrap; /* Safari 6.1+ */ 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
} 
 

 
ul li { 
 
    width: 50px; 
 
    height: 50px; 
 
    position:relative; 
 
    text-align:center; 
 
} 
 

 
ul li a { 
 
    height:100%; 
 
    display:block; 
 
    line-height:50px; 
 
} 
 
ul li a:hover { 
 
    background-color:#333; 
 
    color:white; 
 
}
<ul> 
 
    <li><a href="default.asp">Home</a></li> 
 
    <li><a href="news.asp">News</a></li> 
 
    <li><a href="contact.asp">Contact</a></li> 
 
    <li><a href="about.asp">About</a></li> 
 
    <li><a href="default.asp">Home</a></li> 
 
    <li><a href="news.asp">News</a></li> 
 
    <li><a href="contact.asp">Contact</a></li> 
 
    <li><a href="about.asp">About</a></li> 
 
    <li><a href="default.asp">Home</a></li> 
 
    <li><a href="news.asp">News</a></li> 
 
    <li><a href="contact.asp">Contact</a></li> 
 
    <li><a href="about.asp">About</a></li> 
 
    <li><a href="default.asp">Home</a></li> 
 
    <li><a href="news.asp">News</a></li> 
 
    <li><a href="contact.asp">Contact</a></li> 
 
    <li><a href="about.asp">About</a></li> 
 
</ul>

+0

geile Idee randy - Ich muss die Zeilenhöhe für 2 Liner ändern, aber ich erkenne das trotzdem, also wird das wahrscheinlich auch für mich funktionieren. Es kann mit Pseudo-Elementen gemacht werden (obwohl ich noch keine funktionierende Version habe), aber es hängt von Zeiger-Ereignissen ab, die IE10 nicht hat, also denke ich, dass ich es mit deiner Lösung versuchen werde. –

Verwandte Themen