2014-09-05 5 views
0

Я пытаюсь создать заголовок с поисковым вводом и именем пользователя рядом друг с другом. Поскольку имя пользователя может быть очень длинным, вход поиска должен варьироваться в зависимости от ширины (а также от имени пользователя). Как на картинке ниже:Два divs с динамической шириной вместе

dynamic width

<div class="container"> 
    <div class="left" style="width: 80%">DYNAMIC WIDTH - search input</div> 
    <div class="right" style="width: 20%">SHORT NAME</div> 
</div> 

codepen является here.

Я устанавливаю там ширину вручную (80% и 20%, или 70% и 30%), я хочу, чтобы она динамически менялась в зависимости от длины имени, и оба div должны составлять 100%.

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

+0

Я не понимаю, что вы пытаетесь достичь, не очень понятно? – Haris

+0

возможно, что вы хотите, это стиль 'display: inline-block'? – Kyojimaru

+0

Извините, Гарри, я отредактирую вопрос, чтобы быть более ясным. Но, как вы можете видеть, я устанавливаю ширину вручную там (80% и 20%), я хочу, чтобы она динамически изменялась в соответствии с длиной имени –

ответ

2

Это проще установить их в качестве display: table-cell элементов, так как клетки регулировать их ширину, чтобы соответствовать родителя.

Если вы установите left дел до width: 100% он всегда будет оставшееся пространство, оставленное right DIV:

http://jsfiddle.net/fzmj5q2r/

.container { 
    display: table; 
    width: 100%; 
} 

.left { 
    display: table-cell; 
    width: 100%; 
    background: red; 
} 

.right { 
    display: table-cell; 
    background: green; 
    white-space: nowrap; 
} 
+0

Вот что я искал, спасибо! –

+0

Есть ли способ использовать многоточие, если текст слишком длинный в левой части? –

0

Вы пробовали устанавливать поля на авто? Как так:

<div style="margin-left:auto; margin-right: auto;">Sample Text</div> 
+0

Это не работает ... Оба div вместе (имя и поиск ввод) должны составлять 100%. –

0

http://codepen.io/stephenbe/pen/KhDJw

Все, что я сделал, есть обертка, внутри ввода и имя ... имя над входным текстом

Скажи мне, если это решение, которое работает для вас

.name { 
    position:absolute; 
    right:0; 
    top:0; 
    height:100%; 
    background:red; 

    padding:20px; 
    vertical-align:middle; 

    box-sizing:border-box; 

} 
+0

Спасибо за ваш ответ, Стивен. Но я не знаю, понял ли ваш ваш .name div над входом. Поэтому, если я помещу длинную строку в поле ввода, она будет скрыта красным .name div. –

+1

Да, как решение для настольных клеток лучше! Рад, что ты нашел свой ответ :) – Stephen