2016-04-13 9 views
5

ich habe eine Frage zu Zentrier- und Positionierelementen hintereinander. Ich habe links einen Textblock und in diesem Fall nur ein Wort, das zentriert und in derselben Zeile wie die E-Mail stehen sollte.Zentrier- und Positionierelemente in der gleichen Reihe

nav { 
 
\t text-align: center; 
 
}
<address> 
 
    <a href="#">Some text</a> 
 
    <br> 
 
    hi(at)mail.com 
 
</address> 
 

 
<nav> 
 
    <a href="#">about</a> 
 
</nav>

Ich habe versucht, die Adresse nach links zu schweben, aber dann das nav ist nicht mehr in der Mitte. Irgendwelche Ideen, wie man das erreicht? Es muss einfach sein, aber ich weiß einfach nicht wie.

bearbeiten

Die nav sollten für das gesamte Ansichtsfenster, meine aktuelle Antwort auf absolute Position wäre zentriert das nav und Satz links und rechts auf 0, aber ich weiß nicht, ob dies das wäre beste Art, es zu tun.

was sollte wie folgt aussehen:

enter image description here

Antwort

2

Ich weiß nicht, ob es der beste Weg ist, aber es sieht aus wie das, was Sie

nav { 
 
left:50%; 
 
\t text-align: center; 
 
} 
 
address{ 
 
    float:left; 
 
}
<address> 
 
    <a href="#">Some text</a> 
 
    <br> 
 
    hi(at)mail.com 
 
</address> 
 

 
<nav> 
 
<br/> 
 
    <a href="#">about</a> 
 
</nav>

+1

Stellen Sie sicher, dass danach zu löschen, sonst wird es andere Elemente beeinflussen. – Aziz

+3

danke für deine antwort, aber das ergebnis ist nicht genau zentriert, aber ich habe es noch einmal versucht mit position: absolut und links: 0 rechts: 0 ich habe das ergebnis, das ich wollte. – kay

+0

@ user3640832 in diesem Fall müssen Sie berücksichtigen, wenn das Ansichtsfenster kleiner als beide Elemente ist, sie werden sich überlappen, müssten Sie dies mit einer Medienabfrage sortieren, abgesehen davon, es ist eine gültige Lösung :) – Aziz

1
tun wollen

Erwägen Sie die Verwendung von display:table-cell. Auf diese Weise können wir den Inhalt vertikal auf den Boden des Containerelements ausrichten.

HTML:

<div class="container"> 
    <address> 
    <a href="#">Some text</a> 
    <br> 
    hi(at)mail.com 
    </address> 
    <nav> 
    <a href="#">about</a> 
    </nav> 
</div> 

CSS: (Edited 50% Breite auf table-cell Elemente enthalten)

.container{ 
    display:table; 
    width:100%; 
} 
address, nav{ 
    display:table-cell; 
    vertical-align:bottom; 
    width:50%; 
} 

Ansicht der codepen hier: http://codepen.io/eoghanTadhg/pen/NNYgYg

+0

'nav' isn ' t wirklich im Mittelpunkt. – Aziz

+1

Danke Aziz, ich habe meine Antwort entsprechend aktualisiert. – EoghanTadhg

1

Ich wollte Ihnen zeigen, Diese Lösung, weil sie einige Ideen kombiniert, die manchmal als problematisch angesehen werden. Hier verwende ich die Tatsache, dass Inline-Block-Elemente standardmäßig vertikal um die letzte Zeile ihres Inhalts ausgerichtet sind. Das ist genau das, was du brauchst. Außerdem wird ein sichtbarer Überlauf eines Blocks mit einer Breite von Null verwendet, um den Nav-Inhalt horizontal innerhalb des umschließenden Blocks zu zentrieren.

nav { 
 
    text-align: center; 
 
    display:inline-block; 
 
    width:100%; 
 
    margin-left:-0.25em; 
 
} 
 
address { 
 
    display:inline-block; 
 
    width:0; 
 
} 
 
address > * { 
 
    white-space: nowrap; 
 
}
<address> 
 
    <a href="#">Some text</a> 
 
    <br> 
 
    <span>hi(at)mail.com</span> 
 
</address> 
 

 
<nav> 
 
    <a href="#">about</a> 
 
</nav>

+0

Ihre Antwort funktioniert am besten für mich, ich hätte sie nie selbst finden können, danke. Es gibt nur ein Problem: Es hat zuerst nicht funktioniert, weil ich Buchstabenabstand auf dem Body-Tag hatte. Denken Sie, dass diese Lösung praktikabel ist, weil Sie über promematic Ideen sprechen? – kay

+0

Die Lösung ist nicht für Buchstabenabstände empfindlich, außer dass Sie möglicherweise die Einstellung für den linken Rand anpassen müssen, aber eine neue Frage stellen, wenn Sie Probleme haben. – Alohci