Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> CSS

การสร้าง Media Dependent Style Sheets ด้วย CSS

Media Dependent Stylesheets คือสไตล์ชีทที่ใช้งานได้เฉพาะเมื่อ media type ตรงกับประเภทอุปกรณ์ที่แสดงเอกสาร

สามารถสร้างได้ 3 วิธี:

  1. ใช้กฎ @media At-rules
  2. ใช้กฎ @import At-rules
  3. ใช้แอตทริบิวต์ media ในแท็ก HTML <link>

ตัวอย่างที่ 1: ใช้ <link media> แยกไฟล์ Screen และ Print

HTML Document:

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" type="text/css" media="screen" href="screen.css">
  <link rel="stylesheet" type="text/css" media="print" href="print.css">
</head>
<body>
  <div></div>
</body>
</html>

CSS document (screen.css):

div {
  height: 50px; width: 100px; border-radius: 20%;
  border: 2px solid blueviolet;
  box-shadow: 22px 12px 3px 3px lightblue;
  position: absolute; left: 30%; top: 20px;
}

CSS document (print.css):

div {
  height: 50px; width: 100px; border-radius: 20%;
  border: 2px solid #dc3545;
  box-shadow: 22px 12px 3px 3px #dc3545;
  position: absolute; left: 30%; top: 20px;
}

ผลลัพธ์

แสดงบนหน้าจอ (screen media type):

การสร้าง Media Dependent Style Sheets ด้วย CSS

แสดงในโหมดพิมพ์ (print media type):

การสร้าง Media Dependent Style Sheets ด้วย CSS

ตัวอย่างที่ 2: ใช้ @media ภายในไฟล์ CSS เดียว

<!DOCTYPE html>
<html>
<head>
  <style type="text/css">
    p {
      background-origin: content-box; background-repeat: no-repeat;
      background-size: cover; box-shadow: 0 0 3px black;
      padding: 20px; background-origin: border-box;
    }
    @media screen and (max-width: 900px) {
      p {
        background: url("https://www.tutorialspoint.com/android/images/android.jpg");
        color: #c303c3;
      }
    }
    @media screen and (max-width: 500px) {
      p {
        color: black;
        background: url("https://www.tutorialspoint.com/react_native/images/react-native.jpg");
      }
    }
  </style>
</head>
<body>
  <p>This is demo text... (ยาว)</p>
</body>
</html>

ผลลัพธ์

หน้าจอกว้างกว่า 500px:

การสร้าง Media Dependent Style Sheets ด้วย CSS

หน้าจอแคบกว่า 500px:

การสร้าง Media Dependent Style Sheets ด้วย CSS

เปรียบเทียบวิธีการ

วิธีข้อดีข้อเสีย
<link media>Browser ดาวน์โหลดเฉพาะไฟล์ที่เกี่ยวข้อง ประหยัด bandwidthหลายไฟล์ = หลาย HTTP requests
@media ใน CSSไฟล์เดียว จัดการง่าย Cache ได้ดีดาวน์โหลดทุกสไตล์แม้ไม่ได้ใช้
@importแยกไฟล์ได้บล็อกการโหลด (blocking) ไม่แนะนำให้ใช้

แนะนำ: ใช้ @media ในไฟล์ CSS หลัก ร่วมกับ <link media="print"> สำหรับ print stylesheet แยกต่างหาก