입력 상자에 부트 스트랩 글 리피 콘 추가


340

텍스트 유형 입력 상자에 글리프 콘을 추가하려면 어떻게합니까? 예를 들어 사용자 이름 입력에 'icon-user'를 넣고 싶습니다.

여기에 이미지 설명을 입력하십시오


5
이것은 내 대안 솔루션입니다 (2014 년) JSFiddle [ jsfiddle.net/rcotrina94/cyCFS/272 ]
— Richard Cotrina

파티에 늦었지만 내 대답을 확인하십시오. 그 효과를 얻기 위해 부트 스트랩 만 사용하고 색상과 테두리를 변경하려면 두 줄의 CSS를 사용하고 있습니다. 그것은 응답 섹션에서 논의 된 다른 문제 해결 stackoverflow.com/a/40945821/2914407을
— Dheeraj

답변:


755

부트 스트랩없이 :

잠시 후에 부트 스트랩에 접근 할 것입니다. 그러나이 작업을 수행하기위한 기본 CSS 개념이 있습니다. 로 먹이의 수염이 지적 , 당신은 절대적으로 입력 요소의 아이콘 내부를 배치하여 CSS와 함께이 작업을 수행 할 수 있습니다. 그런 다음 텍스트가 아이콘과 겹치지 않도록 양쪽에 패딩을 추가하십시오.

따라서 다음 HTML의 경우 :

<div class="inner-addon left-addon">
    <i class="glyphicon glyphicon-user"></i>
    <input type="text" class="form-control" />
</div>

다음 CSS를 사용하여 글리프를 왼쪽과 오른쪽으로 맞출 수 있습니다.

/* enable absolute positioning */
.inner-addon { 
    position: relative; 
}

/* style icon */
.inner-addon .glyphicon {
  position: absolute;
  padding: 10px;
  pointer-events: none;
}

/* align icon */
.left-addon .glyphicon  { left:  0px;}
.right-addon .glyphicon { right: 0px;}

/* add padding  */
.left-addon input  { padding-left:  30px; }
.right-addon input { padding-right: 30px; }

플 런커 데모

CSS 스크린 샷

참고 : 이것은 글리프 콘을 사용 한다고 가정 하지만 font-awesome 과 동일하게 작동합니다 .
FA를 들어, 방금 교체 .glyphicon와 함께.fa


부트 스트랩으로 :

버퍼가 지적한 바와 같이 , 이는 선택적인 아이콘과 함께 유효성 검사 상태 를 사용하여 부트 스트랩 내에서 기본적으로 수행 될 수 있습니다 . 이것은 .form-group요소에 클래스를 .has-feedback, 아이콘에 클래스를 부여하여 수행됩니다 .form-control-feedback.

가장 간단한 예는 다음과 같습니다.

<div class="form-group has-feedback">
    <label class="control-label">Username</label>
    <input type="text" class="form-control" placeholder="Username" />
    <i class="glyphicon glyphicon-user form-control-feedback"></i>
</div>

찬성 :

  • 다양한 양식 유형 (기본, 수평, 인라인)에 대한 지원 포함
  • 다양한 제어 크기 (기본, 소형, 대형)에 대한 지원 포함

단점 :

  • 왼쪽 정렬 아이콘에 대한 지원은 포함하지 않습니다

단점을 극복 하기 위해 왼쪽 정렬 아이콘을 지원하도록 변경 사항 과 함께이 풀 요청을 작성 했습니다. 비교적 큰 변화이므로 향후 릴리스까지 연기되었지만 오늘 이러한 기능이 필요한 경우 간단한 구현 안내서가 있습니다.

CSS에 이러한 양식 변경 사항을 포함하십시오 (아래에 숨겨진 스택 스 니펫을 통해 인라인으로 표시됨)
* LESS : 또는 less를 통해 빌드 하는 경우 양식 변경 사항이 더 적습니다.

그런 다음 아이콘을 왼쪽 정렬하기 위해 .has-feedback-left클래스가있는 그룹에 클래스 .has-feedback를 포함시키기 만하면됩니다.

