2014-01-22 3 views
1

У меня есть следующий HTML:Как вы можете ввести родительский элемент ввода?

<div class="container"> 
    <form> 
     <input class="search" type="text" /> 
     <button class="submit" type="submit">Go</button> 
    </form> 
</div> 

Я пытаюсь сделать ввод текста заполняйте до размера контейнера, за вычетом ширины кнопки Go, которая будет рядный справа. Тем не менее, я не могу получить ввод, чтобы заполнить ширину контейнера. У меня есть следующий CSS (упрощенный):

.container { 
    height: 100%; 
    position: relative; 
    width: 100%; 
} 

.search { 
    left: 0; 
    position: absolute; 
    right: 40px; 
} 

.submit { 
    position: absolute; 
    right: 0; 
    width: 40px; 
} 

, производящие следующая конструкция:

enter image description here

Как я на самом деле получить, что внутреннее текстовое поле, чтобы заполнить всю ширину родителя? Без использования%, так как мне нужно, чтобы он растянулся прямо до кнопки и не стал дальше.

+1

добавить 'ширина: известково (100% - 40px) 'в классе поиска ... вуаля !! :) – NoobEditor

+0

Использование функции calc связано с откатом некоторых старых браузеров, поэтому я предпочел бы более поддерживаемый ответ, если он существует, даже если он немного сложнее. – Chaseph

+0

Используйте javascript/jquery, чтобы сделать расчет для вас. – Madmenyo

ответ

0

я понял, как сделать это с кросс-браузерный CSS:

Я завернул вход в дополнительный DIV:

<div class="container"> 
    <form> 
     <div class="search-padder"> 
      <input class="search" type="text" /> 
     </div> 
     <button class="submit" type="submit">Go</button> 
    </form> 
</div> 



.container { 
    height: 100%; 
    position: relative; 
    width: 100%; 
} 

.search-padder { 
    padding-right: 40px; 
    width: 100%; 
} 

.search { 
    width: 100%; 
} 

.submit { 
    position: absolute; 
    right: 0; 
    top: 0; 
    width: 40px; 
} 
0

, если вы не используете javascript или calc, поле ввода будет перекрываться под кнопкой, потому что оно установлено в px и input в процентах!

.search { 
    left: 0; 
    position: absolute; 
    right: 60px; 
    width:90%; /* this is the deal here*/ 
} 

to get you started

0

Для Mozzila добавить следующие CSS в .search

width: -moz-available; 
0

я бы просто пойти с Jquery.

$(document).ready(function(){ 
    var inputWidth = $('.container').width() - $('.submit').width(); 
    $('input').css('width', inputWidth);   
}); 
+0

вопрос не помечен jquery ... вот почему я избегал решения js !! :) – NoobEditor

+0

Thsts ок. Это самый чистый и элегантный способ с наибольшим контролем. Зачем избегать js, когда он настолько силен? – Madmenyo

+0

даже я согласен с jquery ... но мы не знаем наверняка, какие требования OP ... в противном случае JQ всегда является первым вариантом! ;) – NoobEditor

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