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


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.