입력 요소 안에 아이콘을 양식에 넣습니다.


답변:


392

연결 한 사이트는 CSS 트릭을 조합하여 사용합니다. 먼저 <input>요소 의 배경 이미지를 사용합니다 . 그런 다음 커서를 위로 밀기 위해을 사용합니다 padding-left.

다시 말해, 다음 두 가지 CSS 규칙이 있습니다.

background: url(images/comment-author.gif) no-repeat scroll 7px 7px;
padding-left:30px;

2
상단 및 왼쪽 매개 변수 (7px 7px) 및 기타 속성에 대해 자세히 설명해 주시겠습니까? 도움이되어야합니다.
QMaster

262
조언 : IE 8 사용 및 지원 중단
코더

3
입력 필드의 오른쪽 끝에 이미지를 어떻게 정렬 할 수 있습니까?
ishanbakshi

3
배경 이미지의 문제점은 Chrome의 자동 완성이 배경 이미지를 제거하고 배경을 완전히 노란색으로 만드는 것입니다.
Cătălin Rădoi

1
오른쪽에 맞추려면 다음을 사용하십시오. background-position : right;
raison

52

다른 사람이 게시 한 CSS 솔루션이이를 수행하는 가장 좋은 방법입니다.

그래도 문제가 발생하면 (IE6 읽기) div 내부에 경계가없는 입력을 사용할 수도 있습니다.

<div style="border: 1px solid #DDD;">
    <img src="icon.png"/>
    <input style="border: none;"/>
</div>

"깨끗한"것은 아니지만 이전 브라우저에서는 작동해야합니다.


2
이 답변에 좋은 추가. 때로는 문제가 생겨서 그 중 하나를 해결하는 좋은 방법입니다. 대신 스팬으로 나를 위해 일했습니다.
Ross

입력 내부에 더 복잡한 구조를 추가하는 좋은 방법!
jonhue

@ jonhue, 이전 10 년 동안 거주하고 IE6를 지원 해야하는 경우가 아니라면 권장하지 않습니다. 그럼에도 불구하고 나는 그것을 "깨끗한"이라고 부르지 않을 것입니다.
harpo 2016 년

@harpo 그러면 입력 내부에 링크를 어떻게 포함 하시겠습니까?
jonhue

35

배경 이미지가없는 솔루션 :

#input_container {
    position:relative;
    padding:0 0 0 20px;
    margin:0 20px;
    background:#ddd;
    direction: rtl;
    width: 200px;
}
#input {
    height:20px;
    margin:0;
    padding-right: 30px;
    width: 100%;
}
#input_img {
    position:absolute;
    bottom:2px;
    right:5px;
    width:24px;
    height:24px;
}
<div id="input_container">
    <input type="text" id="input" value>
    <img src="https://cdn4.iconfinder.com/data/icons/36-slim-icons/87/calender.png" id="input_img">
</div>


34

당신은 이것을 시도 할 수 있습니다 :

input[type='text'] {
    background-image: url(images/comment-author.gif);
    background-position: 7px 7px;
    background-repeat: no-repeat;
}

26

나는 이것이 가장 깨끗하고 깨끗한 해결책이라고 생각합니다. 요소 에 텍스트 들여 쓰기 사용input

CSS :

#icon{
background-image:url(../images/icons/dollar.png); 
background-repeat: no-repeat; 
background-position: 2px 3px;
}

HTML :

<input id="icon" style="text-indent:17px;" type="text" placeholder="Username" />

3
padding-left는 필드 너비를 증가시키고 부모 요소에서 오버플로하기 때문에 텍스트 들여 쓰기를 지원합니다.
Kostiantyn

1
#icon CSS 대신 왜 스타일을 인라인으로 넣었습니까?
Wylliam Judd

@WylliamJudd 그것은 단지 데모 목적입니다 :)
Rust

왜 수업 대신 ID를 사용 했습니까?
majid savalanpour

9

입력 안에 아이콘을 배치하는 간단하고 쉬운 방법은 아래 코드와 같이 위치 CSS 속성을 사용하는 것입니다. 참고 : 명확성을 위해 코드를 단순화했습니다.

  1. 입력과 아이콘을 둘러싸는 컨테이너를 만듭니다.
  2. 컨테이너 위치를 상대적으로 설정
  3. 아이콘을 절대 위치로 설정하십시오. 아이콘이 주변 컨테이너를 기준으로 배치됩니다.
  4. 아이콘을 컨테이너에 배치하려면 상단, 왼쪽, 하단, 오른쪽을 사용하십시오.
  5. 텍스트가 아이콘과 겹치지 않도록 입력 내부에 패딩을 설정하십시오.

#input-container {
  position: relative;
}

#input-container > img {
  position: absolute;
  top: 12px;
  left: 15px;
}

#input-container > input {
  padding-left: 40px;
}
<div id="input-container">
  <img/>
  <input/>
</div>


1
깨끗하고 간단합니다. 또한 입력 테두리를 제거하고 테두리를 input { border: none; }추가 #input-container { border: 1px solid #000; }하여 이미지가 실제로 입력의 일부인 것처럼 보이도록해야합니다.
마리오 베르너

