CSS มีเดีย - ตัวอย่าง

CSS มีเดีย - ตัวอย่างเพิ่มเติม

ให้ดูตัวอย่างเพิ่มเติมที่ใช้มีเดีย

มีทางเทคนิคที่เป็นที่นิยมเพื่อส่งมอบสไตล์ที่ที่มีการปรับแต่งเฉพาะอุปกรณ์ต่าง ๆ นั่นก็คือ มีเดีย (media queries)

ตัวอย่างง่ายๆ หนึ่งนี้จะแสดงว่าเราจะเปลี่ยนสีพื้นหลังของอุปกรณ์ต่าง ๆ

CSS สำหรับคำที่ต้องการค้นหา

ตัวอย่าง

/* จะตั้งสีพื้นหลังของ body เป็นสีสนิ�าม */
body {
  background-color: tan;
}
/* ในหน้าจอที่มีขนาดหน้าจอน้อยกว่าหรือเท่า 992 พิกเซล จะตั้งสีพื้นหลังเป็นสีสky */
@media screen and (max-width: 992px) {
  body {
    background-color: blue;
  }
}
/* ในหน้าจอที่มีขนาดหน้าจอ 600 พิกเซลหรือน้อยกว่า จะตั้งสีพื้นหลังเป็นสีเมล็ดโรย */
@media screen and (max-width: 600px) {
  body {
    background-color: olive;
  }
}

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

คุณอยากรู้ว่าทำไมเราจึงใช้ 992px และ 600px อย่างแน่นอนหรือไม่? นั่นคือจุดหยุดที่พวกเราเรียกว่า 'จุดหยุดทั่วไป' (typical breakpoints) คุณสามารถดูได้ใน วิธีออกแบบเว็บไซต์แบบตอบสนอง Web เรียนรู้เกี่ยวกับข้อมูลจุดหยุดที่พบบ่อยใน HTML มากยิ่งขึ้น

คำถามของเมนู

ในตัวอย่างนี้ เราใช้คำถามเพื่อสร้างเมนูนำทางที่เปลี่ยนแปลงตามที่ต้องการบนหน้าจอที่มีขนาดต่างกัน:

หน้าจอขนาดใหญ่:

หน้าจอขนาดเล็ก:

ตัวอย่าง

/* ตัวแทนของตัวแก้ไขnavbar */
.topnav {
  overflow: hidden;
  background-color: #333;
}
/* ลิงก์ของ Navbar */
.topnav a {
  float: left;
  display: block;
  color: white;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
}
/* บนหน้าจอที่มีความกว้าง 600 พิกเซลล์ หรือน้อยกว่า ทำให้ลิงก์ของเมนูติดกันแทนที่จะจัดแบ่งอย่างขนานตรง */
@media screen and (max-width: 600px) {
  .topnav a {
    float: none;
    width: 100%;
  }
}

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

คำถามของคอลัมน์

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

หน้าจอขนาดใหญ่:

หน้าจอขนาดปานกลาง:

หน้าจอขนาดเล็ก:

ตัวอย่าง

/* สร้างคอลัมน์สี่คอลัมน์ที่ติดกันอย่างเหมือนกัน */
.column {
  float: left;
  width: 25%;
}
/* บนหน้าจอที่มีความกว้าง 992 พิกเซลล์ หรือน้อยกว่า จากสี่คอลัมน์เปลี่ยนเป็นสองคอลัมน์ */
@media screen and (max-width: 992px) {
  .column {
    width: 50%;
  }
}
/* บนหน้าจอที่มีความกว้างไม่เกินหรือเท่า 600 พิกเซลล์ ทำให้คอลัมน์ติดกันแทนที่จะจัดแบ่งอย่างขนานตรง */
@media screen and (max-width: 600px) {
  .column {
    width: 100%;
  }
}

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

คำแนะนำ:วิธีที่สร้างตัวแบ่งเนื้อหาที่สมานุกขนานของยุคใหม่คือ CSS Flexbox (โปรดดูตัวอย่างด้านล่าง) แต่ Internet Explorer 10 และเวอร์ชั่นก่อนหน้านี้ไม่สนับสนุนมัน ถ้าต้องการสนับสนุน IE6-10 ให้ใช้ float (เช่นที่แสดงในลักษณะนี้)。

เพื่อเรียนรู้เกี่ยวกับเซ็ฟท์เวิร์คแบบแบ่งเนื้อหาที่เปลี่ยนแปลงตามที่ต้องการ โปรดเรียน CSS Flexbox บทนี้。

เพื่อเรียนรู้เกี่ยวกับทฤษฎีวิเคราะห์เว็บแอปพลิเคชันที่เปลี่ยนแปลงตามที่ต้องการ โปรดเรียน วิธีออกแบบเว็บไซต์แบบตอบสนอง Web.

ตัวอย่าง

