Ich versuche, eine horizontale Liste zentriert zu machen, mit seinen Elementen zu zentriert werden auch in Bezug auf die Hauptelternteil (das Fenster oder Körper); Und weil ich nicht weiß, welche Art und wie viele Elemente ich in diese Liste generiert habe, müsste ich die Elemente dynamisch in der Breite und die Liste scrollbar machen, damit ich sie alle durchsuchen kann.horizontal scrollbare Liste voll zentriert mit dynamischen Breite Elemente
Meine bisherigen Versuche sind gut, ich bekomme entweder: eine zentrierte Liste mit nicht zentrierten Elementen von dynamischer Breite; und eine vollständig zentrierte scrollbare Liste mit Elementen fester Breite.
ul {
width: 100%;
overflow-x: scroll;
overflow-y: hidden;
white-space: nowrap;
}
li {
display: inline-block;
}
Dann wird das Zentrieren wird durch Wickeln des <ul>
in eine <div>
, und macht die <div>
scroll die <ul>
anstelle des <ul>
Scrollen der <li>
:
Der Kerngedanke wird durch die Verwendung im wesentlichen erreicht. Es ermöglicht% basierend Margen der <ul>
div {
width: 100%;
overflow-x: scroll;
overflow-y: hidden;
white-space: nowrap;
}
ul {
margin: 0 50%;
}
li {
display: inline-block;
}
Für Elemente hinzufügen, indem Breite zentriert werden, ist die Idee, translateX(-50%)
mit einem kleinen Twist zu verwenden: wie ich bei dem zusätzlichen Platz haben, nicht die Liste wollen Ende des Scrollens entferne ich das letzte Element aus dem Fluss, indem ich es am Ende absolut positioniere; Auf diese Weise sieht die Breite <ul>
wie die Summe der Elemente Breite minus ein Element aus.
ul {
position: relative;
margin: 0 50%;
}
li {
display: inline-block;
width: some_number;
transform: translateX(-50%);
}
li:last-child {
position: absolute;
left: 100%;
}
Aber wie es so zu halten, ohne die Breite Einstellung ist mir ein Rätsel.
Irgendwelche Ideen da draußen?
Hier ist meine Geige mit einigen Kommentaren in dem CSS-Abschnitt: https://jsfiddle.net/11gkrju0/
Ich mag würde nicht Javascript zu verwenden überhaupt für das, wie es nur eine Frage des Styling ist, aber mit dem dom Messing ist eine absolut brauchbare Option.
Dank allen für das Lesen,