CSS Tips-: placeholder shown 아날로그 클래스를 사용하여 Material Design 같은 input 만들기
나도 움직이는 샘플을 만들어 보았으니 가능하면 참고하세요.
placeholder shown이란?
: placeholder shown은 CSS의 위조 클래스 중 하나입니다. placeholder가 표시될 때만 적용되는 스타일을 정의할 수 있습니다.
input:not(:placeholder-shown) { ... }
placeeholder가 표시되지 않으면 값을 입력할 때만 유효한 스타일을 정의할 수 있습니다.능숙하게 사용할 수 있다면 지금까지 자바스크립트로 구현한 콘텐츠를 CSS 완결 형식으로 구현할 수 있다.
샘플 프로그램
견본
머티리얼 디자인 흔한 인풋을 만들어 봤어요.
초점이 맞춰지면 라벨이 작아지고 왼쪽 상단에 가까워진다.
소스 코드 및 설명
샘플의 > 내용은 다음과 같다.
index.html
<label class='input'>
<input type='text' placeholder=" " />
<span class='label'>nickname</span>
<div class='border'></div>
</label>
CSS, 이번에는 LESS로 써봤어요.main.less
.input {
font-size: 16px;
position: relative;
.label {
position: absolute;
left: 0;
transform-origin: 0 0;
transition: 256ms;
}
input {
border: none;
outline: none;
background: none;
border-bottom: 2px solid gray;
padding-bottom: 8px;
// フォーカスしたら移動アニメーション & 下線の色を変更
&:focus {
+ span {
color: blue;
transform: translateY(-26px) scale(.75)
}
border-bottom: 2px solid blue;
}
// 入力済みだったら移動後の表示のままにする
&:not(:placeholder-shown) {
+ span {
transform: translateY(-26px) scale(.75)
}
}
}
}
절차로, 우선, > 측에서 placeholder에 공문을 설정하고, placeeholder 대신 label을 input에 겹쳐서 표시합니다.그런 다음 초점을 맞춘 시점에 레이블을 왼쪽 위 기준으로 배율 애니메이션하여 Material Desgin과 같은 UI를 구현합니다.
최후
JavaScript와 마찬가지로 CSS도 매일 진화하고 있습니다.
이전에 코드로 쓴 복잡한 처리 방식도 CSS의 기능을 활용하면 쉽게 실현할 수 있습니다!
grid와 관련된 CSS, backdrop-filter도 마찬가지다.
서비스 활용 관점에서 볼 때 외관과 관련된 동작은 CSS에서 하는 것이 가장 좋다고 생각합니다.
코드로 이뤄지면 어떻게 해서든 오류가 생기거나 상관없는 곳에 영향을 미칠 위험이 높아지기 때문이다.
앞으로도 코드가 구현됐지만 이제 CSS가 쉽게 완성할 수 있는 팁을 소개하고 싶다.
Reference
이 문제에 관하여(CSS Tips-: placeholder shown 아날로그 클래스를 사용하여 Material Design 같은 input 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/phi/articles/css-tips-placeholder-shown-material-ui텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)