/* ตัวแทนของตัวแก้ไขแบบแบ่งเนื้อหาที่เปลี่ยนแปลงตามที่ต้องการ */
.row {
  display: flex;
  flex-wrap: wrap;
}
/* สร้างคอลัมน์สี่คอลัมน์ที่เท่ากัน */
.column {
  flex: 25%;
  padding: 20px;
}
/* บนหน้าจอที่มีความกว้าง 992 พิกเซลล์ หรือน้อยกว่า จากสี่คอลัมน์เปลี่ยนเป็นสองคอลัมน์ */
@media screen and (max-width: 992px) {
  .column {
    flex: 50%;
  }
}
/* บนหน้าจอที่มีความกว้างไม่เกินหรือเท่า 600 พิกเซลล์ ทำให้คอลัมน์ติดกันแทนที่จะจัดแบ่งอย่างขนานตรง */
@media screen and (max-width: 600px) {
  .row {
    flex-direction: column;
  }
}

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

การซ่อนองค์ประกอบด้วยคำถามมีเดียวกัน:

การใช้งานของคำถามมีเดียวกันที่มีอยู่อีกหนึ่งคือการซ่อนองค์ประกอบบนหน้าจอที่มีขนาดจอต่างกัน:

ฉันจะซ่อนในหน้าจอเล็ก

ตัวอย่าง

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

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

เปลี่ยนขนาดตัวอักษรด้วย media query

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

ขนาดตัวอักษรที่เปลี่ยนแปลงได้

ตัวอย่าง

/* หากขนาดหน้าจอมากกว่า 600 พิกเซล ตั้งค่าขนาดของตัวอักษรของ <div> ให้เป็น 80 พิกเซล */
@media screen and (min-width: 600px) {
  div.example {
    font-size: 80px;
  }
}
/* หากขนาดหน้าจอในระดับ 600px หรือน้อยกว่า ตั้งค่าขนาดของตัวอักษรของ <div> ให้เป็น 30px */
@media screen and (max-width: 600px) {
  div.example {
    font-size: 30px;
  }
}

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

คลังภาพที่มีการยืดตัว

ในตัวอย่างนี้ เราจะใช้ media query พร้อมกับ flexbox ต่อการสร้างคลังภาพที่มีการตอบสนองทางรูปแบบ:

ตัวอย่าง

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

เว็บไซต์ที่มีการยืดตัว

ในตัวอย่างนี้ เราจะใช้ media query พร้อมกับ flexbox ต่อการสร้างเว็บไซต์ที่มีการตอบสนองทางรูปแบบ ที่มีแถวนำทางและเนื้อหาที่สามารถยืดตัวได้:

ตัวอย่าง

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

ทิศทาง: รูปของมนุษย์ / ภาพแนวตรง

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

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

ตัวอย่าง

ถ้าที่อยู่ของเส้นทางอยู่ในโหมดภาพแนวตรง ใช้สีพื้นหลังสีฟ้าขาว:

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

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

ความกว้างของฉบับจากความสูง

คุณยังสามารถตั้งค่าความกว้างของฉบับมากกว่าความสูงโดยใช้รูปแบบ max-width และ min-width ได้เช่นกัน。

ตัวอย่างเช่น ขณะที่ความกว้างของเว็บเบราว์เซอร์อยู่ระหว่าง 600 ถึง 900 พิกเซล แก้ไขรูปแบบของ <div> อิเลิญต่อ:

ตัวอย่าง

@media screen and (max-width: 900px) and (min-width: 600px) {
  div.example {
    font-size: 50px;
    padding: 50px;
    border: 8px solid black;
    background: yellow;
  }
}

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

ใช้ค่าเพิ่มเติม: ในตัวอย่างด้านล่างนี้ เราใช้ comma (ที่คล้ายกับตัวอักษร OR) เพื่อเพิ่มคำสั่ง media query ติดตั้งอยู่กับคำสั่ง media query ที่มีอยู่แล้ว:

ตัวอย่าง

/* ขณะที่ความกว้างของหน้าจออยู่ระหว่าง 600 พิกเซลถึง 900 พิกเซล หรือมากกว่า 1100 พิกเซล - เปลี่ยนรูปแบบของ <div> */
@media screen and (max-width: 900px) and (min-width: 600px), (min-width: 1100px) {
  div.example {
    font-size: 50px;
    padding: 50px;
    border: 8px solid black;
    background: yellow;
  }
}

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

CSS @media คู่มือ

สรุปทั้งหมดของรูปแบบและคุณสมบัติ/การแสดงทั้งหมด โปรดดู CSS @media คู่มือ.

คำแนะนำ:หากต้องการเรียนรู้เกี่ยวกับออกแบบเว็บไซต์แบบตอบสนอง Web (ทางเลือกสำหรับอุปกรณ์และหน้าจอต่างๆ) และการใช้ media query ตัวเลื่อง โปรดอ่าน วิธีออกแบบเว็บไซต์แบบตอบสนอง Web.