[웹디자인] 검색바

김성현·2021년 8월 20일
0

웹 디자인

목록 보기
8/14

html

<div class="search">
  <input type="text" />
  <div class="material-icons">search</div>
</div>

css

.search {
  display: inline-block;
  height: 34px;
  position: relative;
}
.search input {
  width: 36px;
  height: 34px;
  padding: 4px 10px;
  border: 1px solid #ccc;
  box-sizing: border-box;
  border-radius: 5px;
  outline: none;
  background: #fff;
  color: #777;
  font-size: 12px;
  transition: width 0.4s;
}
.search input:focus {
  width: 190px;
  border-color: #669900;
}
.search .material-icons {
  height: 24px;
  position: absolute;
  top: 0;
  bottom: 0;
  right: 5px;
  margin: auto;
  transition: 0.4s;
}
.search.focused .material-icons {
  opacity: 0;
}

javascript

const searchEl = document.querySelector('.search')
const searchInputEl = searchEl.querySelector('input')

searchEl.addEventListener('click',function(){
  searchInputEl.focus();
})

searchInputEl.addEventListener('focus', function(){
  searchEl.classList.add('focused')
  searchInputEl.setAttribute('placeholder','통합검색')
})

searchInputEl.addEventListener('blur', function(){
  searchEl.classList.remove('focused')
  searchInputEl.setAttribute('placeholder','')
})
  • 초기에 inputwidth를 적게주고 선택시 transition효과와 함께 너비를 늘린다.
  • js로 전체 div를 클릭하면 input에 focus하도록 해준다.
  • input이 focus되면 placeholder가 나타나고 blur되면 사라진다.
  • 전체 div 클래스 리스트에 focused가 있으면 아이콘은 사라진다.
profile
JS개발자

0개의 댓글