Satır içi formda önyükleme tam genişlikte metin girişi


138

Konteyner alanımın tüm genişliğine uyan bir metin kutusu oluşturmak için uğraşıyorum .

<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>

Yukarıdakileri yaptığımda, iki form öğesi beklediğim gibi sıralı, ancak en iyi ihtimalle birkaç sütundan fazlasını almayın. col-md-12Firebug'daki div'ın üzerine gelmesi, beklenen tam genişliği aldığını gösterir. Sadece doldurulmayan metin girişi. Hatta bir satır içi genişliği değeri eklemeyi denedim ama hiçbir şey değişmedi. Bunun basit olması gerektiğini biliyorum, şimdi çok aptal hissediyorum.

İşte bir keman: http://jsfiddle.net/52VtD/4119/embedded/result/

DÜZENLE:

Seçilen cevap her şekilde ayrıntılı ve harika bir yardım. Sonunda bunu kullandım. Ancak ilk sorunum aslında Visual Studio 2013 içinde varsayılan MVC5 şablonu ile ilgili bir sorun olduğunu düşünüyorum. Site.css bu içeriyordu:

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

Açıkçası bu metin girişinin uygun şekilde genişlemesini engelliyordu ... Gelecekteki ASP.NET şablon kullanıcılarına adil uyarı ...


6
Ben sadece varsayılan MVC5 şablonu ile ilgili sorun hakkında bulma ikinci istiyorum. Ben sadece temiz bir HTML sayfası ile tekrar başlamak için beni teşvik jsfiddle çalışan bir örnek bulmadan önce bu sorunu araştırma ve (yanlış) Bootstrap küfür bir saat harcamak ve iyi çalıştı. Ancak o zaman VS2013 şablonu ile ilgili bir sorun olduğunu anladım ve bu yazıyla karşılaştım. İyilik, maksimum genişlik için kararın neden olduğunu bilir, ancak diğer insanların kodlarını kullanırken dikkatli olmanız gerektiğini gösterir. Bunun gibi bir sorunla karşılaştığında temel bilgilere geri dönmenin de bir kanıtı.
Jason Snelders

2
Teşekkürler, ayrıca asp.net şablonunu kullanarak, ancak girişin maksimum genişliğini zaten yok olarak ayarladım, ancak yine de tüm genişliği almıyor, sadece% 100'ü manuel olarak ayarladıysam. Ama sonra sağdaki düğme aşağı iniyor ve aynı çizgide kalmasını istiyorum.
Ronen Festinger

@Killnine Sorunuzdaki düzenleme baş ağrılarımı çözdü. Aslında sorun buydu, yayınınızı düzenlediğiniz için teşekkür ederiz!
Flame_Phoenix

Bu bit CSS'yi site.css dosyamdan kaldırdım ve hala aynı sorunu yaşıyorum. Herhangi bir fikir?
dave317

1
Dayuuumn! Bununla mücadele ve bir MVC sorunu çıkıyor! Metin kutusunun css özelliklerini denetlemediğim için ne kadar aptalım! Bunu işaret ettiğiniz için teşekkürler!
Hac

Yanıtlar:


99

Bootstrap dokümanlar bu konuda şunları söylüyor :

Özel genişlikler gerektirir Girişler, seçimler ve textareas, Bootstrap'ta varsayılan olarak% 100 genişliğindedir. Satır içi formu kullanmak için, içinde kullanılan form denetimlerinde bir genişlik ayarlamanız gerekir.

Onlar sınıf aldığımda tüm form elemanları olarak% 100'lük varsayılan genişliği alır form-controlkullanırsanız geçerli değildi form-inlineformunuzda sınıfı.

Bu bölümü bulacağınız bootstrap.css (ya da .less, neyi tercih ederseniz edin) konusuna bir göz atabilirsiniz:

.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%;
    }

    [...]
  }
}

Belki de giriş gruplarına bir göz atmalısınız , çünkü tam olarak kullanmak istediğiniz işaretlemeye sahipler ( burada keman çalışıyor ):

<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
Yukarıdaki düzenlememe bakın. ASP.NET şablonundaki Site.css bu konuda beni almış olabilir düşünüyorum. Ancak, bu müthiş bir cevaptır ve gelecekteki referans için çok yararlıdır.
Killnine

5
girdi grupları buna devam etmenin yoludur. Şahsen, girişin hemen yanındaki düğmeyi istemediğimde, giriş grubu stilini satır içi forma benzeyecek şekilde ayarlıyorum. Bootstrap LESS ile çalışma demosu dahil: jsfiddle.net/silb3r/gwxc5c75
cfx

1
Güzel! Sorunun bootstrap'a özgü olduğunu biliyorum, ancak başka biri bootstrapless (bootstrap LESS değil) sitesine bırakmak istiyorsa, ilgili stilleri burada çıkardım: stackoverflow.com/a/27413796/1241736
henry

Fiddle'daki Bootstrap bağlantısı koptu. Muhtemelen Bootstrap'ın yeni bir versiyonuna işaret ediyor ve Fiddle artık çalışmıyor.
Chloe

@Chloe Haklısın, keman artık var olmayan bir bootstrap css dosyası kullanıyordu. Kemanı yeni güncelledim, tekrar çalışıyor.
morten.c

32

böyle bir şeye bir göz atın:

<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

Benzer bir soruda belirtildiği gibi , input-groupsınıfın örneklerini kaldırmayı deneyin ve bunun yardımcı olup olmadığını görün.

önyükleme ile ilgili:

Tek tek form denetimleri otomatik olarak bazı genel stiller alır. .Form-kontrolüne sahip tüm metinsel öğeler ve öğeler genişliğe ayarlanmıştır:% 100; varsayılan olarak. Optimum aralık için etiketleri ve kontrolleri .form-grubuna sarın.


Mortgage başına bu satır içi formlar için geçerli değildir. Böylece,% 100 olmaya zorlamak için giriş grubuna ihtiyacınız var
user441058 13:18

3

İstediğiniz sonucu elde etmek için aşağıdaki gibi bir şey deneyin

input {
    max-width: 100%;
}

1

Bootstrap> 4.1 ile bu sadece flexbox yardımcı programı sınıflarını kullanmanın bir örneğidir. Sütunun içinde bir flexbox konteyneri var ve içindeki tüm elemanları "flex-fill" sınıfına ver. Satır içi formlarda olduğu gibi, öğelerin kenar boşluklarını / dolgusunu kendiniz ayarlamanız gerekir.

.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>

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.