私はページネーションを実装しています、そしてそれは中心に置かれる必要があります。問題は、リンクをブロックとして表示する必要があるため、フローティングにする必要があることです。しかし、それで、text-align: center;
はそれらに働きません。ラッパーのdivパディングをleftにすることで実現できますが、ページごとにページ数が異なるため、うまくいきません。これが私のコードです:
.pagination {
text-align: center;
}
.pagination a {
display: block;
width: 30px;
height: 30px;
float: left;
margin-left: 3px;
background: url(/images/structure/pagination-button.png);
}
.pagination a.last {
width: 90px;
background: url(/images/structure/pagination-button-last.png);
}
.pagination a.first {
width: 60px;
background: url(/images/structure/pagination-button-first.png);
}
<div class='pagination'>
<a class='first' href='#'>First</a>
<a href='#'>1</a>
<a href='#'>2</a>
<a href='#'>3</a>
<a class='last' href='#'>Last</a>
</div>
<!-- end: .pagination -->
アイデアを得るために、私が欲しいもの:
float
sを削除し、inline-block
を使用すると問題が解決する可能性があります。
.pagination a {
- display: block;
+ display: inline-block;
width: 30px;
height: 30px;
- float: left;
margin-left: 3px;
background: url(/images/structure/pagination-button.png);
}
(-
で始まる行を削除し、+
で始まる行を追加してください。)
.pagination {
text-align: center;
}
.pagination a {
+ display: inline-block;
width: 30px;
height: 30px;
margin-left: 3px;
background: url(/images/structure/pagination-button.png);
}
.pagination a.last {
width: 90px;
background: url(/images/structure/pagination-button-last.png);
}
.pagination a.first {
width: 60px;
background: url(/images/structure/pagination-button-first.png);
}
<div class='pagination'>
<a class='first' href='#'>First</a>
<a href='#'>1</a>
<a href='#'>2</a>
<a href='#'>3</a>
<a class='last' href='#'>Last</a>
</div>
<!-- end: .pagination -->
inline-block
は、要素が元々インライン要素である限り、IE6上でもクロスブラウザで動作します。
quirksmode からの引用
インラインブロックはインラインで(つまり、隣接するコンテンツと同じ行に)配置されますが、ブロックとして動作します。
これはフロートを効果的に置き換えることができます。
この値の実際の使い方は、インライン要素に幅を与えたいときです。状況によっては、実際のインライン要素の幅を許可していないブラウザもありますが、display:inline-blockに切り替えると、幅を設定できます。」( http://www.quirksmode.org/ css/display.html#inlineblock ).
W3C仕様から :
[inline-block]要素にインラインレベルのブロックコンテナを生成させます。インラインブロックの内側はブロックボックスとしてフォーマットされ、要素自体はアトミックインラインレベルボックスとしてフォーマットされます。
私は何年もの間私があるブログで学んだ古いトリックを使っているので、すみません私は彼に信用を与えるために名前を覚えていません。
とにかく浮遊要素を中心に置くためにこれは働くべきです:
このような構造が必要です。
.main-container {
float: left;
position: relative;
left: 50%;
}
.fixer-container {
float: left;
position: relative;
left: -50%;
}
<div class="main-container">
<div class="fixer-container">
<ul class="list-of-floating-elements">
<li class="floated">Floated element</li>
<li class="floated">Floated element</li>
<li class="floated">Floated element</li>
</ul>
</div>
</div>
トリックはコンテナーが内容に応じて幅を変えるように左へフロートを与えることです。それは位置の問題です:相対的で、2つのコンテナに50%と-50%を残しました。
良いことは、これはクロスブラウザであり、IE 7以降で動作するはずです。
フロートのセンタリングは簡単です 。コンテナのスタイルを使うだけです:
.pagination{ display: table; margin: 0 auto; }
浮動要素の余白を変更します。
.pagination a{ margin: 0 2px; }
または
.pagination a{ margin-left: 3px; }
.pagination a.first{ margin-left: 0; }
残りはそのままにしておきます。
メニューやページネーションのようなものを表示するのが私にとって最良の解決策です。
長所:
あらゆる要素(ブロック、リスト項目など)のクロスブラウザ
単純さ
弱点:
@ arnaud576875 inline-block 要素を使用すると、ページネーションにはアンカー(インライン)のみが含まれ、リスト項目やdivは含まれないため、(ブラウザ間で)うまく機能します。
長所:
短所:
インラインブロック要素間のギャップ - 単語間のスペースと同じように機能します。コンテナの幅とスタイルの余白の計算に問題が発生する可能性があります。ギャップ幅は一定ではありませんが、ブラウザによって異なります(4〜5ピクセル)。このギャップを解消するために、私はarnaud576875コードを追加します(完全にはテストされていません)。
.pagination {単語の間隔:-1em; }
。単語の間隔:.1em; }
iE6/7のblock要素とlist-items要素では動作しません
Flexの使い方
.pagination {
text-align: center;
display:flex;
justify-content:center;
}
.pagination a {
display: block;
width: 30px;
height: 30px;
float: left;
margin-left: 3px;
background: url(/images/structure/pagination-button.png);
}
.pagination a.last {
width: 90px;
background: url(/images/structure/pagination-button-last.png);
}
.pagination a.first {
width: 60px;
background: url(/images/structure/pagination-button-first.png);
}
<div class='pagination'>
<a class='first' href='#'>First</a>
<a href='#'>1</a>
<a href='#'>2</a>
<a href='#'>3</a>
<a class='last' href='#'>Last</a>
</div>
<!-- end: .pagination -->
私は最良の方法はmargin
の代わりにdisplay
を使うことだと思います。
イー。
.pagination a {
margin-left: auto;
margin-right: auto;
width: 30px;
height: 30px;
background: url(/images/structure/pagination-button.png);
}
結果とコードを確認してください。
IE7 inline-block
がわかりません。あなたが追加する必要があります:
display:inline;
zoom: 1;
text-align: center;
float: none;
これをあなたに追加する
position:relative;
float: left;
left: calc(50% - *half your container length here);
*あなたのコンテナの幅が50ピクセルの場合は25ピクセル、10センチの場合は5ピクセルとなります。
<!DOCTYPE html>
<html>
<head>
<title>float object center</title>
<style type="text/css">
#warp{
width:500px;
margin:auto;
}
.ser{
width: 200px;
background-color: #ffffff;
display: block;
float: left;
margin-right: 50px;
}
.inim{
width: 120px;
margin-left: 40px;
}
</style>
</head>
<body>
<div id="warp">
<div class="ser">
<img class="inim" src="http://123greetingsquotes.com/wp-content/uploads/2015/01/republic-day-parade-india-images-120x120.jpg">
</div>
<div class="ser">
<img class="inim" sr`enter code here`c="http://123greetingsquotes.com/wp-content/uploads/2015/01/republic-day-parade-india-images-120x120.jpg">
</div>
</div>
</body>
</html>
必要なdivを2つ以上作成し、それぞれに100pxのような一定の幅を与えてから左右に浮動
次に、これら2つのdivを別のdivにワープして200ピクセルの幅にします。このdivにmargin autoを適用します。それはかなりうまくいきます。上記の例を確認してください。
これを行うには、left、transform、および状況に応じてpositionを "text-align:center"を2〜3行のcssに置き換えて.pagination
を変更します。
.pagination {
left: 50%; /* left-align your element to center */
transform: translateX(-50%); /* offset left by half the width of your element */
position: absolute; /* use or dont' use depending on element parent */
}
.pagination a {
display: block;
width: 30px;
height: 30px;
float: left;
margin-left: 3px;
background: url(/images/structure/pagination-button.png);
}
.pagination a.last {
width: 90px;
background: url(/images/structure/pagination-button-last.png);
}
.pagination a.first {
width: 60px;
background: url(/images/structure/pagination-button-first.png);
}
<div class='pagination'>
<a class='first' href='#'>First</a>
<a href='#'>1</a>
<a href='#'>2</a>
<a href='#'>3</a>
<a class='last' href='#'>Last</a>
</div>
<!-- end: .pagination -->