Повнорозмірне введення тексту в завантажувальному форматі в межах вбудованої форми


138

Я намагаюся створити текстове поле, яке відповідає всій ширині моєї контейнерної області.

<div class="row">
    <div class="col-md-12">
        <form class="form-inline" role="form">           
                <input type="text" class="form-control input-lg" id="search-church" placeholder="Your location (City, State, ZIP)">
                <button type="submit" class="btn btn-lg">Search</button>            
        </form>
    </div>
</div>

Коли я роблю вищезазначене, два форми форми є строковими, як я очікую, але не займають більше кількох стовпців, в кращому випадку. Наведення курсор на col-md-12діву в firebug показує, що вона займає очікувану повну ширину. Це, здається, не просто заповнення тексту. Я навіть спробував додати значення рядкової ширини, але це нічого не змінило. Я знаю, що це повинно бути просто, просто відчуваю себе справді німим.

Ось загадка: http://jsfiddle.net/52VtD/4119/embedded/result/

Редагувати:

Вибрана відповідь ґрунтовна у всіх відношеннях та чудова допомога. Це те, що я в кінцевому підсумку використав. Однак я думаю, що моя початкова проблема була насправді проблемою з шаблоном MVC5 за замовчуванням у Visual Studio 2013. Він містив це в Site.css:

input,
select,
textarea {
    max-width: 280px;
}

Очевидно, це блокувало належне розширення введення тексту ... Справедливе попередження для майбутніх користувачів шаблону ASP.NET ...


6
Я просто хочу передати ваше висновок про проблему з шаблоном MVC5 за замовчуванням. Я просто витрачав годину на дослідження цієї проблеми і (помилково) проклинаючи Bootstrap, перш ніж я знайшов робочий зразок у jsfiddle, який підштовхнув мене знову почати з чистої HTML-сторінки, і вона спрацювала чудово. Лише тоді я зрозумів, що виникла проблема з шаблоном VS2013 і натрапив на цю посаду. Доброта знає, чому рішення для максимальної ширини, але воно показує, що ви повинні бути обережними, коли використовуєте код інших людей. Це також заповіт повернутися до основ, коли дотримується подібного питання.
Джейсон Снелдерс

2
Дякую, також використовую шаблон asp.net, але я вже встановив максимальну ширину введення до жодної, але він все ще не приймає всієї ширини, тільки якщо я встановив його на 100% вручну. Але потім кнопка праворуч на неї спускається, і я хочу, щоб вона залишалася в тому ж рядку.
Ронен Фестінгер

@Killnine Правка у вашому запитанні вирішила мої головні болі. Насправді це була проблема, дякую, що ви редагували свою публікацію!
Flame_Phoenix

Я видалив цей біт CSS з мого файлу site.css, і я все ще маю ту саму проблему. Будь-які ідеї?
dave317

1
День! З цим боролися і виявилося, що це питання MVC! Як я дурний, що не перевіряв властивості css текстового поля! Дякуємо, що вказали на це!
Хаджат

Відповіді:


99

Про це говорить документація завантажувача :

Потрібна власна ширина Введення, вибір і текстові області за замовчуванням у Bootstrap ширяються на 100%. Щоб використовувати вбудовану форму, вам доведеться встановити ширину на елементах управління формами, які використовуються всередині.

Ширина за замовчуванням 100%, оскільки всі елементи форми отримують, коли вони отримали клас form-control, не застосовуються, якщо ви використовуєте form-inlineклас у формі.

Ви можете поглянути на bootstrap.css (або .less, що завгодно), де ви знайдете цю частину:

.form-inline {

  // Kick in the inline
  @media (min-width: @screen-sm-min) {
    // Inline-block all the things for "inline"
    .form-group {
      display: inline-block;
      margin-bottom: 0;
      vertical-align: middle;
    }

    // In navbar-form, allow folks to *not* use `.form-group`
    .form-control {
      display: inline-block;
      width: auto; // Prevent labels from stacking above inputs in `.form-group`
      vertical-align: middle;
    }
    // Input groups need that 100% width though
    .input-group > .form-control {
      width: 100%;
    }

    [...]
  }
}

Можливо, вам слід поглянути на групи введення , оскільки, мабуть, у них є саме розмітка, яку ви хочете використовувати (робоча скрипка тут ):

<div class="row">
   <div class="col-lg-12">
    <div class="input-group input-group-lg">
      <input type="text" class="form-control input-lg" id="search-church" placeholder="Your location (City, State, ZIP)">
      <span class="input-group-btn">
        <button class="btn btn-default btn-lg" type="submit">Search</button>
      </span>
    </div>
  </div>
</div>

3
Дивіться мою редакцію вище. Я думаю, що Site.css в шаблоні ASP.NET, можливо, потрапив до мене на цьому. Однак це надзвичайна відповідь і дуже корисна для подальшого ознайомлення.
Killnine

5
Групи введення - це шлях для цього. Особисто я підлаштовую стиль групи введення, щоб він нагадував вбудовану форму, коли я не хочу, щоб кнопка була безпосередньо біля вводу. Робоча демонстрація з Bootstrap LESS включала: jsfiddle.net/silb3r/gwxc5c75
cfx

1
приємно! Я знаю, що питання стосується завантаження, але якщо хтось хоче перенести його на завантажувальний (не завантажувальний МЕНШИЙ) сайт, я витягнув тут відповідні стилі: stackoverflow.com/a/27413796/1241736
Хенрі

Посилання Bootstrap у Fiddle розірвано. Можливо, це вказує на нову версію Bootstrap і Fiddle вже не працює.
Хлоя

@Chloe Ви маєте рацію, скрипка використовувала css-файл завантажувального файлу, якого більше не існує. Я лише оновив скрипку, вона знову працює.
morten.c

32

подивіться на щось подібне:

<form role="form">  
    <div class="row">
      <div class="col-xs-12">
        <div class="input-group input-group-lg">
            <input type="text" class="form-control" />
          <div class="input-group-btn">
            <button type="submit" class="btn">Search</button>
          </div><!-- /btn-group -->
        </div><!-- /input-group -->
      </div><!-- /.col-xs-12 -->
    </div><!-- /.row -->
</form>

http://jsfiddle.net/n6c7v/1/


10

Як зазначено в аналогічному запитанні , спробуйте видалити екземпляри input-groupкласу і подивіться, чи це допомагає.

перегляд завантажувальної програми:

Окремі елементи управління автоматично отримують деяку глобальну стилізацію. Всі текстові, та елементи з .form-control встановлюються на ширину: 100%; за замовчуванням. Оберніть етикетки та елементи керування у .form-групі для оптимального інтервалу.


Щомісяця це не стосується вкладених форм. Таким чином, вам потрібна група введення, щоб змусити її бути 100%
user441058

3

Спробуйте щось подібне нижче, щоб досягти бажаного результату

input {
    max-width: 100%;
}

1

З Bootstrap> 4.1 це лише випадок використання класів утиліти flexbox. Просто розмістіть контейнер flexbox всередині свого стовпця, а потім надайте всім елементам в ньому клас "flex-fill". Як і для вбудованих форм, вам потрібно буде самостійно встановити поля / накладки на елементи.

.prop-label {
    margin: .25rem 0 !important;
}

.prop-field {
    margin-left: 1rem;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<div class="row">
	<div class="col-12">
		<div class="d-flex">
			<label class="flex-fill prop-label">Label:</label>
			<input type="text" class="flex-fill form-control prop-field">
		</div>
	</div>
</div>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.