다른 양식 유형, 다른 컨트롤 크기, 다른 아이콘 세트 및 다른 레이블 가시성에 대해 가능한 많은 HTML 구성이 있으므로 라이브 데모와 함께 각 순열에 대해 올바른 HTML 세트를 보여주는 테스트 페이지를 만들었습니다.

Plunker의 데모는 다음과 같습니다.

피드백 스크린 샷

PS frizi의 추가 제안 이 부트 스트랩pointer-events: none; 에 추가 되었습니다

찾고있는 것을 찾지 못했습니까 ? 다음과 같은 질문을 해보십시오.

왼쪽 정렬 피드백 아이콘을위한 CSS 추가


내 편집을 참조하면 focusedInput의 CSS 선택기를보다 명시 적으로 만들었습니다. 그렇지 않으면 .input-group-addon으로 덮어 씁니다.
— Michel Müller

@ MichelMüller, 제안 된 편집에 가치가 있는지 확실하지 않습니다. .focusedInput클래스는 이후에 정의 된 .input-group-addon스타일 시트 그렇게 할 때 캐스케이드 아래로, 후자의 스타일이 우선해야한다. 이것이 문제가 된 시나리오를 더 잘 설명 할 수 있습니까?
— KyleMit

2
"포인터 이벤트 : 없음;"을 추가하는 것이 좋습니다. 아이콘의 경우 기본적으로 입력 초점을 방해하기 때문입니다.
— Frizi

1
@Leandro, 확실합니다! . FontAwesome이 버전 4에서 주요 변경 사항을 도입했기 때문입니다. 3.x 에서 4.x 로 업그레이드 하려면로 변경 <i class="icon-user"></i>해야 <i class="fa fa-user"></i>합니다. 외부 라이브러리 업데이트를 생각할 때는 언제든지 릴리스 정보와 새 설명서를 읽고 앱이 여전히 호환되는지 또는 업그레이드해야하는지 확인하십시오.
— KyleMit

1
@Leando, 당신은에 대해 자세히 읽을 수 FA 4.0의 새로운 명명 규칙 뿐만 아니라 3.21에서 4 전체 마이그레이션 가이드
— KyleMit

62

공식 방법. 사용자 정의 CSS가 필요하지 않습니다.

<form class="form-inline" role="form">
  <div class="form-group has-success has-feedback">
    <label class="control-label" for="inputSuccess4"></label>
    <input type="text" class="form-control" id="inputSuccess4">
    <span class="glyphicon glyphicon-user form-control-feedback"></span>
  </div>
</form>

데모 : http://jsfiddle.net/LS2Ek/1/

이 데모는 Bootstrap 문서의 예제를 기반으로합니다. http://getbootstrap.com/css/#forms-control-validation에서 "선택적 아이콘 사용"으로 스크롤하십시오.

여기에 이미지 설명을 입력하십시오


3
+1-부트 스트랩에 기본 접근 방식이 내장되어있어 매우 좋습니다. 이것은 질문이 요구하는 것과 같이 왼쪽 정렬 아이콘에서 그렇게 뜨겁지 않지만 확실히 좋은 접근법입니다.
— KyleMit

1
{left:0}글리프 콘 클래스에 추가하면 왼쪽 정렬을 처리해야합니다. jsfiddle.net/LS2Ek/30 . 그래도 개요 + 상자 그림자 접근 방식이 마음에 듭니다. 깔끔하게 보입니다!
— 사용자

그것은 원래 나도 생각한 것이지만, 다른 상황에서 많은 CSS 작업을 다시 만들게 될 것입니다. 당신이 경우 레이블을 추가 , 당신은 볼 몇 가지 문제 . 인라인 양식에서 left:0더 이상 입력 시작을 식별하지 않습니다. 또한 입력 왼쪽에 패딩을 추가하고 오른쪽에서 제거해야합니다. 여전히 매우 훌륭하고 깨끗한 솔루션입니다. 입력의 왼쪽을 식별하는 것이 어려운 부분이라고 생각 position:relative합니다. 이 부분은 래퍼가있는 곳 입니다.
— KyleMit

