입력할 때 입력 필드를 늘리거나 줄이는 방법
5954 단어 htmlcssjavascript
마크업의 경우 입력과 범위가 필요합니다.
<input type="text">
<span></span>
이제 콘텐츠에 몇 가지 스타일을 적용해 보겠습니다.
input[type="text"],
span {
font-family: 'Open Sans', 'Helvetica Neue', sans-serif;
font-size: 1.75rem;
border: 2px solid #666;
/* box-sizing: border-box; */
/* padding: 0.5em 1em; */
}
input[type="text"] {
width: 6em;
padding: 0.5em 1em;
color: #555;
border-radius: 2em;
outline: 0;
}
input[type="text"]:focus {
border-color: #ff7996;
}
span {
position: absolute;
left: -9999px;
display: inline-block;
min-width: 6em;
}
여기서 한 가지 주의할 점이 있습니다. 입력 필드에 적용된 테두리 및 글꼴 속성은 스팬에도 적용해야 하며,
box-sizing
를 border-box
로 설정한 경우 패딩도 스팬과 입력 모두에 적용해야 합니다. 이유를 알 수 있습니다. JavaScript로 이동할 때. 범위에 min-width
를 설정하고 입력 필드에 width
를 설정했습니다. 이는 입력 필드에 대해 미리 정의된 너비를 갖도록 하여 해당 너비 아래로 축소되지 않도록 합니다. 범위를 숨기고 입력 필드를 보기 좋게 만드는 다른 스타일이 있습니다.이제 실제 트릭으로 이동하겠습니다.
const input = document.querySelector('input');
const span = document.querySelector('span');
input.addEventListener('input', function (event) {
span.innerHTML = this.value.replace(/\s/g, ' ');
this.style.width = span.offsetWidth + 'px';
});
위의 코드에서 텍스트 입력에 대한 입력 이벤트를 수신한 다음 범위의 내용을 입력의 내용으로 바꿉니다. HTML에서 여러 공백이 단일 공백으로만 렌더링된다는 사실 때문에
this.value
의 공백도  
로 바꿉니다. 그런 다음 범위의 너비를 입력 필드에 적용합니다.다음과 같이 표시됩니다.
이 기사가 도움이 되었기를 바랍니다.
질문이나 추가 사항이 있습니까? 아래에 의견을 남겨주세요.
Reference
이 문제에 관하여(입력할 때 입력 필드를 늘리거나 줄이는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/matrixersp/how-to-make-an-input-field-grow-shrink-as-you-type-513l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)