2017-02-08 5 views
0

У меня есть контейнер div и два дочерних divs с float: right.float: прямо в правильном порядке он отображается в HTML-коде

Мой код выглядит следующим образом:

<div class="container">    .container {width: 50%} 
    <div class="a"></div>    .a, .b { float: right } 
    <div class="b"></div> 
</div> 

семантически, я должен видеть [ [A][B]] на моей странице, но он показывает, как [ [B][A]]

Я понимаю, что я могу просто изменить порядок свой HTML и положить В первый если я хочу увидеть первый, но это не очень семантически правильно. Каков правильный способ сделать это?

+1

Поскольку ваш [A] пред [B]. он тоже плавает. Вы можете использовать дисплей flex или отображать встроенный блок. – Vincent

+0

Скорее всего, вы также хотите '.a, .b' иметь ширину 50% – Ibu

+0

Да, но для простоты я оставил их на этот вопрос – penu

ответ

3

Вы можете использовать Flexbox и justify-content: flex-end;

.container { 
 
    background: #eee; 
 
    width: 50%; 
 
    display: flex; 
 
    justify-content: flex-end; 
 
}
<div class="container">    
 
    <div class="a">a</div> 
 
    <div class="b">b</div> 
 
</div>

Или установить ребенок дивы в display: inline-block; и использовать text-align на контейнер для выравнивания вправо.

.container { 
 
    background: #eee; 
 
    width: 50%; 
 
    text-align: right; 
 
} 
 
.container > div { 
 
    display: inline-block; 
 
}
<div class="container">    
 
    <div class="a">a</div><div class="b">b</div> 
 
</div>

И еще одно решение было бы ввести новый элемент, чтобы обернуть дочерние элементы, поплавок новый элемент вправо, а затем плавать дети ушли.

.container { 
 
    background: #eee; 
 
    width: 50%; 
 
    text-align: right; 
 
    overflow: auto; 
 
} 
 
.inner { 
 
    float: right; 
 
} 
 
.inner > div { 
 
    float: left; 
 
}
<div class="container"> 
 
    <div class="inner"> 
 
    <div class="a">a</div> 
 
    <div class="b">b</div> 
 
    </div> 
 
</div>

+0

Спасибо, ответ Flex был сработал. Встроенный блок не был, хотя, поскольку divs более сложны и имеют границы и paddings – penu

+0

@penu удивительный, пожалуйста. вы можете использовать границы и paddings на встроенных блочных элементах btw. –

+0

@penu обновил мой ответ и другим решением. –

-1

Плавающий ваши элементы прямо закажет их с последним ДИВ первым. Попробуйте выложить их обоих.

.a, .b 
{ 
float: left; 
} 
+0

Это будет показывать '[[A] [B]]' not '[[A] [B]]', что я хочу – penu

+0

@penu вы планируете заполнить дополнительное пространство? например '[[A] [B]]' – Ibu

+0

нет, я не планирую – penu

0
.container { 
    width: 100%; 
} 
.container div { 
    float:right; 
    width: 50%; 
} 
+0

это не работает – penu

Смежные вопросы