การออกแบบเว็บไซต์ที่ตอบสนองได้ - การค้นหา media

อะไรคือคำสั่งค้นหาสื่อ?

คำสั่งค้นหาสื่อเป็นเทคโนโลยี CSS ที่ถูกนำเสนอใน CSS3

มันจะถูกใช้เมื่อมีเงื่อนไขเฉพาะ @media กฎเพื่ออ้างบล็อคความสัมพันธ์ CSS รายการ

ตัวอย่าง

หากหน้าต่างบราวเซอร์เป็น 600px หรือน้อยกว่า กำหนดสีพื้นหลังเป็นสีสันทองน้ำ

@media only screen and (max-width: 600px) {
  body {
    background-color: lightblue;
  }
}

ทดลองด้วยตัวเอง

เพิ่มจุดหยุด

ในช่วงแรกของทัวร์นี้เราได้สร้างหน้าเว็บที่มีบรรทัดและคอลัมน์ แต่หน้าเว็บนี้มีลักษณะที่ไม่ดีบนหน้าจอเล็ก

คำสั่งค้นหาสื่อช่วยคุณ พวกเราสามารถเพิ่มจุดหยุดซึ่งบางส่วนของการออกแบบจะแสดงต่างกันที่แนวที่แบ่งจุดหยุด


คอมพิวเตอร์เดสก์ทอป

มือถือ

ใช้คำสั่งค้นหาสื่อเพื่อเพิ่มจุดหยุดที่ 768px:

ตัวอย่าง

เมื่อความกว้างของหน้าจอ (หน้าต่างบราวเซอร์) ต่ำกว่า 768px ความกว้างของแต่ละคอลัมน์ควรเป็น 100%:

/* สำหรับอุปกรณ์เดสก์ทอป: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
@media only screen and (max-width: 768px) {
  /* สำหรับโทรศัพท์มือถือ: */
  [class*="col-"] {
    width: 100%;
  }
}

ทดลองด้วยตัวเอง

การออกแบบยิ่งใหญ่ของหลักที่มือถือเสมอ

ใช้หลักที่มือถือ (Mobile First) หมายถึงการออกแบบสำหรับเครื่องคอมพิวเตอร์หรืออุปกรณ์อื่นก่อนด้วยเครื่องมือถือ (นี่จะทำให้หน้าเว็บแสดงรวดเร็วยิ่งขึ้นบนอุปกรณ์ที่เล็กมากกว่า)

นี่หมายความว่าพวกเราต้องปรับปรุง CSS ของเรา

เมื่อความกว้างต่ำกว่า 768px พวกเราควรปรับปรุงการออกแบบแทนที่จะเปลี่ยนความกว้าง เราได้ทำนั้นแบบ "ใช้หลักที่มือถือ" ดังนี้:

ตัวอย่าง

/* สำหรับโทรศัพท์มือถือ: */
[class*="col-"] {
  width: 100%;
}
@media only screen and (min-width: 768px) {
  /* สำหรับเครื่องพีซี: */
  .col-1 {width: 8.33%;}
  .col-2 {width: 16.66%;}
  .col-3 {width: 25%;}
  .col-4 {width: 33.33%;}
  .col-5 {width: 41.66%;}
  .col-6 {width: 50%;}
  .col-7 {width: 58.33%;}
  .col-8 {width: 66.66%;}
  .col-9 {width: 75%;}
  .col-10 {width: 83.33%;}
  .col-11 {width: 91.66%;}
  .col-12 {width: 100%;}
}

ทดลองด้วยตัวเอง

จุดหยุดอื่น

คุณสามารถเพิ่มจุดหยุดเท่าที่คุณต้องการ。

เรายังจะใส่จุดหยุดระหว่างแทบเล็ตและมือถือ。


คอมพิวเตอร์เดสก์ทอป

แทบเล็ต

มือถือ

ดังนั้นเราเพิ่มคำสั่งค้นหาสื่อ (บน 600 พิกเซล) และเพิ่มกลุ่มคลาสใหม่สำหรับอุปกรณ์ที่มีพิกเซลมากกว่า 600 แต่น้อยกว่า 768 พิกเซล:

ตัวอย่าง

โปรดเก็บใจว่า ชั้นทั้งสองเหมือนกันเกือบทุกอย่าง แต่แตกต่างกันเพียงชื่อเดียว (col- และ col-s-):

/* สำหรับโทรศัพท์มือถือ: */
[class*="col-"] {
  width: 100%;
}
@media only screen and (min-width: 600px) {
  /* สำหรับเครื่องพีซีเทคนิค: */
  .col-s-1 {width: 8.33%;}
  .col-s-2 {width: 16.66%;}
  .col-s-3 {width: 25%;}
  .col-s-4 {width: 33.33%;}
  .col-s-5 {width: 41.66%;}
  .col-s-6 {width: 50%;}
  .col-s-7 {width: 58.33%;}
  .col-s-8 {width: 66.66%;}
  .col-s-9 {width: 75%;}
  .col-s-10 {width: 83.33%;}
  .col-s-11 {width: 91.66%;}
  .col-s-12 {width: 100%;}
}
@media only screen and (min-width: 768px) {
  /* สำหรับเครื่องพีซี: */
  .col-1 {width: 8.33%;}
  .col-2 {width: 16.66%;}
  .col-3 {width: 25%;}
  .col-4 {width: 33.33%;}
  .col-5 {width: 41.66%;}
  .col-6 {width: 50%;}
  .col-7 {width: 58.33%;}
  .col-8 {width: 66.66%;}
  .col-9 {width: 75%;}
  .col-10 {width: 83.33%;}
  .col-11 {width: 91.66%;}
  .col-12 {width: 100%;}
}