1
@MarioWerner 그는 입력 내부에 이미지를 밀어 넣었습니다. 국경 해킹을 할 필요가 없습니다. 그것이 아름다움입니다. 나는 그 아이디어를 사용할 것입니다.
바보

8
.icon{
background: url(1.jpg) no-repeat;
padding-left:25px;
}

위의 태그를 CSS 파일에 추가하고 지정된 클래스를 사용하십시오.


6

이것은 나를 위해 작동합니다 :

input.valid {
   border-color: #28a745;
   padding-right: 30px;
   background-image: url('https://www.stephenwadechryslerdodgejeep.com/wp-content/plugins/pm-motors-plugin/modules/vehicle_save/images/check.png');
   background-repeat: no-repeat;
   background-size: 20px 20px;
   background-position: right center;
}
<form>
<label for="name">Name</label>
<input class="valid" type="text" name="name" />
</form>


크롬에서 자동 완성시 이미지가 사라짐
넵튠

"저장"아이콘을 사용하는 경우 이미지를 클릭 가능하게 만드는 방법은 무엇입니까?
user460114

그것은 내 하이브리드 앱에서 나를 위해 일했습니다. 이미지를 삽입 한 후 전체 입력 상자를 클릭 할 수있게했습니다.
shivam srivastava 님의

5

시도해보십시오 : Bootstrap-4 Beta
https://www.codeply.com/go/W25zyByhec

<div class="container">
            <form>
                <div class="row">
                    <div class="input-group mb-3 col-sm-6">
                      <input type="text" class="form-control border-right-0" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
                        <div class="input-group-prepend bg-white">
                            <span class="input-group-text border-left-0 rounded-right bg-white" id="basic-addon1"><i class="fas fa-search"></i></span>
                        </div>
                    </div>
                </div>
            </form>
        </div>






4

CSS에서 background 속성을 사용하십시오.

<input id="foo" type="text" />

#foo
{
    background: url(/img/foo.png);
}

4

나는 이런 상황이 있었다. 때문에 작동하지 않았습니다 background: #ebebeb;. 입력 필드에 배경을 넣고 싶었고 그 속성이 배경 이미지 상단에 지속적으로 표시되어 이미지를 볼 수 없었습니다! 그래서 나는 background재산을 재산 위로 옮기고 background-image효과가있었습니다.

input[type='text'] {
    border: 0;
    background-image: url('../img/search.png');
    background-position: 9px 20px;
    background-repeat: no-repeat;
    text-align: center;
    padding: 14px;
    background: #ebebeb;
}

내 경우의 해결책은 다음과 같습니다.

input[type='text'] {
    border: 0;
    background: #ebebeb;
    background-image: url('../img/search.png');
    background-position: 9px 20px;
    background-repeat: no-repeat;
    text-align: center;
    padding: 14px;
}

그냥 언급하는 border, padding그리고 text-align속성은 솔루션을위한 중요하지 않습니다. 방금 원래 코드를 복제했습니다.


1
이것은 매우 오래되었으며 아마도 1 년 전에 배운 적이 있기를 바랍니다. 그러나 background모든 배경 속성을 한 번에 덮는 데 사용하는 속기 속성 이름입니다 background: [color] [image url] [repeat] [position]. 또한 장소에 왼쪽에 재산을 이름을 변경 한 수background-color
borbulon

@ borbulon 그렇습니다. 속기 속성 이름을 사용하는 것이 가장 좋습니다. 그러나이 글의 목적은 때로는 속성의 순서가 중요하며, 이러한 '작은'CSS 규칙은 특히 개발에있어 신입생에게 많은 좌절을 줄 수 있다는 점을 지적하는 것입니다.
fantja

1
완전히 동의하지만 요점은 여전히 ​​약속입니다 : background속기 속성 이름입니다. 더 나은 수정 방법은 속기를 사용하지 않고 background-color색상 속성에 사용 하는 것입니다 (색상과 이미지를 모두 원한다고 가정).
보르 부론

3

글꼴 아이콘과 함께 사용

<input name="foo" type="text" placeholder="&#61447;">

또는

<input id="foo" type="text" />

#foo::before
{
  font-family: 'FontAwesome';
  color:red;
  position: relative;
  left: -5px;
  content: "\f007";    
}

7
:: 이전에 입력 요소를 적용 할 수없는 것 같습니다.
Vishnja

1
 <label for="fileEdit">
    <i class="fa fa-cloud-upload">
    </i>
    <input id="fileEdit" class="hidden" type="file" name="addImg" ng-file-change="onImageChange( $files )" ng-multiple="false" accept="{{ contentType }}"/>
  </label>

예를 들어 숨겨진 입력이있는 : 레이블을 사용할 수 있습니다 (아이콘이 있음).


1

시작할 때 입력에이 CSS 클래스를 사용한 다음 적절하게 사용자 정의하십시오.

    
 .inp-icon{
background: url(https://i.imgur.com/kSROoEB.png)no-repeat 100%;
background-size: 16px;
 }
<input class="inp-icon" type="text">


이 이미지에 대해서만 클릭 이벤트를 설정하는 방법을 알고 있습니까?
Arjun

0

이것은 다소 표준적인 형태로 작동합니다.

  <button type="submit" value="Submit" name="ButtonType" id="whateveristheId" class="button-class">Submit<img src="/img/selectedImage.png" alt=""></button>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.