부트 스트랩에이 패치를 추가해야합니다. 편리하고 자주 사용되는 기능입니다.
— 사용자

43

CSS 전용 대안이 있습니다. Firefox (및 100 개의 다른 앱)와 유사한 효과를 얻기 위해 검색 필드를 설정했습니다.

여기 바이올린이 있습니다.

HTML

<div class="col-md-4">
  <input class="form-control" type="search" />
  <span class="glyphicon glyphicon-search"></span>
</div>

CSS

.form-control {
  padding-right: 30px;
}

.form-control + .glyphicon {
  position: absolute;
  right: 0;
  padding: 8px 27px;
}

+1 훌륭한 솔루션. 나는 그것을 왼쪽과 오른쪽의 유틸리티 클래스에 적용했지만 확실히 올바른 접근 방식입니다
— KyleMit

네, 아주 간단하고 완벽합니다
— PeMa

11

기본 부트 스트랩 CSS v3.3.1 만 사용하여 수행 한 방법은 다음과 같습니다.

<div class="form-group">
    <label class="control-label">Start:</label>
    <div class="input-group">
        <input type="text" class="form-control" aria-describedby="start-date">
        <span class="input-group-addon" id="start-date"><span class="glyphicon glyphicon-calendar"></span></span>
    </div>
</div>

그리고 이것은 다음과 같이 보입니다 :

여기에 이미지 설명을 입력하십시오


8

이 '속임수'는 글리프 콘 클래스가 입력 컨트롤의 글꼴을 변경하는 부작용과 함께 작동합니다.

깡깡이

<input class="form-control glyphicon" type="search" placeholder="&#57347;"/>

부작용을 제거하려면 "glyphicon"클래스를 제거하고 다음 CSS를 추가 할 수 있습니다 (자리 표시 자 의사 요소의 스타일을 지정하는 더 좋은 방법이있을 수 있으며 Chrome에서만 테스트했습니다).

깡깡이

.form-control[type="search"]::-webkit-input-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}
.form-control[type="search"]:-moz-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}
.form-control[type="search"]::-moz-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}
.form-control[type="search"]:-ms-input-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}

아마도 더 깨끗한 해결책 :

깡깡이

CSS

.form-control.glyphicon {
    font-family:inherit;
}
.form-control.glyphicon::-webkit-input-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}
.form-control.glyphicon:-moz-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}
.form-control.glyphicon::-moz-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}
.form-control.glyphicon:-ms-input-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}

HTML

<input class="form-control glyphicon" type="search" placeholder="&#57347; search" />
<input class="form-control glyphicon" type="text"  placeholder="&#57352; username" />
<input class="form-control glyphicon" type="password"  placeholder="&#57395; password" />

8

사용자 정의 CSS없이 공식 부트 스트랩 3.x 버전의 클래스를 사용하여 수행 할 수 있습니다.

를 사용하여 input-group-addon입력 태그 앞에는 내부에 input-group다음 여기에 코드가의 glyphicons 중 하나를 사용하여

<form>
  <div class="form-group">
    <div class="col-xs-5">
      <div class="input-group">
          <span class="input-group-addon transparent"><span class="glyphicon glyphicon-user"></span></span>
          <input class="form-control left-border-none" placeholder="User Name" type="text" name="username">
      </div>
    </div>
  </div>
</form>

출력은 다음과 같습니다

여기에 이미지 설명을 입력하십시오

이를 사용자 정의하려면 자신의 custom.css 파일에 두 줄의 사용자 정의 CSS를 추가하십시오 (필요한 경우 패딩 조정)

.transparent {
    background-color: transparent !important;
    box-shadow: inset 0px 1px 0 rgba(0,0,0,.075);
 }
 .left-border-none {
    border-left:none !important;
    box-shadow: inset 0px 1px 0 rgba(0,0,0,.075);
 }

