我正在实施分页,它需要居中。问题是链接需要显示为块,因此需要浮动它们。但是,text-align: center;
对它们不起作用。我可以通过给左边的包装div填充来实现它,但是每个页面都有不同的页面数,所以这不起作用。这是我的代码:
.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 -->
为了得到这个想法,我想要的是:
答案 0 :(得分:378)
删除float
并使用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 spec:
[inline-block]导致元素生成内联级块容器。内联块的内部被格式化为块框,元素本身被格式化为原子内联级框。
答案 1 :(得分:143)
多年以来,我使用了一些我在博客中学到的老技巧,对不起,我不记得这个名字给了他信用。
无论如何中心浮动元素都应该有效:
你需要这样的结构:
.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>
诀窍是向左移动以使容器根据内容改变宽度。比较是位置问题:相对而且在两个容器上留下50%和-50%。
好处是这是跨浏览器,应该可以在IE7 +中运行。
答案 2 :(得分:30)
居中浮动很容易。只需使用容器样式:
.pagination{ display: table; margin: 0 auto; }
更改浮动元素的边距:
.pagination a{ margin: 0 2px; }
或
.pagination a{ margin-left: 3px; }
.pagination a.first{ margin-left: 0; }
并保持原样。
这是我展示菜单或分页等内容的最佳解决方案。
优势:
任何元素(块,列表项等)的跨浏览器
简单
弱点:
@ arnaud576875在这种情况下,使用内联块元素会很好(跨浏览器),因为分页只包含锚点(内联),没有列表项或div:
优势:
Weknesses:
内联块元素之间的间隙 - 它的工作方式与单词之间的空格相同。这可能会导致计算容器宽度和样式边距的麻烦。间隙宽度不是恒定的,而是浏览器特定的(4-5px)。 为了摆脱这个差距,我将添加到arnaud576875代码(未经过全面测试):
.pagination {word-spacing:-1em; }
.pagination a {word-spacing:.1em; }
它在块和列表项元素的IE6 / 7中不起作用
答案 3 :(得分:12)
答案 4 :(得分:8)
使用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);
}
&#13;
<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 -->
&#13;
答案 5 :(得分:4)
我认为最好的方法是使用margin
代替display
。
即:
.pagination a {
margin-left: auto;
margin-right: auto;
width: 30px;
height: 30px;
background: url(/images/structure/pagination-button.png);
}
检查结果和代码:
答案 6 :(得分:2)
IE7 不知道inline-block
。
你必须添加:
display:inline;
zoom: 1;
答案 7 :(得分:2)
text-align: center;
float: none;
答案 8 :(得分:1)
将此添加到造型
position:relative;
float: left;
left: calc(50% - *half your container length here);
*如果您的容器宽度为50px,则为25px,如果是10em则为5em。
答案 9 :(得分:1)
您也可以通过更改.pagination
来实现此目的,方法是将“ text-align:center”替换为两到三行css,以用于左对齐,变换和根据情况定位。
.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 -->
答案 10 :(得分:0)
<!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并给它们一个明确的宽度,如100px,然后向左或向右浮动
然后在另一个div中扭曲这两个div并给它宽度为200px。到这个div应用保证金自动。 繁荣它运作良好。检查上面的例子。
答案 11 :(得分:-1)
只需添加
left:15%;
进入我的css菜单
#menu li {
float: left;
position:relative;
left: 15%;
list-style:none;
}
也做了中心伎俩