Bootstrap full-width text-input within inline-form

后端 未结 5 1718
甜味超标
甜味超标 2020-11-30 22:28

I am struggling to create a textbox that fits the entire width of my container area.

相关标签:
5条回答
  • 2020-11-30 23:04

    As stated in a similar question, try removing instances of the input-group class and see if that helps.

    refering to bootstrap:

    Individual form controls automatically receive some global styling. All textual , , and elements with .form-control are set to width: 100%; by default. Wrap labels and controls in .form-group for optimum spacing.

    0 讨论(0)
  • 2020-11-30 23:14

    have a look at something like this:

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

    0 讨论(0)
  • 2020-11-30 23:15

    The bootstrap docs says about this:

    Requires custom widths Inputs, selects, and textareas are 100% wide by default in Bootstrap. To use the inline form, you'll have to set a width on the form controls used within.

    The default width of 100% as all form elements gets when they got the class form-control didn't apply if you use the form-inline class on your form.

    You could take a look at the bootstrap.css (or .less, whatever you prefer) where you will find this part:

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

    Maybe you should take a look at input-groups, since I guess they have exactly the markup you want to use (working fiddle here):

    <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>
    
    0 讨论(0)
  • 2020-11-30 23:17

    With Bootstrap >4.1 it's just a case of using the flexbox utility classes. Just have a flexbox container inside your column, and then give all the elements within it the "flex-fill" class. As with inline forms you'll need to set the margins/padding on the elements yourself.

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

    0 讨论(0)
  • 2020-11-30 23:24

    Try something like below to achieve your desired result

    input {
        max-width: 100%;
    }
    
    0 讨论(0)
提交回复
热议问题