인라인 형태의 부트 스트랩 전폭 텍스트 입력


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-12firebug 에서 div 위로 마우스를 가져 가면 예상 전체 너비를 차지합니다. 채우지 않는 텍스트 입력일뿐입니다. 인라인 너비 값을 추가하려고 시도했지만 아무것도 변경되지 않았습니다. 나는 이것이 단순해야한다는 것을 알고 있습니다.

여기 바이올린이 있습니다 : http://jsfiddle.net/52VtD/4119/embedded/result/

편집하다:

선택된 답변은 모든면에서 철저하고 훌륭한 도움입니다. 내가 결국 사용했던 것입니다. 그러나 초기 문제는 실제로 Visual Studio 2013의 기본 MVC5 템플릿에 문제가 있다고 생각합니다. Site.css에 다음이 포함되어 있습니다.

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

분명히 그것은 텍스트 입력이 적절하게 확장되는 것을 막고있었습니다 ... 미래의 ASP.NET 템플릿 사용자에게 공정한 경고 ...


6
기본 MVC5 템플릿의 문제에 대해 두 번째로 찾은 결과입니다. jsfiddle에서 깨끗한 HTML 페이지로 다시 시작하라는 샘플을 발견하기 전에이 문제를 연구하고 Bootstrap에서 (거짓) 저주를 보냅니다. 그런 다음에야 VS2013 템플릿에 문제가 있다고 생각 하고이 게시물을 보았습니다. Goodness는 왜 최대 너비에 대한 결정이 필요한지 알고 있지만 다른 사람의 코드를 사용할 때는주의해야합니다. 또한 이와 같은 문제가 발생했을 때 기본으로 돌아가는 증거입니다.
Jason Snelders 2016 년

2
감사합니다, asp.net 템플릿도 사용하지만 이미 최대 입력 너비를 none으로 설정했지만 수동으로 100 %로 설정해야만 전체 너비를 사용하지는 않습니다. 그러나 오른쪽에있는 버튼이 내려 가고 같은 줄에 머물기를 원합니다.
Ronen Festinger

@Killnine 귀하의 질문에 대한 편집으로 두통이 해결되었습니다. 사실 문제였습니다. 게시물을 편집 해 주셔서 감사합니다!
Flame_Phoenix

site.css 파일에서 CSS를 제거했지만 여전히 동일한 문제가 있습니다. 어떤 아이디어?
dave317

1
Dayuuumn! 이 문제로 어려움을 겪고 MVC 문제로 밝혀졌습니다! 텍스트 상자의 CSS 속성을 검사하지 않은 것은 얼마나 어리석은 일입니까! 이것을 지적 해 주셔서 감사합니다!
Hajjat

답변:


99

부트 스트랩 문서 는 이것에 대해 말합니다 :

사용자 정의 너비 필요 부트 스트랩에서 입력, 선택 및 텍스트 영역의 너비는 기본적으로 100 %입니다. 인라인 양식을 사용하려면 사용 된 양식 컨트롤에서 너비를 설정해야합니다.

폼에서 클래스 form-control를 사용하는 경우 form-inline클래스를 적용 했을 때 모든 폼 요소가 적용되므로 기본 너비는 100 % 입니다.

이 부분을 찾을 수있는 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%;
    }

    [...]
  }
}

아마도 당신은 input-groups을 살펴보아야 할 것입니다. 왜냐하면 그들은 그들이 사용하고자하는 마크 업을 정확하게 가지고 있기 때문입니다 ( 여기서 바이올린 사용 ).

<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
위의 편집 내용을 참조하십시오. ASP.NET 템플릿의 Site.css 가이 문제를 해결할 수 있다고 생각합니다. 그러나 이것은 훌륭한 답변이며 향후 참조에 매우 유용합니다.
Killnine

5
입력 그룹이이 작업을 수행하는 방법입니다. 개인적으로 입력 옆에 버튼을 즉시 원하지 않으면 입력 그룹 스타일을 조정하여 인라인 양식과 비슷합니다. Bootstrap LESS를 사용한 실무 데모 포함 : jsfiddle.net/silb3r/gwxc5c75
cfx

1
좋은! 나는 질문이 부트 스트랩 관련이라는 것을 알고 있지만 다른 누군가가 부트 스트랩이없는 (bootstrap LESS가 아닌) 사이트에 드롭하고 싶다면 관련 스타일을 여기에서 추출했습니다 : stackoverflow.com/a/27413796/1241736
헨리

바이올린의 부트 스트랩 링크가 손상되었습니다. 아마도 새로운 버전의 부트 스트랩을 가리키고 있으며 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을 가진 모든 textual, 및 요소는 width : 100 %; 기본적으로. 최적의 간격을 위해 레이블과 컨트롤을 .form-group으로 감싸십시오.


morten 당 이것은 인라인 형식에는 적용되지 않습니다. 따라서 입력 그룹을 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>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.