الفرق بين المراجعتين لصفحة: «Sass/guide»
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
|||
(12 مراجعة متوسطة بواسطة 3 مستخدمين غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:دليل Sass}}</noinclude>لغة [[CSS]] لغة ممتعةٌ، ولكنّ ملفات الأنماط أصبحت أكبر وأكثر تعقيدًا، وصيانتها صعبة ومتعبة؛ يمكن حينذاك أن تساعدنا المعالجة الأوليَّة (preprocessor). تتيح لك [[Sass]] استخدام ميزات غير موجودة في [[CSS]] مثل المتغيرات، والتشعب، [[Sass/mixins|والمخاليط]]، والوراثة، وغيرها من الأشياء التي تجعل البرمجة بلغة [[CSS]] ممتعةً مرةً أخرى. | |||
لغة CSS لغة ممتعةٌ، ولكنّ ملفات الأنماط | |||
تحفظ Sass الملفات المعالجة على هيئة ملف CSS عادي، والذي يمكنك استخدامه في موقعك. | تحفظ Sass الملفات المعالجة على هيئة ملف [[CSS]] عادي، والذي يمكنك استخدامه في موقعك. | ||
الطريقة المباشرة لفعل ذلك هي باستخدام سطر الأوامر (terminal). | الطريقة المباشرة لفعل ذلك هي باستخدام سطر الأوامر (terminal). يمكنك بمجرد تثبيت [[Sass]] تصريف الملفات إلى [[CSS]] باستخدام الأمر <code>sass</code>. ستحتاج إلى إخبار [[Sass]] بالملف الذي تريد تصريفه، وكذلك أين سيُخرج ملف [[CSS]] الناتج. مثلًا، تنفيذ الأمر <code>sass input.scss output.css</code> في سطر الأوامر سيصرف الملف <code>input.scss</code> إلى الملف <code>output.css</code>. | ||
== المتغيرات == | == المتغيرات == | ||
المتغيرات هي وسيلة لتخزين المعلومات التي تريد أن تستخدمها أكثر من مرّةٍ في ملف الأنماط خاصتك. يمكنك تخزين أشياء مثل الألوان أو مجموعات الخطوط أو أيّ قيمة من قيم CSS ترى أنك ستحتاج إلى استخدامها. تستخدم Sass الرمز $ لإنشاء المتغيرات. إليك هذا المثال | المتغيرات هي وسيلة لتخزين المعلومات التي تريد أن تستخدمها أكثر من مرّةٍ في ملف الأنماط خاصتك. يمكنك تخزين أشياء مثل الألوان أو مجموعات الخطوط أو أيّ قيمة من قيم [[CSS]] ترى أنك ستحتاج إلى استخدامها. تستخدم [[Sass]] الرمز <code>$</code> لإنشاء المتغيرات. إليك هذا المثال:<syntaxhighlight lang="sass"> | ||
$font-stack: Helvetica, sans-serif; | $font-stack: Helvetica, sans-serif; | ||
$primary-color: #333; | $primary-color: #333; | ||
body { | body { | ||
font: 100% $font-stack; | |||
color: $primary-color; | |||
} | } | ||
</syntaxhighlight>عندما يُعالَج ملف Sass، يبدَّل المتغير <code>$font-stack</code> والمتغير <code>$primary-color</code>، اللذين عرّفناهما بقيمهما، ثمَّ يُخرج ملف [[CSS]] عادي بعدئذ. يمكن أن يكون هذا مفيدًا جدًّا عند استخدام ألوان خاصَّة بهوية الشركة البصرية لجعل الموقع متناسقًا.<syntaxhighlight lang="css"> | |||
</syntaxhighlight> | |||
عندما يُعالَج ملف Sass، | |||
body { | body { | ||
font: 100% Helvetica, sans-serif; | |||
color: #333; } | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== التشعّب (nesting) == | == التشعّب (nesting) == | ||
لا شكّ أنّك لاحظت أنَّ ملفات [[HTML]] مبنية على تسلسل متشعّب. من جهة أخرى، لغة [[CSS]] ليست كذلك. | |||
تسمح لك [[Sass]] بأن تُنظّم مُحدّدات [[CSS]] بنفس الطريقة التشعبيّة التي تجدها في ملفات [[HTML]]. انتبه إلى أنّ المبالغة في تشعيب القواعد سيؤدي إلى إنتاج قواعد [[CSS]] ذات محدِّدات قويَّة جدًا (over-qualified)، وهو أمرٌ يُعدّ من الممارسات السيئة عمومًا ولا ينصح به. | |||
مع أخذ ذلك بالحسبان، إليك مثالًا لبعض الأنماط المعتادة لقائمة تنقل في مواقع الويب:<syntaxhighlight lang="sass"> | |||
nav { | nav { | ||
ul { | |||
margin: 0; | |||
padding: 0; | |||
list-style: none; | |||
} | |||
li { | |||
display: inline-block; | |||
} | |||
a { | |||
display: block; | |||
padding: 6px 12px; | |||
text-decoration: none; | |||
} | |||
} | } | ||
</syntaxhighlight>لاحظ أنّ المحدّدات <code>[[HTML/ul|ul]]</code> و <code>[[HTML/li|li]]</code> و <code>[[HTML/a|a]]</code> مُتشعّبة داخل المحدد <code>nav</code>. هذه طريقة جيدة لتنظيم ملف [[CSS]] خاصتك وتحسين مقروئيته. عند إنشاء ملف [[CSS]]، ستحصل على:<syntaxhighlight lang="css"> | |||
</syntaxhighlight> | |||
لاحظ أنّ المحدّدات ul و li و a مُتشعّبة داخل المحدد | |||
nav ul { | nav ul { | ||
margin: 0; | |||
padding: 0; | |||
list-style: none; } | |||
} | |||
nav li { | nav li { | ||
display: inline-block; } | |||
} | |||
nav a { | nav a { | ||
display: block; | |||
padding: 6px 12px; | |||
text-decoration: none; } | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== المجزوءات (partials) == | == المجزوءات (partials) == | ||
يمكنك إنشاء ملفات Sass جزئية تحتوي على مقتطفات صغيرة من | يمكنك إنشاء ملفات [[Sass]] جزئية تحتوي على مقتطفات صغيرة من [[CSS]] والتي يمكنك تضمينها في ملفات [[Sass]] أخرى. هذه الطريقة جيدةٌ لتنظيم ملفات [[CSS]] خاصتك كما تساعد على جعلها أسهل للصيانة. المجزوء هو ببساطة ملف [[Sass]] يُسبق اسمه بشرطة سفلية بادئة (underscore) مثل <code>_partial.scss</code>. تُعلِم الشرطةُ السفلية لغةَ [[Sass]] أنّ الملف هو ملف جزئي، وأنّه لا ينبغي أن يُصرّف إلى ملف [[CSS]]. تُستخدم مجزوءات [[Sass]] مع التعليمة <code>@import</code>. | ||
== الاستيراد == | == الاستيراد == | ||
تملك [[CSS]] خيارُ الاستيراد الذي يتيح لك تقسيم ملفات [[CSS]] إلى أجزاء أصغر وأكثر ملائمةً للصيانة. العيب الوحيد فيه هو أنّه في كل مرة تستخدم قاعدة <code>[[CSS/@import|@import]]</code> في [[CSS]]، فإنّها تُنشئ طلبيةً (request) أخرى لبروتوكول [[HTTP]]. تبني [[Sass]] على عمل التعليمة <code>@import</code> الراهنة في [[CSS]]، ولكن بدلاً من أن ترسل طلبيةَ HTTP، فإنّها تأخذ الملف الذي تريد استيراده وتدمجه مع الملف الذي تريد أن تستورد إليه كيلا تُخدِّم إلّا ملفَّ [[CSS]] واحدٍ إلى المتصفح. | |||
لنفترض أنّ لديك ملفين اثنين للغة [[Sass]] أحدهما <code>_reset.scss</code> والآخر <code>base.scss</code>. نريد أن نستورد الملف <code>_reset.scss</code> في <code>base.scss</code>.<syntaxhighlight lang="sass"> | |||
// _reset.scss | // _reset.scss | ||
html, | html, | ||
body, | body, | ||
ul, | ul, | ||
ol { | ol { | ||
margin: 0; | |||
padding: 0; | |||
} | } | ||
</syntaxhighlight>الملف <code>base.scss</code>:<syntaxhighlight lang="sass"> | |||
// base.scss | // base.scss | ||
@import 'reset'; | @import 'reset'; | ||
body { | body { | ||
font: 100% Helvetica, sans-serif; | |||
background-color: #efefef; | |||
} | } | ||
</syntaxhighlight>لاحظ أننا استخدمنا <code>@import 'reset'</code> في الملف <code>base.scss</code>. لاحظ أنَّه لن تحتاج إلى تضمين الامتداد <code>.scss</code> عند استيراد الملف، إذ لغة [[Sass]] ذكيةٌ وستخمّن ذلك لوحدها. عند إنشاء ملف [[CSS]]، ستحصل على:<syntaxhighlight lang="css"> | |||
html, | |||
body, | |||
ul, | |||
ol { | |||
margin: 0; | |||
padding: 0; } | |||
body { | body { | ||
font: 100% Helvetica, sans-serif; | |||
background-color: #efefef; } | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== المخاليط (mixins) == | == المخاليط (mixins) == | ||
بعض الأشياء في CSS قد تكون مملة للكتابة، خاصةً مع CSS3 وكثرة بادئات المتصفّحات. يتيح لك المخلوط (mixin) إنشاء مجموعات من تصريحات CSS والتي يمكنك إعادة استخدامها في جميع الملفات الأخرى. | بعض الأشياء في [[CSS]] قد تكون مملة للكتابة، خاصةً مع [[CSS|CSS3]] وكثرة بادئات المتصفّحات. يتيح لك [[Sass/mixins|المخلوط]] (mixin) إنشاء مجموعات من تصريحات [[CSS]] والتي يمكنك إعادة استخدامها في جميع الملفات الأخرى. يمكنك كذلك تمرير قيم إلى المخلوط مما يجعله أكثر مرونةً. هناك عدة استخدامات نافعةٍ للمخاليط مثل بادئات المتصفّحات. إليك هذا المثال عن الخاصِّيَّة <code>[[CSS/border-radius|border-radius]]</code>. <syntaxhighlight lang="Sass"> | ||
@mixin border-radius($radius) { | |||
-webkit-border-radius: $radius; | -webkit-border-radius: $radius; | ||
-moz-border-radius: $radius; | -moz-border-radius: $radius; | ||
-ms-border-radius: $radius; | -ms-border-radius: $radius; | ||
border-radius: $radius; | border-radius: $radius; | ||
} | } | ||
.box { @include border-radius(10px); } | .box { @include border-radius(10px); } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
لإنشاء | لإنشاء [[Sass/mixins|مخلوطٍ]]، استخدم التعليمة <code>@mixin</code> ومرّر إليها اسمًا. لقد سمّينا المخلوط السابق بالاسم <code>[[CSS/border-radius|border-radius]]</code> ووضعنا المتغير <code>$radius</code> بين قوسين حتى نتمكن من تمرير قيمة نصف القطر متى شئنا. بعد إنشاء المخلوط، يمكنك استخدامه كما تستخدم تصريحات [[CSS]] باستعمال التعليمة <code>@include</code> متبوعًةً باسم المخلوط. سيبدو ملف [[CSS]] الناتج كما يلي:<syntaxhighlight lang="css"> | ||
.box { | |||
-webkit-border-radius: 10px; | |||
-moz-border-radius: 10px; | |||
-ms-border-radius: 10px; | |||
border-radius: 10px; } | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== التوسعة والوراثة (Extend/Inheritance) == | == التوسعة والوراثة (Extend/Inheritance) == | ||
هذه واحدةٌ من الميزات الأكثر فائدة في Sass. ستتيح لك القاعدة @extend مشاركة مجموعة من خاصيات CSS بين | هذه واحدةٌ من الميزات الأكثر فائدة في [[Sass]]. ستتيح لك القاعدة <code>[[Sass/@ rules|@extend]]</code> مشاركة مجموعة من خاصيات [[CSS]] بين المحدِّدات، وستساعدك على تجنب التكرار. سنحاول في المثال التالي إنشاء سلسلة بسيطة من رسائل الأخطاء والتحذيرات والنجاحات باستخدام ميزةٍ أخرى تعمل جنبًا إلى جنبٍ مع التوسعة ألا وهي الأصناف النائبة (placeholder classes). الأصناف النائبة هي نوعٌ خاصّ من الأصناف لا تُطبع إلّا عند توسيعها، ويمكن أن تساعد في جعل ملفات [[CSS]] نظيفة وأنيقة. | ||
<syntaxhighlight lang="Sass"> | <syntaxhighlight lang="Sass"> | ||
//لم تُوسّع على الإطلاق %equal-heights الناتج لأنّ CSS لن يُطبع هذا في ملف | //لم تُوسّع على الإطلاق %equal-heights الناتج لأنّ CSS لن يُطبع هذا في ملف | ||
%equal-heights { | %equal-heights { | ||
display: flex; | |||
flex-wrap: wrap; | |||
} | } | ||
//قد وُسِّعت %equal-heights الناتج لأنّ CSS سيُطبع هذا في ملف | //قد وُسِّعت %equal-heights الناتج لأنّ CSS سيُطبع هذا في ملف | ||
%message-shared { | %message-shared { | ||
border: 1px solid #ccc; | |||
padding: 10px; | |||
color: #333; | |||
} | } | ||
.message { | .message { | ||
@extend %message-shared; | |||
} | } | ||
.success { | .success { | ||
@extend %message-shared; | |||
border-color: green; | |||
} | } | ||
.error { | .error { | ||
@extend %message-shared; | |||
border-color: red; | |||
} | } | ||
.warning { | .warning { | ||
@extend %message-shared; | |||
border-color: yellow; | |||
} | } | ||
</syntaxhighlight>الكود البرمجي أعلاه يجعل المحدّدات <code>.message</code> و <code>.success</code> و <code>.error</code> و <code>.warning</code> تتصرف كما يتصرّف المحدّد <code>%message-shared</code>. هذا يعني أنَّه في أي مكان يظهر <code>%message-shared</code> فإنّ <code>.message</code> و <code>.success</code> و <code>.error</code> و <code>.warning</code> ستظهر كذلك. يحدث ذلك في ملف [[CSS]] المُنشأ، إذ يحصل كل صنفٍ من هذه الأصناف على نفس خاصيات CSS التي لدى <code>%message-shared</code>. سيساعدك هذا على تجنب كتابة الكثير من أسماء الأصناف لتمييز عناصر [[HTML]]. | |||
يمكنك توسيع معظم مُحّددات [[CSS]] بالإضافة إلى الأصناف النائبة في [[Sass]]، ولكن يبقى استخدام النائبات هو أسهل طريقةٍ للتأكد من ألّا تُوسّع صنفًا متشعبًا في مكانٍ آخر في ملف الأنماط، لأنّ ذلك قد يؤدي إلى إنشاء محدّدات غير مقصودة في ملف [[CSS]] الناتج. | |||
عندما تنشئ ملف [[CSS]]، فإنّه سيبدو هكذا: (لاحظ أنّ <code>%equal-heights</code> لا يُطبع لأنّه لم يُستخدم مطلقًًا).<syntaxhighlight lang="css"> | |||
.message, .success, .error, .warning { | |||
border: 1px solid #ccc; | |||
padding: 10px; | |||
عندما تنشئ ملف CSS فإنّه سيبدو هكذا | color: #333; } | ||
} | |||
.success { | .success { | ||
border-color: green; } | |||
} | |||
.error { | .error { | ||
border-color: red; } | |||
} | |||
.warning { | .warning { | ||
border-color: yellow; } | |||
</syntaxhighlight> | |||
== العوامل (operators) == | |||
استخدام الرياضيات في [[CSS]] يمكن أن يكون مفيدًا للغاية. لدى [[Sass]] عددٌ من العوامل الرياضيَّة القياسيَّة مثل <code>+</code> و <code>-</code> و <code>*</code> و <code>/</code> و<code>%</code>. سنجري في المثال التالي بعض العمليات الرياضيَّة البسيطة لحساب عرض العنصرين <code>aside</code> و <code>article</code>.<syntaxhighlight lang="Sass"> | |||
.container { | |||
width: 100%; | |||
} | } | ||
article[role="main"] { | article[role="main"] { | ||
float: left; | |||
width: 600px / 960px * 100%; | |||
} | } | ||
aside[role="complementary"] { | aside[role="complementary"] { | ||
float: right; | |||
width: 300px / 960px * 100%; | |||
} | } | ||
</syntaxhighlight>لقد أنشأنا شبكةً مرنةً (fluid grid) بسيطة، عرضها الكلّي 960px. تسمح لنا عومل Sass بفعل أشياء مثل أخذ قيم واحدتها البكسل (px) وتحويلها إلى نسب مئوية دون جهد كبيرٍ. سيبدو ملف [[CSS]] الناتج هكذا:<syntaxhighlight lang="css"> | |||
.container { | |||
width: 100%; } | |||
article[role="main"] { | article[role="main"] { | ||
float: left; | |||
width: 62.5%; } | |||
} | |||
aside[role="complementary"] { | aside[role="complementary"] { | ||
float: right; | |||
width: 31.25%; } | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== مصادر == | == مصادر == | ||
* [https://sass-lang.com/guide | * [https://sass-lang.com/guide صفحة Sass Basics في موقع Sass الرسمي]. | ||
[[تصنيف:Sass|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 06:59، 20 مايو 2018
لغة CSS لغة ممتعةٌ، ولكنّ ملفات الأنماط أصبحت أكبر وأكثر تعقيدًا، وصيانتها صعبة ومتعبة؛ يمكن حينذاك أن تساعدنا المعالجة الأوليَّة (preprocessor). تتيح لك Sass استخدام ميزات غير موجودة في CSS مثل المتغيرات، والتشعب، والمخاليط، والوراثة، وغيرها من الأشياء التي تجعل البرمجة بلغة CSS ممتعةً مرةً أخرى.
تحفظ Sass الملفات المعالجة على هيئة ملف CSS عادي، والذي يمكنك استخدامه في موقعك.
الطريقة المباشرة لفعل ذلك هي باستخدام سطر الأوامر (terminal). يمكنك بمجرد تثبيت Sass تصريف الملفات إلى CSS باستخدام الأمر sass
. ستحتاج إلى إخبار Sass بالملف الذي تريد تصريفه، وكذلك أين سيُخرج ملف CSS الناتج. مثلًا، تنفيذ الأمر sass input.scss output.css
في سطر الأوامر سيصرف الملف input.scss
إلى الملف output.css
.
المتغيرات
المتغيرات هي وسيلة لتخزين المعلومات التي تريد أن تستخدمها أكثر من مرّةٍ في ملف الأنماط خاصتك. يمكنك تخزين أشياء مثل الألوان أو مجموعات الخطوط أو أيّ قيمة من قيم CSS ترى أنك ستحتاج إلى استخدامها. تستخدم Sass الرمز $
لإنشاء المتغيرات. إليك هذا المثال:
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
font: 100% $font-stack;
color: $primary-color;
}
عندما يُعالَج ملف Sass، يبدَّل المتغير $font-stack
والمتغير $primary-color
، اللذين عرّفناهما بقيمهما، ثمَّ يُخرج ملف CSS عادي بعدئذ. يمكن أن يكون هذا مفيدًا جدًّا عند استخدام ألوان خاصَّة بهوية الشركة البصرية لجعل الموقع متناسقًا.
body {
font: 100% Helvetica, sans-serif;
color: #333; }
التشعّب (nesting)
لا شكّ أنّك لاحظت أنَّ ملفات HTML مبنية على تسلسل متشعّب. من جهة أخرى، لغة CSS ليست كذلك.
تسمح لك Sass بأن تُنظّم مُحدّدات CSS بنفس الطريقة التشعبيّة التي تجدها في ملفات HTML. انتبه إلى أنّ المبالغة في تشعيب القواعد سيؤدي إلى إنتاج قواعد CSS ذات محدِّدات قويَّة جدًا (over-qualified)، وهو أمرٌ يُعدّ من الممارسات السيئة عمومًا ولا ينصح به.
مع أخذ ذلك بالحسبان، إليك مثالًا لبعض الأنماط المعتادة لقائمة تنقل في مواقع الويب:
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li {
display: inline-block;
}
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
لاحظ أنّ المحدّدات ul
و li
و a
مُتشعّبة داخل المحدد nav
. هذه طريقة جيدة لتنظيم ملف CSS خاصتك وتحسين مقروئيته. عند إنشاء ملف CSS، ستحصل على:
nav ul {
margin: 0;
padding: 0;
list-style: none; }
nav li {
display: inline-block; }
nav a {
display: block;
padding: 6px 12px;
text-decoration: none; }
المجزوءات (partials)
يمكنك إنشاء ملفات Sass جزئية تحتوي على مقتطفات صغيرة من CSS والتي يمكنك تضمينها في ملفات Sass أخرى. هذه الطريقة جيدةٌ لتنظيم ملفات CSS خاصتك كما تساعد على جعلها أسهل للصيانة. المجزوء هو ببساطة ملف Sass يُسبق اسمه بشرطة سفلية بادئة (underscore) مثل _partial.scss
. تُعلِم الشرطةُ السفلية لغةَ Sass أنّ الملف هو ملف جزئي، وأنّه لا ينبغي أن يُصرّف إلى ملف CSS. تُستخدم مجزوءات Sass مع التعليمة @import
.
الاستيراد
تملك CSS خيارُ الاستيراد الذي يتيح لك تقسيم ملفات CSS إلى أجزاء أصغر وأكثر ملائمةً للصيانة. العيب الوحيد فيه هو أنّه في كل مرة تستخدم قاعدة @import
في CSS، فإنّها تُنشئ طلبيةً (request) أخرى لبروتوكول HTTP. تبني Sass على عمل التعليمة @import
الراهنة في CSS، ولكن بدلاً من أن ترسل طلبيةَ HTTP، فإنّها تأخذ الملف الذي تريد استيراده وتدمجه مع الملف الذي تريد أن تستورد إليه كيلا تُخدِّم إلّا ملفَّ CSS واحدٍ إلى المتصفح.
لنفترض أنّ لديك ملفين اثنين للغة Sass أحدهما _reset.scss
والآخر base.scss
. نريد أن نستورد الملف _reset.scss
في base.scss
.
// _reset.scss
html,
body,
ul,
ol {
margin: 0;
padding: 0;
}
الملف base.scss
:
// base.scss
@import 'reset';
body {
font: 100% Helvetica, sans-serif;
background-color: #efefef;
}
لاحظ أننا استخدمنا @import 'reset'
في الملف base.scss
. لاحظ أنَّه لن تحتاج إلى تضمين الامتداد .scss
عند استيراد الملف، إذ لغة Sass ذكيةٌ وستخمّن ذلك لوحدها. عند إنشاء ملف CSS، ستحصل على:
html,
body,
ul,
ol {
margin: 0;
padding: 0; }
body {
font: 100% Helvetica, sans-serif;
background-color: #efefef; }
المخاليط (mixins)
بعض الأشياء في CSS قد تكون مملة للكتابة، خاصةً مع CSS3 وكثرة بادئات المتصفّحات. يتيح لك المخلوط (mixin) إنشاء مجموعات من تصريحات CSS والتي يمكنك إعادة استخدامها في جميع الملفات الأخرى. يمكنك كذلك تمرير قيم إلى المخلوط مما يجعله أكثر مرونةً. هناك عدة استخدامات نافعةٍ للمخاليط مثل بادئات المتصفّحات. إليك هذا المثال عن الخاصِّيَّة border-radius
.
@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
-ms-border-radius: $radius;
border-radius: $radius;
}
.box { @include border-radius(10px); }
لإنشاء مخلوطٍ، استخدم التعليمة @mixin
ومرّر إليها اسمًا. لقد سمّينا المخلوط السابق بالاسم border-radius
ووضعنا المتغير $radius
بين قوسين حتى نتمكن من تمرير قيمة نصف القطر متى شئنا. بعد إنشاء المخلوط، يمكنك استخدامه كما تستخدم تصريحات CSS باستعمال التعليمة @include
متبوعًةً باسم المخلوط. سيبدو ملف CSS الناتج كما يلي:
.box {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-ms-border-radius: 10px;
border-radius: 10px; }
التوسعة والوراثة (Extend/Inheritance)
هذه واحدةٌ من الميزات الأكثر فائدة في Sass. ستتيح لك القاعدة @extend
مشاركة مجموعة من خاصيات CSS بين المحدِّدات، وستساعدك على تجنب التكرار. سنحاول في المثال التالي إنشاء سلسلة بسيطة من رسائل الأخطاء والتحذيرات والنجاحات باستخدام ميزةٍ أخرى تعمل جنبًا إلى جنبٍ مع التوسعة ألا وهي الأصناف النائبة (placeholder classes). الأصناف النائبة هي نوعٌ خاصّ من الأصناف لا تُطبع إلّا عند توسيعها، ويمكن أن تساعد في جعل ملفات CSS نظيفة وأنيقة.
//لم تُوسّع على الإطلاق %equal-heights الناتج لأنّ CSS لن يُطبع هذا في ملف
%equal-heights {
display: flex;
flex-wrap: wrap;
}
//قد وُسِّعت %equal-heights الناتج لأنّ CSS سيُطبع هذا في ملف
%message-shared {
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
.message {
@extend %message-shared;
}
.success {
@extend %message-shared;
border-color: green;
}
.error {
@extend %message-shared;
border-color: red;
}
.warning {
@extend %message-shared;
border-color: yellow;
}
الكود البرمجي أعلاه يجعل المحدّدات .message
و .success
و .error
و .warning
تتصرف كما يتصرّف المحدّد %message-shared
. هذا يعني أنَّه في أي مكان يظهر %message-shared
فإنّ .message
و .success
و .error
و .warning
ستظهر كذلك. يحدث ذلك في ملف CSS المُنشأ، إذ يحصل كل صنفٍ من هذه الأصناف على نفس خاصيات CSS التي لدى %message-shared
. سيساعدك هذا على تجنب كتابة الكثير من أسماء الأصناف لتمييز عناصر HTML.
يمكنك توسيع معظم مُحّددات CSS بالإضافة إلى الأصناف النائبة في Sass، ولكن يبقى استخدام النائبات هو أسهل طريقةٍ للتأكد من ألّا تُوسّع صنفًا متشعبًا في مكانٍ آخر في ملف الأنماط، لأنّ ذلك قد يؤدي إلى إنشاء محدّدات غير مقصودة في ملف CSS الناتج.
عندما تنشئ ملف CSS، فإنّه سيبدو هكذا: (لاحظ أنّ %equal-heights
لا يُطبع لأنّه لم يُستخدم مطلقًًا).
.message, .success, .error, .warning {
border: 1px solid #ccc;
padding: 10px;
color: #333; }
.success {
border-color: green; }
.error {
border-color: red; }
.warning {
border-color: yellow; }
العوامل (operators)
استخدام الرياضيات في CSS يمكن أن يكون مفيدًا للغاية. لدى Sass عددٌ من العوامل الرياضيَّة القياسيَّة مثل +
و -
و *
و /
و%
. سنجري في المثال التالي بعض العمليات الرياضيَّة البسيطة لحساب عرض العنصرين aside
و article
.
.container {
width: 100%;
}
article[role="main"] {
float: left;
width: 600px / 960px * 100%;
}
aside[role="complementary"] {
float: right;
width: 300px / 960px * 100%;
}
لقد أنشأنا شبكةً مرنةً (fluid grid) بسيطة، عرضها الكلّي 960px. تسمح لنا عومل Sass بفعل أشياء مثل أخذ قيم واحدتها البكسل (px) وتحويلها إلى نسب مئوية دون جهد كبيرٍ. سيبدو ملف CSS الناتج هكذا:
.container {
width: 100%; }
article[role="main"] {
float: left;
width: 62.5%; }
aside[role="complementary"] {
float: right;
width: 31.25%; }