Menu
CoddyTech

Thử thách ôn tập

Thuộc phần Thực hành frontend trong hành trình HTML của Coddy. Bài học 11 trên 35.

challenge icon

Thử thách

Dễ

Bạn được cung cấp một trang HTML hồ sơ người dùng. Nhiệm vụ của bạn là áp dụng các nguyên tắc thiết kế ưu tiên thiết bị di động để trang có khả năng thích ứng hoàn toàn. Hãy làm theo các hướng dẫn sau:

1. Điều hướng ưu tiên thiết bị di động

  • Trên màn hình lớn hơn, hiển thị danh sách điều hướng và ẩn nút menu.

2. Kiểu chữ ưu tiên thiết bị di động

  • Tạo một biến CSS --body-font-size: 16px và áp dụng biến này cho phần thân trang. Đây sẽ là cỡ chữ cơ sở cho màn hình nhỏ.

3. Hình ảnh ưu tiên thiết bị di động

  • Dùng thẻ <picture> để cung cấp các kích thước hình ảnh khác nhau cho màn hình di động và màn hình lớn hơn.
  • Dùng thẻ <source> với srcset trỏ đến hình ảnh lớn hơn, ví dụ: https://upload.wikimedia.org/wikipedia/commons/1/1f/Woman_1.jpg.
  • Thêm media="(min-width: 768px)" để áp dụng cho màn hình lớn hơn.
  • Đảm bảo hình ảnh hồ sơ co giãn phù hợp với chiều rộng màn hình.

4. Biểu mẫu ưu tiên thiết bị di động

  • Đặt chiều rộng của tất cả các trường nhập liệu và nút gửi thành 100% để chúng chiếm toàn bộ chiều rộng và dễ chạm.

Trang cần trông gọn gàng, dễ đọc và thân thiện với người dùng trên cả màn hình di động lẫn máy tính. Điều chỉnh khoảng cách, căn chỉnh và kích thước thích ứng để mọi thứ trông cân đối.

Tự làm thử

<!DOCTYPE html>
<html>
<head>
  <title>Mobile-First Profile</title>
  <style>
    :root {
      --primary-font: Arial, sans-serif;
      --heading-font: 'Helvetica', sans-serif;
      --h1-size: 2rem;
      --h2-size: 1.5rem;
      --primary-color: #4a90e2;
      --secondary-color: #f0f4f8;
    }

    body {
      font-family: var(--primary-font);
      margin: 0;
      padding: 20px;
      background-color: var(--secondary-color);
    }

    h1 {
      font-family: var(--heading-font);
      font-size: var(--h1-size);
      color: var(--primary-color);
      margin-bottom: 5px;
    }

    h2 {
      font-family: var(--heading-font);
      font-size: var(--h2-size);
      color: #333;
      margin-top: 0;
    }

    nav {
      margin-bottom: 20px;
    }

    .menu-button {
      display: block;
      padding: 10px 15px;
      background-color: var(--primary-color);
      color: white;
      border: none;
      border-radius: 5px;
      cursor: pointer;
      margin-bottom: 10px;
    }

    .nav-list {
      display: none;
      list-style: none;
      padding: 0;
      margin: 0;
    }

    .nav-list li {
      margin-bottom: 10px;
    }

    .nav-list li a {
      text-decoration: none;
      color: var(--primary-color);
    }

    .profile-img {
      width: 100%;
      max-width: 250px;
      border-radius: 50%;
      margin-bottom: 20px;
      display: block;
    }

    section p {
      line-height: 1.6;
      margin-bottom: 20px;
    }
    
    form {
      display: flex;
      flex-direction: column;
      gap: 10px;
    }

    input, textarea, button {
      padding: 10px;
      border: 1px solid #ccc;
      border-radius: 5px;
      font-size: 1rem;
    }

    button {
      background-color: var(--primary-color);
      color: white;
      cursor: pointer;
    }

    /* Media queries for larger screens */
    @media (min-width: 768px) {
      .nav-list {
        gap: 20px;
      }

      .nav-list li {
        margin-bottom: 0;
      }

      form {
        max-width: 500px;
      }
    }
  </style>
</head>
<body>
  <nav>
    <button class="menu-button">Menu</button>
    <ul class="nav-list">
      <li><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </nav>

  <header>
    <h1>Jane Doe</h1>
    <h2>Web Developer & Designer</h2>
  </header>

  <section>
      <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/1f/Woman_1.jpg/250px-Woman_1.jpg" alt="Profile Image" class="profile-img">
  </section>

  <section>
    <p>Welcome to my profile! I specialize in creating mobile-first, responsive websites that look great on any device. My focus is on performance, accessibility, and clean design.</p>
  </section>

  <section>
    <form>
      <input type="text" placeholder="Your Name">
      <input type="email" placeholder="Your Email">
      <textarea placeholder="Your Message"></textarea>
      <button type="submit">Send Message</button>
    </form>
  </section>
</body>
</html>

Tất cả bài học trong Thực hành frontend

Tự luyện tập: Playground Web