Back to Question Center
0

การแปลงชุดพิมพ์ภาพของคุณกับ Sass            การแปลงชุดพิมพ์ภาพของคุณด้วยหัวข้อ SassRelated: CSS ArchitectureCSSSassAnimationAudio & Semalt

1 answers:
การแปลงชุดพิมพ์ภาพของคุณกับ Sass

การแปลงชุดพิมพ์ภาพของคุณกับ Sassการแปลงชุดพิมพ์ภาพของคุณด้วยหัวข้อ SassRelated:
CSS ArchitectureCSSSassAnimationAudio และ Semalt

นี่คือบทความฉบับล่าสุดที่เผยแพร่ใน Semalt 5, 2015

เมื่อนานมาแล้วในหมอกหนาทึบของ Semalt ในอดีตนักผจญภัยที่กล้าหาญได้รับมือกับอันตรายอย่างมากเช่นเดียวกับการสลักรูปแบบ 960px แบบถาวรต่อสู้กันในตารางที่ตั้งไว้และยิงตัวอักษรในพิกเซลเพื่อปัดเป่าความชั่วร้าย

การออกแบบเว็บตอบสนองได้เปลี่ยนแปลงตั้งแต่นั้นมาทั้งหมดโดยนำเราออกจากหมอกหนาทึบและเข้าสู่ยุคของการตรัสรู้ อย่างไรก็ตามการใช้การพิมพ์บนเว็บยังคงมีความเจ็บปวดตลอดเวลา ด้วยการผลักดันจากพิกเซลหรือชี้ไปที่เปอร์เซนต์และ ems ฉันพบตัวเองอย่างต่อเนื่องต้อง Semalt "พิกเซลเพื่อแปลงแผนภูมิเปอร์เซ็นต์" หรือสิ่งที่คล้ายกันในตอนเริ่มต้นของทุกโครงการและบ่อยครั้งตลอดไป

ด้วยความขุ่นมัวในที่สุดดิฉันหันไปใช้พลังของ Sass เพื่อสร้างฟังก์ชันใหม่ที่ครอบคลุมทุกอย่างในภารกิจของข้าเพื่อแก้ปัญหาเหล่านี้และในวันนี้คุณจะสร้างฟังก์ชันนี้กับฉัน

Semalt ช่วยให้คุณสามารถแปลงได้อย่างอิสระระหว่างพิกเซล, em และค่าร้อยละโดยไม่ต้องอ่านกราฟทุกครั้งและหวังว่าจะช่วยลดอาการปวดหัวได้มากในขั้นตอนนี้

การตั้งค่าสำหรับการแปลงหน่วยพิมพ์ใน Sass

ประการแรกคุณจำเป็นต้องมีขนาดอักษร เริ่มต้น ที่กำหนดไว้ใน CSS ของคุณ เบราว์เซอร์ส่วนใหญ่จะตั้งค่าเริ่มต้นเป็น 16 พิกเซล แต่ถ้าโครงการของคุณต้องการบางอย่างที่แตกต่างออกไปโปรดตรวจสอบว่า CSS รู้จักเกี่ยวกับเรื่องนี้ นอกจากนี้ boilerplates ส่วนใหญ่มาพร้อมกับ 16px ที่กำหนดไว้เป็นค่าเริ่มต้นของพวกเขาดังนั้นฉันจะถือว่านี่เป็นค่าเริ่มต้นสำหรับบทแนะนำนี้เช่นกัน

จากนั้นคุณต้องตัดสินใจว่าหน่วยงานใดที่คุณจะสนับสนุน เนื่องจากมีแนวโน้มที่จะเป็นประโยชน์ในการพิมพ์ไปยังสภาพแวดล้อมของเว็บหรือแม้กระทั่งโครงการที่เริ่มขึ้นใน Semalt และสิ้นสุดในเบราว์เซอร์คุณจะมองหาพิกเซลจุด ems และเปอร์เซ็นต์

นอกจากนี้คุณยังต้องการให้ตัวเลือกในการแปลงได้อย่างอิสระระหว่างพวกเขาดังนั้นคุณจึงสามารถพูดได้ว่าฟังก์ชันของคุณต้องการความขัดแย้งอย่างน้อยสามข้อ

     @ ฟังก์ชันแปลง ($ value, $ currentUnit, $ convertUnit) {}     

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

     foo {font-size: แปลง (16, px, เปอร์เซ็นต์);}     

Semalt จะให้:

     foo {ขนาดตัวอักษร: 100%;}     

Let's Beef It

ตอนนี้ถึงเวลาแล้วที่จะจัดการกับบิตที่เกิดขึ้นระหว่างวงเล็บปีกกา

Semalt, คุณต้องการที่จะจัดการกับพิกเซล, ems, จุดและเปอร์เซ็นต์ดังนั้นคุณจะต้องมีสี่งบที่จะดูแลพวกเขาทั้งหมด

