- magick.css เป็น CSS framework แบบแทบจะไร้คลาสที่มาในไฟล์เดียว โดยมุ่งไปที่สไตล์เอกสารเว็บแนว “สมุดบันทึกของพ่อมด” ที่อ่านง่ายและสื่อสารข้อมูลได้ดี
- ใช้งานได้กับทุกขนาดหน้าจอและใช้ได้ โดยไม่ต้องมี JavaScript จึงนำไปใช้กับเอกสารแบบสแตติกหรือหน้า HTML น้ำหนักเบาได้ทันทีอย่างง่ายดาย
- ติดตั้งได้ผ่าน CDN, การใส่ไฟล์โดยตรง, และการ import ผ่าน npm พร้อมแนะนำการใช้งานร่วมกับ
normalize.css
- โครงสร้างพื้นฐานคือคอลัมน์ที่อ่านสบายโดยยึด
และ เป็นหลัก และสามารถแนบคำอธิบายเสริมข้างเนื้อหาด้วย `` และ sidenote
- มีการจัดสไตล์ให้กับองค์ประกอบ HTML พื้นฐานเกือบทั้งหมด แต่ฟีเจอร์ที่ต้องมีโครงสร้างเฉพาะ เช่น sidenote และเลขบรรทัดของโค้ด จะให้มาเป็นคลาสแยก
เป้าหมายและลักษณะของ magick.css
- magick.css เป็น CSS framework ที่มินิมัลและส่วนใหญ่เป็นแบบ classless
- ทั้งหมดถูกรวมไว้ในไฟล์เดียว และสามารถตามดูเหตุผลของการเลือกต่าง ๆ ได้จากคอมเมนต์ใน CSS
- ในเชิงภาพลักษณ์ มุ่งสร้างบรรยากาศแบบเวทมนตร์ที่ทั้งสง่างามและขี้เล่น พร้อมให้ความสำคัญกับความอ่านง่ายและการสื่อสารข้อมูล
- คงรูปลักษณ์และการทำงานไว้ได้บนทุกอุปกรณ์และทุกขนาดหน้าจอ และทำงานได้ โดยไม่ต้องมี JavaScript
- ได้แรงบันดาลใจจาก LaTeX, คู่มือกฎ TTRPG แบบเก่า, concrete.css, Tufte CSS, และแนวคิดด้าน brutalism แบบ “usability as design”
การติดตั้งและวิธีใช้งาน
- หากต้องการลองให้เร็วที่สุด ให้เพิ่ม stylesheet จาก CDN 2 ตัวใน HTML ``
- สามารถดาวน์โหลดไฟล์
magick.css จาก repository แล้วใส่รวมเหมือน CSS ปกติได้เช่นกัน
- ในโปรเจกต์ JavaScript สามารถติดตั้งผ่าน npm แล้ว import ได้
npm install normalize.css magick.css
import 'normalize.css'
import 'magick.css'
- ด้วยการออกแบบที่ 99% classless จึงทำให้นำไปใช้กับเอกสาร HTML5 ที่มีอยู่แล้วได้ง่าย
เลย์เอาต์ที่เน้นการอ่าน
- หากต้องการสร้างคอลัมน์แบบ responsive แนะนำให้ครอบคอนเทนต์ทั้งหมดด้วย
และแยกบทความยาวด้วย
- โครงสร้างเอกสารทั่วไปคือวาง
, หลาย ๆ , และ ไว้ภายใน
- แม้ไม่ทำตามโครงสร้างนี้ ก็ยังสามารถใช้ magick.css เฉพาะด้าน typography และคอมโพเนนต์ที่จัดสไตล์ไว้ได้
- ข้อมูลเพิ่มเติมสามารถแสดงด้วยแท็ก ``
- หากต้องการใส่บริบทเพิ่มเติมกลางเนื้อหา สามารถใช้ sidenote ได้ โดยระบบจะใส่หมายเลขให้อัตโนมัติ
สไตล์ขององค์ประกอบ HTML พื้นฐาน
- typography ครอบคลุมหัวเรื่อง, ย่อหน้า, ลิงก์, การเน้นข้อความ, ขีดเส้นใต้, ตัวอักษรขนาดเล็ก, อินไลน์โค้ด และอื่น ๆ
- heading ที่ต่ำกว่า `` จะไม่ถูกจัดสไตล์โดย magick.css
- มองว่า heading ระดับต่ำมักถูกใช้เพื่อวัตถุประสงค์เฉพาะ มากกว่าจะใช้เป็นลำดับชั้นของเนื้อหา
- หากจำเป็น ผู้ใช้สามารถจัดสไตล์เองได้
- รายการถูกทำให้เรียบง่ายเพื่อไม่ให้รบกวนเนื้อหา
- รายการแบบไม่เรียงลำดับ
- รายการแบบเรียงลำดับ
- รายการคำอธิบาย
- ตารางใช้สไตล์ที่ชัดเจนและกระชับเพื่อให้โฟกัสกับข้อมูลได้
- ฟอร์มและองค์ประกอบรับข้อมูลสามารถใช้เดี่ยว ๆ หรือใช้ภายใน form ก็ได้
- ช่องกรอกข้อความมีการใช้งานได้หลากหลาย จึงไม่ได้กำหนดขนาดหรือการจัดวางแบบตายตัวมากนัก
- สำหรับ checkbox และ radio button คาดว่า label จะอยู่หลัง input
- form ถูกจัดสไตล์ให้ดึงความสนใจของผู้ใช้ด้วยอารมณ์คล้ายสมุดโน้ตกระดาษเขียนมือ
สื่อ, โค้ด, และคำอ้างอิง
- รูปภาพและวิดีโอสามารถวางเดี่ยว ๆ หรือใส่ไว้ใน `` พร้อม caption ได้
- `` ที่วางเดี่ยวจะแสดงตามขนาดจริงเมื่อมีพื้นที่เพียงพอ และจะไม่ถูกยืดหรือบิดเบี้ยว
- การใช้
และ ช่วยให้สื่อดูเด่นขึ้นและเพิ่มบริบทได้
- โค้ดแบบอินไลน์ใช้
และบล็อกโค้ดขนาดใหญ่ใช้โครงสร้างที่ ครอบ ``
- ชิ้นส่วนโค้ดก็สามารถแสดงเป็น figure ได้เช่นกัน
- คำอ้างอิงใช้ ``
- การระบุแหล่งที่มาสามารถเพิ่มด้วย `` ภายใน blockquote
- ข้อความที่การจัดรูปแบบสำคัญ เช่น บทกวี สามารถครอบด้วย `` ได้
ฟีเจอร์ที่ใช้ผ่านคลาสแยก
- ฟีเจอร์บางอย่างต้องใช้คลาสพิเศษ จึงถูกแยกออกจากการทำงานแบบ classless หลักของ magick.css
- หากต้องการใส่ sidenote ลงในเนื้อหา ต้องเพิ่มทั้งตำแหน่งอ้างอิงและตัวเนื้อหา sidenote ไปพร้อมกัน
Sidenote Content.
- บนอุปกรณ์พกพา sidenote จะย้ายเข้ามาอยู่ในคอลัมน์หลัก
- หากต้องการแสดงเลขบรรทัดในโค้ดหรือบล็อก pre จะต้องแทรก `` ที่เก็บเลขของแต่ละบรรทัด
- การแทรกเลขบรรทัดสามารถทำได้ตามต้องการ ไม่ว่าจะด้วยมือ, JavaScript, หรือการประมวลผลฝั่งเซิร์ฟเวอร์
ลิงก์โปรเจกต์
- หากชอบ สามารถกด star ให้บน GitHub ได้
- หากสนใจผลงานอื่น ๆ สามารถเข้าร่วม Discord ได้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ชอบที่ใส่ใจรายละเอียด ตั้งแต่วิธีที่ฟอนต์ลายมือในช่องกรอกข้อมูลเข้ากับเซริฟแบบออร์แกนิก ไปจนถึงระยะบรรทัดและน้ำหนักตัวอักษรที่สมดุล
โค้ดสำหรับคนที่สนใจ: https://github.com/wintermute-cell/magick.css/blob/master/ma...
อยากให้มี checkbox และ radio button แบบคัสตอมด้วย ตอนนี้มีแค่สองอย่างนี้ที่ทำให้หลุดจากบรรยากาศ ส่วนที่เหลือยอดเยี่ยมจริง ๆ อาจทำให้ผมได้เริ่มทำบล็อกที่คิดมาตั้งนานในที่สุดก็ได้
มันเข้ากันมากจนแทบไม่รู้สึกถึงการมีอยู่ของมันเลย
ต้องดูตรงแท็กปิดที่เป็น header ไม่ใช่ main
ผมอยากดูเร็ว ๆ ว่าหน้าตาเป็นอย่างไร แต่ถ้าจะดูต้นฉบับต้องผ่านอีกหลายขั้นตอน อย่างน้อยก็น่าจะมีลิงก์ที่คลิกได้ไปยังรูปแบบที่ยังไม่ผ่านการประมวลผลโดยตรง
แปลกดีที่ความรู้สึกแบบนั้นดึงดูดมากจริง ๆ
แถมรูปลักษณ์ที่มินิมอลสุด ๆ แทบมีแต่ HTML เหมือนเว็บไซต์ของอาจารย์มหาวิทยาลัยสมัยก่อนก็ดูเท่
อยากให้บล็อกส่วนตัวได้รับความนิยมมากกว่านี้
อย่างน้อยในงานเขียนของผม ไม่ว่าจะเป็นบทความเทคนิคหรือไม่ รูปภาพกับข้อความก็ประกอบกันเป็นเรื่องเล่าต่อเนื่องเดียวกัน การจัดรูปภาพใหม่แล้วย้ายไปไว้ที่อื่นนั้นไม่สมเหตุสมผลพอ ๆ กับทำแบบนั้นกับย่อหน้า
จริง ๆ แล้วไม่ควรเขียนอะไรทั้งประโยคเป็นตัวพิมพ์ใหญ่ทั้งหมด วิธีเน้นแบบนี้เหมือนการขีดเส้นใต้ เป็นมรดกจากยุคเครื่องพิมพ์ดีด เพราะตอนนั้นใช้ฟอนต์ได้แค่แบบเดียว
รูปทรงของตัวพิมพ์ใหญ่คล้ายกันเกินไป ไม่มีความเปลี่ยนแปลงของความสูงตัวอักษร ทำให้สายตาอ่านยากขึ้น ถ้าใช้ตัวพิมพ์เล็กและใหญ่ปนกัน จะมีตัวอักษรที่ยื่นลงล่างอย่าง y, p, j และตัวที่ยื่นขึ้นบนอย่าง b, d, t ทำให้เกิดความหลากหลายและจับรูปคำได้ง่ายกว่า
สำหรับการเน้น ควรใช้ขนาด น้ำหนักตัวอักษร หรืออิตาลิกจะดีกว่า
แต่ก็เพราะแบบนั้นจึงเกิดสไตล์ที่เป็นเอกลักษณ์
ถึงอย่างนั้นผมก็คิดว่าชอบนะ
framework อเนกประสงค์ที่ใช้ได้ดีมาก ๆ หาได้ไม่ยาก แต่ถ้าอยากได้อะไรที่มีรสชาติชัดเจนจะยากกว่ามาก
https://www.mcsweeneys.net/articles/im-comic-sans-asshole
โดยเฉพาะเมื่อน้ำหนักที่บางลงเจอกับธีมมืด ก็ทำให้อ่านข้อความค่อนข้างลำบาก
แทนที่จะจัดการแบบสามัญสำนึก สุดท้าย Google ต้องไปทำวิจัยผู้ใช้กับคน 800 คน แล้วได้ข้อสรุปว่า “ช่องกรอกข้อความควรดูเหมือนช่องกรอกข้อความ”: https://medium.com/google-design/the-evolution-of-material-d...
เคยทำไว้ตัวหนึ่งเหมือนกัน แต่อาจไม่ดีเท่านี้: https://elementcss.neocities.org