2015-04-11 2 views
2

Рассмотрим родителя <div>, который является position:relative; width:100%. Он содержит <div> и <input>. Я хочу, чтобы они имели ширину 100%.Сделайте div и ширину входа равным 100% от родителя

В идеале следует установить <div> (это настраиваемая кнопка), а <input> должен заполнить остальную часть ширины (подумайте о размере окна).

Возможно ли это без использования JS-кода?

Кроме того, это не обязательно, но я хочу поддерживать как можно больше с IE7 +.

КОД:

<div id="parent" style="position:relative; width:100%"> 
    <div id="button">Click</div> 
    <input type="text" id="txt_input" /> 
</div> 

ПОЯСНЕНИЯ:
Я могу использовать JavaScript, конечно. Если нет элегантного решения, то JS это так. Дай мне знать, пожалуйста.

ответ

1

Вы можете сделать это, не требуя дополнительных элементов HTML. Для современных браузеров используйте flexbox. Вот отличный список поддержки браузера для flexbox http://caniuse.com/#feat=flexbox.

#parent { 
 
    display:flex; 
 
} 
 
#button { 
 
    width:100px; 
 
    background:red; 
 
} 
 
#txt_input { 
 
    flex: 2; 
 
}
<div id="parent" style="position:relative; width:100%"> 
 
    <div id="button">Click</div> 
 
    <input type="text" id="txt_input" /> 
 
</div>

И для поддержки старых браузеров, вы можете использовать таблицу макет вместо:

#parent { 
 
    display:table; 
 
} 
 
#button { 
 
    background:red; 
 
    display:table-cell; 
 
    width:100px; 
 
} 
 
#txt_input { 
 
    display:table-cell; 
 
    width:100% 
 
}
<div id="parent" style="position:relative; width:100%"> 
 
    <div id="button">Click</div> 
 
    <input type="text" id="txt_input" /> 
 
</div>

+0

Как поддерживается отображение: flex для старых браузеров? –

+0

Не очень, см. Обновление для ответа для старых браузеров – CupawnTae

+0

@ DanielCheng Я также добавил детали поддержки версии браузера – CupawnTae

2

В этом случае поле размера коробки: пригодится. Предположим, что ширина вашей кнопки составляет 150 пикселей.

<div id="parent" style="position:relative; width:100%; padding-left: 150px; box-sizing: border-box;"> 
 
    <div id="button" style="position: absolute; top: 0; left: 0; width: 150px"> 
 
     Click 
 
    </div> 
 
    <div> 
 
     <input type="text" id="txt_input" style="width: 100%" /> 
 
    </div> 
 
</div>

+0

но вход не заполняет ширину Div в. – Elimination

+0

@Elimination обновил мой ответ в соответствии с вашими потребностями –

+3

@DanielCheng У нас есть похожие имена и та же китайская фамилия 張. : D –

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