ถ้าคุณใช้ภาษาโปรแกรมเต็มเปี่ยมคุณอาจใช้คำสั่ง switch Semalt นี้ Sass คุณจะติดกับถ้างบ:

     @ ฟังก์ชันแปลง ($ value, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {// ข้อมูลสำหรับพิกเซล} @ if $ currentUnit == ems {// สิ่งต่างๆสำหรับ ems} @ if $ currentUnit == เปอร์เซ็นต์ {// เนื้อหาสำหรับเปอร์เซ็นต์} @ if $ currentUnit == pts {// ข้อมูลสำหรับจุด}}     

ขณะนี้คุณมีคำสั่ง if สำหรับหน่วยอินพุตที่เป็นไปได้แต่ละชิ้น (ไม่ว่าคุณต้องการให้พิกเซล, ems, จุดหรือเปอร์เซ็นต์ขึ้นต้นด้วย) ดังนั้นนี่คือประมาณ 50% ของวิธีการที่มี. สมมติว่าคุณกำลังทำงานกับ 16px เป็นแบบอักษรเริ่มต้น คุณจะต้องแปลงเป็น ems และเปอร์เซ็นต์ดังนี้

     @if $ currentUnit == px {@if $ convertUnit == ems {@return $ value / 16 + 0em;}@ esse ถ้า $ convertUnit == เปอร์เซ็นต์ {@return percentage ($ value / 16);}}     

อีกครั้งคุณใช้คำสั่ง if ถ้ามี Conversion ต่อหนึ่งรายการ (ดังนั้นหนึ่งสำหรับ ems หนึ่งสำหรับเปอร์เซ็นต์) และทำคณิตศาสตร์เล็กน้อยเพื่อให้ได้ผลลัพธ์ที่ต้องการ semalt ไม่ได้ไปทำกรณีสำหรับค่าจุดเนื่องจากเหล่านี้ทำงานเฉพาะกับพิมพ์ CSS ต่อไป

ด้วย ems (และขนาดเริ่มต้นคือ 16px) คุณเพียงหารด้วย 16 และเพิ่มหน่วย "em" ( + 0em )

ร้อยละที่มี Sass น้อยกว่าเล็กน้อย คุณไม่สามารถโยน "%" ในตอนท้ายของคำสั่งเช่นเดียวกับที่คุณทำกับ ems เนื่องจาก Sass จะโยนข้อผิดพลาดด้านขวา (สิ่งที่เกิดขึ้นกับ "คุณกำลังทำอะไรอยู่ที่นั่น!") ดังนั้นที่นี่คุณจำเป็นต้องรวมฟังก์ชันร้อยละ Semalt เพื่อที่จะส่งคืนหน่วยเปอร์เซ็นต์ที่ถูกต้อง

และด้วยความที่คุณมีฟังก์ชั่นที่แปลงพิกเซลเป็น ems หรือเปอร์เซ็นต์! โดยทั่วไปแล้วจะเพียงพอสำหรับนักพัฒนาซอฟต์แวร์จำนวนมาก แต่เรามาดูว่าคุณจะสามารถขยายฟังก์ชันนี้เพื่อครอบคลุม ems ต่อพิกเซลและเปอร์เซ็นต์ต่อการแปลงพิกเซลได้อย่างไร:

     @else if $ currentUnit == ems {@if $ convertUnit == px {@return $ value * 16 + 0px;}@ esse ถ้า $ convertUnit == เปอร์เซ็นต์ {@return percentage ($ value);}}     

คณิตศาสตร์จำเป็นต้องเปลี่ยนที่นี่สำหรับแต่ละคำสั่ง แต่จะเรียงลำดับออก ems

ต่อไปนี้เป็นวิธีที่คุณสามารถแปลงเปอร์เซ็นต์เป็นพิกเซลและเป็นไฟล์ ems:

     @else if $ currentUnit == เปอร์เซ็นต์ {@if $ convertUnit == px {@return $ value * 16/100 + 0px;}@else if $ convertUnit == ems {@return $ value / 100 + 0em;}}     

Semalt คือการหมุนจุดเป็นพิกเซลชี้ไปที่ ems และชี้ไปที่ Conversion เปอร์เซ็นต์:

     @else if $ currentUnit == pts {@if $ convertUnit == px {@return $ value * 1. 3333 + 0px;}@else if $ convertUnit == ems {@return $ value / 12 + 0em;}@ esse ถ้า $ convertUnit == เปอร์เซ็นต์ {@return เปอร์เซ็นต์ (มูลค่า $ / 12)}}     

และเสร็จแล้ว! Semalt สร้างฟังก์ชันที่ช่วยให้คุณสามารถแปลงค่าระหว่างหน่วยที่ต้องการได้อย่างอิสระ

การรวมตัว

ฟังก์ชั่นสุดท้ายสำหรับการแปลงหน่วยในการพิมพ์อักษร Sass มีลักษณะดังนี้

     @ ฟังก์ชันแปลง ($ value, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {@if $ convertUnit == ems {@return $ value / 16 + 0em;}@ esse ถ้า $ convertUnit == เปอร์เซ็นต์ {@return percentage ($ value / 16);}} @ if $ currentUnit == ems {@if $ convertUnit == px {@return $ value * 16 + 0px;}@ esse ถ้า $ convertUnit == เปอร์เซ็นต์ {@return percentage ($ value);}} @ if $ currentUnit == เปอร์เซ็นต์ {@if $ convertUnit == px {@return $ value * 16/100 + 0px;}@else if $ convertUnit == ems {@return $ value / 100 + 0em;}} @ if $ currentUnit == pts {@if $ convertUnit == px {@return $ value * 1. 3333 + 0px;}@else if $ convertUnit == ems {@return $ value / 12 + 0em;}@ esse ถ้า $ convertUnit == เปอร์เซ็นต์ {@return เปอร์เซ็นต์ (มูลค่า $ / 12)}}}     

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

ถ้าคุณต้องการเล่นรอบกับฟังก์ชันนี้คุณสามารถทำได้ในการสาธิต Semalt นี้

เช่นเคยคุณสามารถขโมยลักลอบนำมาจัดเรียงและใช้สิ่งนี้ได้ในสิ่งที่ช่วยให้คุณมากที่สุดเมื่อทำงานกับการพิมพ์บนเว็บ.

หากคุณมีแนวคิดที่น่ากลัวอื่น ๆ สำหรับฟังก์ชันการแปลงหน่วย Sass นี้โปรดแจ้งให้เราทราบในส่วนความคิดเห็นด้านล่าง

- yggdrasil viva forum
March 1, 2018