Tạo thanh tìm kiếm co dãn với HTML và CSS

DEMO

Ngày nay, việc tìm kiếm dữ liệu rất phổ biến. Hầu hết các trang web đều hỗ trợ thanh tìm kiếm. Do vậy, thiết kế và tạo hiệu ứng bắt mắt cho thanh tìm kiếm cũng góp phần không nhỏ  trong việc xây dựng một trang web hiện đại. Hôm nay, freetuts sẽ hướng dẫn các bạn cách tạo một thanh tìm kiếm đơn giản mà hiệu quả như hình

1. Phần HTML

Trong bố cục 2 thẻ chính sẽ được sử dụng là thẻ input và thẻ a .

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>Page Title</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
  <link rel="stylesheet" type="text/css" media="screen" href="search_box.css">
  <script src="main.js"></script>
</head>
<body>
  <div>
    <div class="box">
      <input type="text" placeholder="Search here">
      <a><i class="fas fa-search-location"></i></a>
    </div>
  </div>
</body>
</html>

Chú ý trong phần thẻ head , thư viện icon fontawesome sẽ được sử dụng để lấy icon tìm kiếm. Chỉ cần thêm đoạn mã dưới đây

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">

vào trong thẻ head là thư viện sẽ được load thành công.

Để sử dụng được các icon trong thư viện thì phải chèn vào thẻ i với lớp tương ứng, các bạn có thể tham khảo thêm tại trang chủ của fontawesome.

Lưu ý, đoạn mã phải được đặt phía trên đoạn mã css chính để tránh tình trạng ghi đè các thuộc tính.

2. Phần CSS

Trước hết hãy xem qua toàn bộ đoạn mã

Xem demo RUN
body > div {
  height: 500px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.box {
  height: 60px;
  background-color: darkcyan;
  border-radius: 30px;
  display: flex;
  justify-content: center;
  align-items: center;
}

input {
  background: none;
  outline: none;
  border: none;
  padding: 0;
  margin: 0;
  width: 0px;
  transition: 0.8s ease;
  color: white;
  font-size: 18px;
  font-weight: 600;
}

input::placeholder {
  color: antiquewhite;
}

a {
  color: whitesmoke;
  text-align: center;
  width: 60px;
  font-size: 18px;
}

.box:hover input {
  width: 200px;
  margin: 0 20px;
  border-bottom: 2px solid red;
}

input:focus {
  width: 200px;
  margin: 0 20px;
  border-bottom: 2px solid red;
}

Bước 1: tạo định dạng cho thẻ div chính

body > div {
  height: 500px;
  display: flex;
  justify-content: center;
  align-items: center;
}

Bước 2: tạo định dạng cho lớp box

.box {
  height: 60px;
  background-color: darkcyan;
  border-radius: 30px;
  display: flex;
  justify-content: center;
  align-items: center;
}

Phần này một lưu ý quan trọng là giá của thuộc tính border-radius phải bằng một nửa giá trị của thuộc tính height . Điều này giúp ta có một đường viền đẹp.

Bước 3: tạo định dạng cho thẻ input

input {
  background: none;
  outline: none;
  border: none;
  padding: 0;
  margin: 0;
  width: 0px;
  transition: 0.8s ease;
  color: white;
  font-size: 18px;
  font-weight: 600;
}

Để loại bỏ những thiết lập mặc định thì các thuộc tính border , background , outline , padding , margin , width phải được gán bằng none hoặc 0.

Bước 4: tạo định dạng cho thẻ a

a {
  color: whitesmoke;
  text-align: center;
  width: 60px;
  font-size: 18px;
}

Ở bước này, chúng ta sẽ lưu ý hai thuộc tính widthfont-size .

Giá trị của width nên bằng với giá trị height của lớp box .

Giá trị của font-size nên bằng với giá trị font-size của thẻ input .

Bước 5: tạo hiệu ứng với Pseudo hover

.box:hover input {
  width: 200px;
  margin: 0 20px;
  border-bottom: 2px solid red;
}

Khi rê con trỏ vào vùng của lớp box thì ngay lập tức khung input sẽ được hiện ra.

Bước 6: giữ trạng thái khung tìm kiếm

input:focus {
  width: 200px;
  margin: 0 20px;
  border-bottom: 2px solid red;
}

Đoạn mã này để giữ khung tìm kiếm không thu gọn lại khi người dùng di chuyển chuột ra phía ngoài lớp box . Mục đích là giúp cho người dùng có trải nghiệm tốt hơn.

Lưu ý: nếu muốn đổi màu cho đoạn văn bản gợi ý trong khung input thì ta thêm vào đoạn mã sau

input::placeholder {
  color: antiquewhite;
}

3. Lời Kết

Qua bài viết này, bạn đã học được cách tạo thanh tìm kiếm đơn giản với hiệu ứng đẹp. Không những vậy, bài viết này còn giúp ích các bạn trong thiết kế giao diện web trên nền các thiết bị di động vì tiết kiệm được diện tích màn hình.

Cảm ơn các bạn, hẹn gặp lại trong bài viết kế tiếp.

-------------------#####-------------------

Khóa học nên xem

Nguồn: freetuts.net