เป็นไปได้ไหมใน SASS ที่จะสืบทอดจากคลาสในไฟล์อื่น


102

คำถามพูดได้ทั้งหมด

ตัวอย่างเช่นถ้าฉันใช้Twitter Bootstrapฉันสามารถกำหนดคลาสในสไตล์ชีต SASS ของตัวเองที่สืบทอดมาจากคลาส CSS ของ Bootstrap ได้หรือไม่ หรือการสืบทอดใน SASS ทำงานได้ภายในขอบเขตของไฟล์เดียวเท่านั้น?

คำตอบ:


180

ใช่! มันเป็นไปได้.

หากคุณต้องการให้<button>องค์ประกอบทั้งหมดสืบทอด.btnคลาสจากปุ่มเริ่มต้นของ Twitter Bootstrap

ในstyles.scssไฟล์ของคุณคุณจะต้องนำเข้าก่อน_bootstrap.scss:

@import "_bootstrap.scss";

จากนั้นด้านล่างการนำเข้า:

button { @extend .btn; }

ฉันรู้สึกแย่ที่ทำเช่นนี้เนื่องจากคำตอบอื่น ๆ ตอบคำถามนี้ได้ค่อนข้างมาก (ฉันแค่ละเลยที่จะกลับมาตรวจสอบสักพักแล้วก็ลืม) แต่ฉันยอมรับคำตอบของคุณเพราะเป็นคำตอบที่สมบูรณ์ที่สุดนั่นคือคำตอบที่แนะนำฉันตลอดกระบวนการทั้งหมด ขอบคุณ!
ด่านเต๋า

4
สิ่งนี้ใช้ได้เฉพาะกับไฟล์ SCSS อื่น ๆ หรือไม่ คุณไม่สามารถทำสิ่งนี้กับไฟล์ CSS ได้หรือไม่?
ขยี้

1
โปรดใช้ความระมัดระวังเมื่อคุณใช้@extendร่วมกับ bootstrap / framework ใด ๆ เนื่องจากอาจไม่ได้ผลตามที่คุณคาดหวัง มีบางสิ่งที่ควรระวังตามที่ระบุไว้ในโพสต์นี้: stackoverflow.com/questions/30744625/…
Patrik Affentranger

2
แต่สิ่งนี้จะไม่ซ้ำกับ CSS จาก bootstrap.scss ถ้าคุณทำเช่นนั้นในหลายไฟล์ในโครงการของคุณ?
fritzmg

1
ไม่นำเข้านี้ทั้งbootstrap.cssเข้าstyles.cssหรือเพียงแค่.btn? ฉันหมายถึงในกลุ่มผลลัพธ์? หากนำเข้าทั้งหมดbootstrap.cssก็จะเพิ่มขนาดstyles.cssโดยไม่จำเป็น
maverick

8

** ฉันอาจจะเข้าใจผิด แต่ถ้าฉันได้รับสิ่งที่คุณกำลังพยายามทำคุณจะใช้@extend .classname;คำสั่งภายในองค์ประกอบที่คุณต้องการขยายได้หรือไม่? โดยปกติคุณควรแก้ไขโค้ดของคุณเองเพื่อรักษาความสามารถในการอัปเดตเท่านั้น


2

ตามความรู้ของฉันคุณต้องใช้@importไฟล์ที่มีคลาสที่คุณต้องการใช้ในไฟล์ SASS ของคุณเพื่อใช้ประโยชน์ในไฟล์นั้น อย่างไรก็ตามฉันไม่ใช่ผู้เชี่ยวชาญด้าน SASS / SCSS ดังนั้นอาจมีคนรู้วิธีอื่นในการใช้งานจากระยะไกลโดยที่ฉันไม่ทราบ


1

เช่นเดียวกับที่คำตอบที่ยอมรับได้แสดงให้เห็นว่าสิ่งนี้เป็นไปได้กับ @import อย่างไรก็ตาม @import ถูกเลิกใช้โดย sass

ทีม Sass ไม่สนับสนุนการใช้กฎ @import ต่อไป Sass จะค่อยๆเผยแพร่ออกไปในอีกไม่กี่ปีข้างหน้าและในที่สุดก็ลบมันออกจากภาษาทั้งหมด ต้องการกฎ @use แทน

กฎ @use เหมาะสำหรับใช้ตอนนี้มากกว่าเนื่องจากไม่ก่อให้เกิดมลพิษต่อขอบเขตของโมดูลการนำเข้า (ผู้ใช้) น่าเสียดายที่ในขณะที่เขียนกฎการใช้งานจะถูกนำมาใช้ใน Dart sass เท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.