input-group-addon투명한 배경을 만들고 입력 태그의 왼쪽 그라데이션을 0으로 설정하면 입력이 매끄럽게 나타납니다. 맞춤형 출력은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

다음은 jsbin 예제입니다

이렇게하면 레이블과 겹치는 맞춤 CSS 문제, 사용 중 정렬 input-lg및 탭 문제에 초점을 맞출 수 있습니다.


6

다음은 base64 URI 인코딩을 사용하여 글리프 아이콘의 이미지 표현을 CSS에 직접 임베드하여 마크 업을 단순하게 유지하는 부트 스트랩이 아닌 솔루션입니다.

input {
  border:solid 1px #ddd;
}
input.search {
	padding-left:20px;
	background-repeat: no-repeat;
	background-position-y: 1px;
	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADbSURBVDhP5ZI9C4MwEIb7//+BEDgICA6C4OQgBJy6dRIEB6EgCNkEJ4e3iT2oHzH9wHbpAwfyJvfkJDnhYH4kHDVKlSAigSAQoCiBKjVGXvaxFXZnxBQYkSlBICII+22K4jM63rbHSthCSdsskVX9Y6KxR5XJSSpVy6GbpbBKp6aw0BzM0ShCe1iKihMXC6EuQtMQwukzPFu3fFd4+C+/cimUNxy6WQkNnmdzL3NYPfDmLVuhZf2wZYz80qDkKX1St3CXAfVMqq4cz3hTaGEpmctxDPmB0M/fCYEbAwZYyVKYcroAAAAASUVORK5CYII=);
}
<input class="search">



5

input {
  border:solid 1px #ddd;
}
input.search {
	padding-left:20px;
	background-repeat: no-repeat;
	background-position-y: 1px;
	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADbSURBVDhP5ZI9C4MwEIb7//+BEDgICA6C4OQgBJy6dRIEB6EgCNkEJ4e3iT2oHzH9wHbpAwfyJvfkJDnhYH4kHDVKlSAigSAQoCiBKjVGXvaxFXZnxBQYkSlBICII+22K4jM63rbHSthCSdsskVX9Y6KxR5XJSSpVy6GbpbBKp6aw0BzM0ShCe1iKihMXC6EuQtMQwukzPFu3fFd4+C+/cimUNxy6WQkNnmdzL3NYPfDmLVuhZf2wZYz80qDkKX1St3CXAfVMqq4cz3hTaGEpmctxDPmB0M/fCYEbAwZYyVKYcroAAAAASUVORK5CYII=);
}
<input class="search">


훌륭한 "jugad"이지만 사용자 정의 아이콘도 설정하는 데 정말 유용합니다. 감사합니다.
— Dhruv Raval

4

:beforeCSS 의 pseudo 요소를 사용하여 글리프 콘을 배치하여 다른 방법으로이를 수행 할 수 있습니다.

jsFiddle의 실무 데모

이 HTML의 경우 :

<form class="form form-horizontal col-xs-12">
    <div class="form-group">
        <div class="col-xs-7">
            <span class="usericon">
                <input class="form-control" id="name" placeholder="Username" />
            </span>
        </div>
    </div>
</form>

이 CSS를 사용하십시오 ( Bootstrap 3.x 및 Webkit 기반 브라우저 호환 가능 )

.usericon input {
    padding-left:25px;
}
.usericon:before {
    height: 100%;
    width: 25px;
    display: -webkit-box;
    -webkit-box-pack: center;
    -webkit-box-align: center;
    position: absolute;
    content: "\e008";
    font-family: 'Glyphicons Halflings';
    pointer-events: none;
}

@Frizi가 말했듯 pointer-events: none;이 커서가 입력 포커스를 방해하지 않도록 추가 해야합니다. 다른 모든 CSS 규칙은 적절한 간격을 중심에두고 추가하기위한 것입니다.

결과:

스크린 샷


2

유니 코드 HTML을 사용할 수 있습니다

사용자 아이콘을 추가 할 수 있도록, 단지 추가 &#xe008;받는 placeholder속성, 또는 당신이 그것을 원하는 목적지까지.

