keyboard_tabSkip to content
listWeb Development 101

มาลองแต่ง style form

สารบัญ

โจทย์ของเรา

  • แต่ง form ให้อยู่ตรงกลาง (ระหว่างซ้าย ขวา)
  • หัวข้ออยู่ตรงกลางกับเน้นสีเข้ม
  • ชื่อนามสกุล อยู่คนละ column
  • Input, textarea ตีเต็ม + ลบเส้นออก
  • เพศ อยู่บรรทัดเดียวกัน
  • Link อยู่ตรงกลาง
  • ปุ่มส่งข้อมูลเป็นสีแบบ material design
html
<!DOCTYPE html>
<html lang="en">
<head>
  <!-- ส่วนที่ไม่แสดงออกไปในหน้าจอของ Browser -->
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document 2</title>
  <style>
    /* สิ่งที่อยู่ตรงนี้ จะมีไว้แค่ให้ dev อ่าน */
    /* 1. แต่งใคร ? (id, class, DOM) 2. แต่งอะไร ? */
    @font-face {
      font-family: 'kanit';
      src: url('./Kanit/Kanit-Regular.ttf');
    }

    body {
      font-family: 'kanit';
    }

    .container {
      width: 100%;
      max-width: 640px;
      margin-left: auto;
      margin-right: auto;
      background-color: azure;
      padding: 20px;
      box-sizing: border-box;
    }

    .header {
      font-size: 30px;
      text-align: center;
    }

    .header-form {
      width: 140px;
    }

    .flex {
      display: flex;
    }

    .form-input {
      margin-bottom: 10px;
    }

    .center {
      text-align: center;
    }

    input.form, textarea {
      border: 1px gainsboro solid;
      width: 100%;
    }

    .button {
      border: 0;
      width: 50%;
      height: 40px;
      background-color: #2962FF;
      color: white;
    }
  </style>
</head>
<body>
  <!-- ส่วนที่แสดงออกไปในหน้าจอของ Browser -->

  <div class="container">
    <!-- 3. form -->
    <div class="header form-input">
      Register form
    </div>
    <div class="flex form-input">
      <div class="header-form">ชื่อจริง</div>
      <input class="form" name="firstname" type="text">
    </div>
    <div class="flex form-input">
      <div class="header-form">นามสกุล </div>
      <input class="form" name="lastname" type="text">
    </div>
    <div class="flex form-input">
      <div class="header-form">อายุ</div>
      <input class="form" name="age" type="number" min="0" max="100">
    </div>
    <div class="flex gender form-input">
      <div class="header-form">เพศ</div>
      <div class="flex">
        <div>
          <input name="gender" type="radio" value="ชาย"> ชาย
        </div>
        <div>
          <input name="gender" type="radio" value="หญิง"> หญิง
        </div>
        <div>
          <input name="gender" type="radio" value="ไม่ระบุ"> ไม่ระบุ
        </div>
      </div>
    </div>
    <div class="form-input">
      สิ่งที่สนใจ
      <div>
        <input name="interest" type="checkbox" value="หนังสือ"> หนังสือ
      </div>
      <div>
        <input name="interest" type="checkbox" value="วิดีโอเกม"> วิดีโอเกม
      </div>
      <div>
        <input name="interest" type="checkbox" value="การเมือง"> การเมือง
      </div>
    </div>
    <div class="form-input">
      คำอธิบายตัวตนเพิ่มเติม
      <div>
        <textarea name="description"></textarea>
      </div>
    </div>
    <div class="form-input center">
      <a href="https://shopee.com">T&C</a>
    </div>
    <div class="center">
      <button onclick="submitData()" class="button">ส่งข้อมูล</button>
    </div>
  </div>
  <script src="index.js"></script>
</body>
</html>

ผลลัพธ์ของ code workshop-1

แยกไฟล์ css ออกมา และ import เข้า

เราจะทำการแยกออกมาเป็น 2 files คือ

  • index.html เป็นไฟล์หลักเหมือนเดิม
  • styles.css ย้าย code ใน <style></style> ทั้งหมดไปไว้ในนั้น
  • และเปลี่ยน tag style เป็น <link rel="stylesheet" href="styles.css"> เพื่อ import style จากข้างนอกเข้ามาแทน

index.html

html
<!DOCTYPE html>
<html lang="en">
<head>
  <!-- ส่วนที่ไม่แสดงออกไปในหน้าจอของ Browser -->
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document 2</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <!-- ส่วนที่แสดงออกไปในหน้าจอของ Browser -->

  <div class="container">
    <!-- 3. form -->
    <div class="header form-input">
      Register form
    </div>
    <div class="flex form-input">
      <div class="header-form">ชื่อจริง</div>
      <input class="form" name="firstname" type="text">
    </div>
    <div class="flex form-input">
      <div class="header-form">นามสกุล </div>
      <input class="form" name="lastname" type="text">
    </div>
    <div class="flex form-input">
      <div class="header-form">อายุ</div>
      <input class="form" name="age" type="number" min="0" max="100">
    </div>
    <div class="flex gender form-input">
      <div class="header-form">เพศ</div>
      <div class="flex">
        <div>
          <input name="gender" type="radio" value="ชาย"> ชาย
        </div>
        <div>
          <input name="gender" type="radio" value="หญิง"> หญิง
        </div>
        <div>
          <input name="gender" type="radio" value="ไม่ระบุ"> ไม่ระบุ
        </div>
      </div>
    </div>
    <div class="form-input">
      สิ่งที่สนใจ
      <div>
        <input name="interest" type="checkbox" value="หนังสือ"> หนังสือ
      </div>
      <div>
        <input name="interest" type="checkbox" value="วิดีโอเกม"> วิดีโอเกม
      </div>
      <div>
        <input name="interest" type="checkbox" value="การเมือง"> การเมือง
      </div>
    </div>
    <div class="form-input">
      คำอธิบายตัวตนเพิ่มเติม
      <div>
        <textarea name="description"></textarea>
      </div>
    </div>
    <div class="form-input center">
      <a href="https://shopee.com">T&C</a>
    </div>
    <div class="center">
      <button onclick="submitData()" class="button">ส่งข้อมูล</button>
    </div>
  </div>
  <script src="index.js"></script>
</body>
</html>

styles.css

css
/* สิ่งที่อยู่ตรงนี้ จะมีไว้แค่ให้ dev อ่าน */
/* 1. แต่งใคร ? (id, class, DOM) 2. แต่งอะไร ? */
@font-face {
  font-family: "kanit";
  src: url("./Kanit/Kanit-Regular.ttf");
}

body {
  font-family: "kanit";
}

.container {
  width: 100%;
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
  background-color: azure;
  padding: 20px;
  box-sizing: border-box;
}

.header {
  font-size: 30px;
  text-align: center;
}

.header-form {
  width: 140px;
}

.flex {
  display: flex;
}

.form-input {
  margin-bottom: 10px;
}

.center {
  text-align: center;
}

input.form,
textarea {
  border: 1px gainsboro solid;
  width: 100%;
}

.button {
  border: 0;
  width: 50%;
  height: 40px;
  background-color: #2962ff;
  color: white;
}