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

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

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