Как я могу центрировать элементы с плавающей точкой?
Я использую разбиение на страницы, и это нужно сосредоточить. Проблема в том, что ссылки должны отображаться как блокированные, поэтому их нужно плавать. Но тогда 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 -->
Ответы
Ответ 1
Удаление 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 -->
Ответ 2
Поскольку многие годы я использую старый трюк, который я узнал в каком-то блоге, мне жаль, что я не помню названия, чтобы дать ему кредиты.
В любом случае, чтобы центрировать плавающие элементы, это должно работать:
Вам нужна такая структура:
.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>
Ответ 3
Центрирование поплавков легко. Просто используйте стиль для контейнера:
.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:
Сильные стороны:
- работает для многострочных элементов.
Weknesses:
-
промежутки между элементами встроенного блока - он работает так же, как пробел между словами. Это может вызвать некоторые проблемы, связанные с расчетом ширины контейнера и границ стилизации. Ширина зазоров не постоянна, но специфична для браузера (4-5px).
Чтобы избавиться от этих пробелов, я бы добавил к коде arnaud576875 (не полностью протестирован):
.pagination {word-spacing: -1em; }
.pagination a {word-spacing:.1em; }
-
он не будет работать в IE6/7 по элементам блока и списка элементов
Ответ 4
Установите контейнер width
в px
и добавьте:
margin: 0 auto;
Ссылка.
Ответ 5
Использование 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 -->
Ответ 6
Я думаю, что лучший способ - использовать margin
вместо display
.
то есть:.
.pagination a {
margin-left: auto;
margin-right: auto;
width: 30px;
height: 30px;
background: url(/images/structure/pagination-button.png);
}
Проверьте результат и код:
http://cssdeck.com/labs/d9d6ydif
Ответ 7
IE7 не знает inline-block
.
Вы должны добавить:
display:inline;
zoom: 1;
Ответ 8
text-align: center;
float: none;
Ответ 9
Добавьте к этому стиль
position:relative;
float: left;
left: calc(50% - *half your container length here);
* Если ширина вашего контейнера равна 50px, поставьте 25px, если это 10em, введите 5em.
Ответ 10
<!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>
шаг 1
создайте два или более div, которые хотите, и дайте им определенную ширину, равную 100px для каждого, а затем поместите ее влево или вправо
шаг 2
затем деформируйте эти два div в другом div и дайте ему ширину 200 пикселей. для этого div примените margin auto. бум работает очень хорошо. проверьте приведенный выше пример.
Ответ 11
Просто добавив
left:15%;
в мое меню css
#menu li {
float: left;
position:relative;
left: 15%;
list-style:none;
}
тоже сделал центрирующий трюк