Подтвердить что ты не робот

Два Divs в одной и той же строке и центре выравнивают их оба

У меня есть два divs, подобных этому

<div style="border:1px solid #000; float:left">Div 1</div>
<div style="border:1px solid red; float:left">Div 2</div>

Я хочу, чтобы они отображались в одной строке, поэтому я использовал float:left.

Я хочу, чтобы оба они были в центре страницы, поэтому я попытался обернуть их другим div, подобным этому

<div style="width:100%; margin:0px auto;">
  <div style="border:1px solid #000; float:left">Div 1</div>
  <div style="border:1px solid red; float:left">Div 2</div>
</div>

Но это не сработает. Если я изменил код на этот

<div style="width:100%; margin-left:50%; margin-right:50%">
  <div style="border:1px solid #000; float:left">Div 1</div>
  <div style="border:1px solid red; float:left">Div 2</div>
</div>

то он идет в центр, но горизонтальная полоса прокрутки есть, и кажется, что она тоже не центрирована.

Не могли бы вы любезно предложить мне, как я могу это достичь? Спасибо.

Изменить: я хочу, чтобы внутренний div (Div 1 и Div 2) был также центрирован.

4b9b3361

Ответ 1

Вы можете сделать это

<div style="text-align:center;">
    <div style="border:1px solid #000; display:inline-block;">Div 1</div>
    <div style="border:1px solid red; display:inline-block;">Div 2</div>
</div>  

http://jsfiddle.net/jasongennaro/MZrym/

  • оберните его в div с помощью text-align:center;
  • дайте innder div a display:inline-block; вместо float

Лучше также поставить этот CSS в таблицу стилей.

Ответ 2

Может ли это сделать для вас? Проверьте мой JSFiddle

И код:

HTML

<div class="container">
    <div class="div1">Div 1</div>
    <div class="div2">Div 2</div>
</div>

CSS

div.container {
    background-color: #FF0000;
    margin: auto;   
    width: 304px;
}

div.div1 {
    border: 1px solid #000;
    float: left;
    width: 150px;
}

div.div2 {
    border: 1px solid red;
    float: left;
    width: 150px;
}

Ответ 3

оба плавающих divs должны иметь ширину!

установите 50% ширины для обоих, и он работает.

BTW, внешний div, с его margin: 0 auto будет только центрировать себя не внутри.

Ответ 4

Я бы проголосовал против display: inline-block, поскольку он не поддерживается в браузерах, IE < 8.

.wrapper {
    width:500px; /* Adjust to a total width of both .left and .right */
    margin: 0 auto;
}
.left {
    float: left;
    width: 49%; /* Not 50% because of 1px border. */
    border: 1px solid #000;
}
.right {
    float: right;
    width: 49%; /* Not 50% because of 1px border. */
    border: 1px solid #F00;
}

<div class="wrapper">
    <div class="left">Div 1</div>
    <div class="right">Div 2</div>
</div>

РЕДАКТИРОВАТЬ: Если промежуток между ячейками не требуется, просто измените как .left, так и .right на использование float: left;

Ответ 5

Лучший способ до сих пор:

  • Если вы показываете отображение: встроенный блок; к внутренним divs, тогда дочерние элементы внутренних divs также получат это свойство и нарушают выравнивание внутренних div.

  • Лучше всего использовать два разных класса для внутренних divs с шириной, маркой и float.

Лучший способ до сих пор:

Используйте flexbox.

http://css-tricks.com/snippets/css/a-guide-to-flexbox/

Ответ 6

Пожалуйста, взгляните на flex, это поможет вам сделать все правильно,

в главном наборе div css display :flex

div, что внутри set css: flex:1 1 auto;

прилагается ссылка jsfiddle в качестве примера:)

https://jsfiddle.net/hodca/v1uLsxbg/