이 치트 시트 를 확인하실 수 있습니다 .

예:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<input type="text" class="form-control" placeholder="&#xe008; placeholder..." style="font-family: 'Glyphicons Halflings', Arial">
<input type="text" class="form-control" value="&#xe008; value..." style="font-family: 'Glyphicons Halflings', Arial">
<input type="submit" class="btn btn-primary" value="&#xe008; submit-button" style="font-family: 'Glyphicons Halflings', Arial">

다음 코드를 사용하여 입력 글꼴을 Glyphicon 글꼴로 설정하는 것을 잊지 마십시오. font-family: 'Glyphicons Halflings', Arial여기서 Arial 은 입력에서 일반 텍스트의 글꼴입니다.


1

또한 Bootstrap 3.3.5를 사용 하여이 경우에 대한 결정이 하나 있습니다.

<div class="col-sm-5">
    <label for="date">
       <input type="date" placeholder="Date" id="date" class="form-control">         
    </label>
    <i class="glyphicon glyphicon-calendar col-sm-pull-2"></i>
</div>

입력시 다음과 같은 것이 있습니다. 여기에 이미지 설명을 입력하십시오


1

부트 스트랩 4로 테스트되었습니다.

를 가져 와서 클래스에 form-control추가하십시오 is-valid. 컨트롤이 어떻게 녹색으로 바뀌는 지, 더 중요한 것은 컨트롤 오른쪽의 확인 표시 아이콘을 확인하십시오. 이것이 우리가 원하는 것입니다!

예:

.my-icon {
    padding-right: calc(1.5em + .75rem);
    background-image: url('https://use.fontawesome.com/releases/v5.8.2/svgs/regular/calendar-alt.svg');
    background-repeat: no-repeat;
    background-position: center right calc(.375em + .1875rem);
    background-size: calc(.75em + .375rem) calc(.75em + .375rem);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<div class="container">
  <div class="col-md-5">
	<input type="text" id="date" class="form-control my-icon" placeholder="Select...">
  </div>
</div>


0

최신 브라우저 만 필요할만큼 운이 좋으면 CSS 변환 변환을 사용해보십시오. 래퍼가 필요하지 않으며 input [type = number]에 더 많은 간격을 두어 입력 스피너를 수용하거나 핸들 왼쪽으로 이동할 수 있도록 사용자 정의 할 수 있습니다.

    @import url("//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css");


.is-invalid {
  height: 30px;
  box-sizing: border-box;
}

.is-invalid-x {
  font-size:27px;
  vertical-align:middle;
  color: red;
  top: initial;
  transform: translateX(-100%);
}




 <h1>Tasty Field Validation Icons using only css transform</h1>
    <label>I am just a poor boy nobody loves me</label>
    <input class="is-invalid"><span class="glyphicon glyphicon-exclamation-sign is-invalid-x"></span>

http://codepen.io/anon/pen/RPRmNq?editors=110


0

기존 부트 스트랩 클래스와 약간의 사용자 정의 스타일을 사용하여이를 수행 할 수 있어야합니다.

<form>
    <div class="input-prepend">
        <span class="add-on">
            <i class="icon-user"></i>
        </span>
        <input class="span2" id="prependedInput" type="text" placeholder="Username" style="background-color: #eeeeee;border-left: #eeeeee;">
    </div>         

편집 아이콘은 icon-user클래스 를 통해 참조됩니다 . 이 답변은 Bootstrap 버전 2 당시 작성되었습니다. 다음 페이지에서 참조를 볼 수 있습니다. http://getbootstrap.com/2.3.2/base-css.html#images


이 답변에서 부트 스트랩 글리프 콘 참조를 보지 못함
— Kirby

@Kirby, 아이콘은 icon-user 클래스를 통해 참조됩니다. 이 답변은 Bootstrap 버전 2에 작성되었습니다. 다음 페이지에서 참조를 볼 수 있습니다. getbootstrap.com/2.3.2/base-css.html#images
— YOOOEE
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.