私は、メインの親(ウィンドウまたはボディ)に関してアイテムが中央に配置されるように、水平方向のリストを中央に配置しようとしています。私はどのような種類とどのくらいのアイテムが私はそのリストに生成されますかわからないので、私はそれらのすべてを参照することができますので、幅とリストがスクロール可能な動的にする必要があります。動的な幅の項目を完全に中心とする水平スクロール可能リスト
これまでの試みはうまくいきました。私は、中心にない動的な幅の項目を持つ中心リストと、幅が固定された項目を持つ完全に中心のスクロール可能なリストです。
ul {
width: 100%;
overflow-x: scroll;
overflow-y: hidden;
white-space: nowrap;
}
li {
display: inline-block;
}
を次にセンタリングを<div>
に<ul>
ラッピング、及び代わり<ul>
の<ul>
が<li>
スクロール<div>
スクロールすることによって行われる。
核となるアイデアは、基本的に使用することによって達成されます。私は私のリストがで余分なスペースを持ってしたくないとして:それは考え方が少しひねりを加えたtranslateX(-50%)
を使用することで、幅を中心とする項目については<ul>
div {
width: 100%;
overflow-x: scroll;
overflow-y: hidden;
white-space: nowrap;
}
ul {
margin: 0 50%;
}
li {
display: inline-block;
}
に%ベースの余白を追加することができますスクロールの最後に、最後のアイテムを絶対的な位置に配置してフローから最後のアイテムを削除します。そのように、幅はアイテムの幅からアイテムを差し引いたもののように見えます。
ul {
position: relative;
margin: 0 50%;
}
li {
display: inline-block;
width: some_number;
transform: translateX(-50%);
}
li:last-child {
position: absolute;
left: 100%;
}
しかし、どのようにそのように幅を設定せずに、それを維持するためには、私には謎です。
そこに任意のアイデア?
は、ここでCSSのセクションでいくつかのコメントと私のバイオリンです:https://jsfiddle.net/11gkrju0/は
私はそれがスタイリングの問題だけであるようないは全くそのためにJavaScriptを使用したいのですが、DOMをいじりすることです完全に実行可能なオプションです。