Как я могу центрировать элементы с плавающей точкой?

Я использую разбиение на страницы, и это нужно сосредоточить. Проблема в том, что ссылки должны отображаться как блокированные, поэтому их нужно плавать. Но тогда 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 -->

Чтобы понять, чего я хочу:

alt text

310
22 янв. '11 в 16:10
источник поделиться
11 ответов

Удаление 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:

Встроенный блок помещается в строку (т.е. в той же строке, что и соседний контент), но он ведет себя как блок.

это часто может эффективно заменить float:

Реальное использование этого значения - это когда вы хотите задать встроенный элемент шириной. В некоторых случаях некоторые браузеры не допускают ширину для реального встроенного элемента, но если вы переключаетесь на отображение: встроенный блок, вы можете установить ширину. "(http://www.quirksmode.org/css/display.html#inlineblock).

Из спецификации W3C:

[inline-block] заставляет элемент генерировать контейнер блока на уровне строки. Внутренняя часть встроенного блока форматируется как блок-блок, а сам элемент форматируется как атомный встроенный блок.

360
22 янв. '11 в 16:15
источник

Поскольку многие годы я использую старый трюк, который я узнал в каком-то блоге, мне жаль, что я не помню названия, чтобы дать ему кредиты.

В любом случае, чтобы центрировать плавающие элементы, это должно работать:

Вам нужна такая структура:

    .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>

трюк дает float влево, чтобы контейнеры изменяли ширину в зависимости от содержимого. Это вопрос позиции: относительный и левый 50% и -50% на двух контейнерах.

Хорошо, что это кросс-браузер и должен работать от IE7 +.

133
02 февр. '14 в 11:22
источник

Центрирование поплавков легко. Просто используйте стиль для контейнера:

.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 по элементам блока и списка элементов

29
06 июня '13 в 0:32
источник

Установите контейнер width в px и добавьте:

margin: 0 auto;

Ссылка.

11
19 сент. '13 в 20:15
источник

Использование 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
25 янв. '17 в 10:28
источник

Я думаю, что лучший способ - использовать 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

3
28 мая '15 в 9:49
источник
text-align: center;
float: none;
2
22 февр. '15 в 13:34
источник

IE7 не знает inline-block. Вы должны добавить:

display:inline;
zoom: 1;
2
08 окт. '13 в 11:51
источник

Добавьте к этому стиль

position:relative;
float: left;
left: calc(50% - *half your container length here);

* Если ширина вашего контейнера равна 50px, поставьте 25px, если это 10em, введите 5em.

0
24 мая '17 в 0:00
источник
<!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. бум работает очень хорошо. проверьте приведенный выше пример.

0
06 апр. '18 в 16:58
источник

Просто добавив

left:15%; 

в мое меню css

#menu li {
float: left;
position:relative;
left: 15%;
list-style:none;
}

тоже сделал центрирующий трюк

-1
05 авг. '14 в 21:15
источник

Посмотрите другие вопросы по меткам или Задайте вопрос