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

คุณสมบัติและ API ใหม่ของ CSS สำหรับออกแบบเว็บในปี 2020


เพื่อช่วยให้นักพัฒนาปรับแต่งเว็บไซต์ด้วยการผสมผสาน JavaScript และ CSS คุณสมบัติ CSS ใหม่ๆ ได้รับการพัฒนาและรองรับในเบราว์เซอร์ยอดนิยม สรุปคุณสมบัติสำคัญดังนี้:

focus-within

แก้ปัญหา accessibility การโฟกัสภายในองค์ประกอบ

scroll-snap

เปิดใช้งานการเลื่อนและการชะลอแบบเนทีฟ (native scroll snap)

@media (prefers-*)

ตั้งค่า UI/UX ตามการตั้งค่าอุปกรณ์ของผู้ใช้ เช่น prefers-color-scheme, prefers-reduced-motion, prefers-contrast เพื่อการทำให้ส่วนบุคคลสูงขึ้น

position: sticky

เก็บ UI ให้อยู่ใน viewport ตลอดเวลา

Logical Properties

ช่วยให้ระยะห่างรอบๆ องค์ประกอบปรับตัวตามทิศทางการเขียน (RTL/LTR) ได้อัตโนมัติ

Gap Property

ใช้งานได้กับ Flexbox แล้ว - ให้คอนเทนเนอร์เป็นผู้จัดการช่องว่างแทนที่จะให้แต่ละลูกกำหนด margin เอง

backdrop-filter

ปรับสไตล์ด้านหลังองค์ประกอบได้สะดวก (เช่น blur, brightness)

CSS Houdini API

API ระดับต่ำที่ให้นักพัฒนาสามารถบอกเบราว์เซอร์ว่าต้องการอ่าน/เข้าใจ CSS แบบกำหนดเองอย่างไร รวมถึง Layout API, Paint API, Parser API, Properties & Values API, AnimationWorklet, Typed OM, Font Metrics API

aspect-ratio

รักษาอัตราส่วนมิติของสื่อ

size

ตั้งค่าความสูงและความกว้างในคุณสมบัติเดียว

min(), max(), clamp()

ตั้งค่าข้อจำกัดสำหรับคุณสมบัติ CSS ใดๆ

display: outer inner

ไวยากรณ์สองค่าสำหรับการจัดวางองค์ประกอบที่แม่นยำขึ้น

list-style-type

เพิ่มสไตล์กำหนดเองให้รายการ

CSS Modules

ใช้ JavaScript ขอโมดูลเฉพาะจากไฟล์ local หรือ remote ได้

CSS Regions

เติมเนื้อหาในพื้นที่ที่กำหนด

CSS Subgrid

สร้าง micro layouts ภายใน CSS Grid ได้

ตัวอย่าง: ใช้ :is() selector

<!DOCTYPE html> <html> <head> <style> * {    margin: 2%;    text-align: center; } :is(header, main, footer) span:after {    content: " Awesome!";    box-shadow: inset 0 0 8px lightgreen;    font-size: 1.2em;    font-family: Calibri; } :-webkit-any(header, div, section) span:after {    content: " Awesome!";    box-shadow: inset 0 0 8px lightgreen;    font-size: 1.2em;    font-family: Calibri; } :-moz-any(header, div, section) span:after {    content: " Awesome!";    box-shadow: inset 0 0 8px lightgreen;    font-size: 1.2em;    font-family: Calibri; } :matches(header, div, section) span:after {    content: " Awesome!";    box-shadow: inset 0 0 8px lightgreen;    font-size: 1.2em;    font-family: Calibri; } </style> </head> <body> <header> <span>:is() operator is</span> </header> <div> <span>DEMO</span> <span>Alt + F4</span> <span>Enter</span> </div> <section> <span>Howzit?</span> </section> </body> </html>

ตัวอย่าง: backdrop-filter

<html> <head> <style> #parent {    margin: 8%;    background-image: url("https://images.unsplash.com/photo-1611081352477- 9f1477ec09ae?crop=entropy&cs=tinysrgb&fit=crop&fm=jpg&h=400&ixlib=rb1.2.1&q=80&w=400");    padding: 2%;    width: 200px;    height: 200px;    box-shadow: 0 0 20px rgba(100,0,40,0.8); } h2 {    margin-top: 20vh;    backdrop-filter: invert(1); } </style> </head> <body> <div id="parent"> <div> <h2>Watch this cool effect</h2> </div> </div> </body>