มันดูเหมือนว่าจะมีชั้นที่เหมือนกันกันสองกลุ่มมากไปด้วย แต่มันทำให้เรามีโอกาสใช้ HTML ในการตัดสินว่าจะเกิดอะไรกับคอลัมน์ในจุดหยุดแบ่งของแต่ละคอลัมน์:

ตัวอย่าง HTML

สำหรับเครื่องตั้งโต๊ะ:

ส่วนแรกและส่วนที่สามจะครอบคลุม 3 คอลัมน์ ส่วนกลางจะครอบคลุม 6 คอลัมน์。

สำหรับเครื่องพีซีเทคนิค:

ส่วนแรกจะครอบคลุม 3 คอลัมน์ ส่วนที่สองจะครอบคลุม 9 คอลัมน์ ส่วนที่สามจะแสดงที่ด้านล่างของส่วนแรกและที่สอง และจะครอบคลุม 12 คอลัมน์:

<div class="row">
  <div class="col-3 col-s-3">...</div>
  <div class="col-6 col-s-9">...</div>
  <div class="col-3 col-s-12">...</div>
</div>

ทดลองด้วยตัวเอง

breakpoint ของอุปกรณ์โดยทั่วไป

มีหลายรูปแบบหน้าจอและอุปกรณ์ที่มีความสูงและความกว้างต่างๆ มากมาย ดังนั้นจึงยากที่จะสร้าง breakpoint ที่เหมาะสมสำหรับแต่ละอุปกรณ์ เพื่อง่ายขึ้น คุณสามารถเลือกห้ากลุ่มนี้:

ตัวอย่าง

/* อุปกรณ์ขนาดย่อม (โทรศัพท์ ที่มีขนาด 600px และขนาดเล็กกว่า) */
@media only screen and (max-width: 600px) {...} 
/* อุปกรณ์ขนาดเล็ก (ตั้งโต๊ะมุมมองตั้งและโทรศัพท์มือถือใหญ่ ที่มีขนาด 600 พิกเซลและขนาดใหญ่กว่า) */
@media only screen and (min-width: 600px) {...} 
/* อุปกรณ์ขนาดกลาง (ตั้งโต๊ะมุมมองข้าง ที่มีขนาด 768 พิกเซลและขนาดใหญ่กว่า) */
@media only screen and (min-width: 768px) {...} 
/* อุปกรณ์ขนาดใหญ่ (คอมพิวเตอร์โล่งและเครื่องคอมพิวเตอร์เดสก์ที่มีขนาด 992px และขนาดใหญ่กว่า) */
@media only screen and (min-width: 992px) {...} 
/* อุปกรณ์ขนาดใหญ่ (เครื่องคอมพิวเตอร์เดสก์และเครื่องคอมพิวเตอร์โล่งที่มีขนาด 1200px และขนาดใหญ่กว่า) */
@media only screen and (min-width: 1200px) {...}

ทดลองด้วยตัวเอง

มุมมอง: ภาพถ่าย/สายแสง

media query ยังสามารถใช้เพื่อเปลี่ยนรูปแบบหน้าเว็บตามที่มุมมองของเบราวเซอร์:

คุณสามารถตั้งค่าคุณสมบัติ CSS กลุ่มหนึ่ง ซึ่งมีผลเมื่อความกว้างของหน้าต่างบราวเซอร์มากกว่าความสูง หรือที่เรียกว่า 'โหมดมุมมองนอกฝั่ง':

ตัวอย่าง

ถ้าที่อยู่ในโหมดมุมมองนอกฝั่ง (landscape mode) หน้าเว็บจะมีพื้นหลังที่เป็นสีน้ำเงินสะวันนา:

@media only screen and (orientation: landscape) {
  body {
    background-color: lightblue;
  }
}

ทดลองด้วยตัวเอง

ซ่อนองค์ประกอบด้วย media query

แบบใช้งานที่ระบุกันดีของ media query คือการซ่อนองค์ประกอบในขนาดหน้าจอต่างๆ:

ตัวอย่าง

/* ถ้าขนาดหน้าจอเท่ากับ 600 พิกเซลหรือน้อยกว่า โปรดซ่อนองค์ประกอบนี้ */
@media only screen and (max-width: 600px) {
  div.example {
    display: none;
  }
}

ทดลองด้วยตัวเอง

แก้ไขขนาดตัวอักษรด้วย media query

คุณยังสามารถใช้ media query ในการเปลี่ยนขนาดของตัวอักษรสำหรับตัวเลือกที่มีขนาดหน้าจอต่างๆ:

ตัวอย่าง

/* ถ้าขนาดหน้าจอเท่ากับ 601px หรือใหญ่กว่า โปรดตั้ง font-size ของ <div> ที่ 80px */
@media only screen and (min-width: 601px) {}}
  div.example {
    font-size: 80px;
  }
}
/* หากขนาดหน้าจอเป็น 600px หรือน้อยกว่า โปรดตั้ง font-size ของ <div> ให้เป็น 30px */
@media only screen and (max-width: 600px) {
  div.example {
    font-size: 30px;
  }
}

ทดลองด้วยตัวเอง

คู่มืออ้างอิง CSS @media

สรุปเกี่ยวกับทั้งหมดสื่อมีสาระและคุณสมบัติ/การแสดงที่เต็มตัว โปรดดูที่ อ่านเกี่ยวกับ @media กฎในคู่มืออ้างอิง CSS.