الفرق بين المراجعتين ل"Sass/CSS extensions"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (←‏القواعد المتشعّبة: إضافة المصطلح الأجنبي)
ط (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}')
 
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
== القواعد المتشعّبة (Nested Properties) ==
+
<noinclude>{{DISPLAYTITLE:ملحقات CSS في Sass}}</noinclude>
Sass تسمح لقواعد [[CSS]] بأن تتشعّب داخل بعضها البعض. وفي تلك الحالة فإنّ القاعدة الداخلية لا تُطبّق إلّا ضمن المُحدّد الخارجي الذي يتضمّنها (outer rule's selector). على سبيل المثال:<syntaxhighlight lang="sass">
+
== القواعد المتشعّبة (Nested Rules) ==
 +
تسمح Sass لقواعد [[CSS]] بأن تتشعّب داخل بعضها البعض ولا تطبَّق في تلك الحالة القاعدة الداخليَّة إلّا ضمن المُحدّد الخارجي الذي يتضمّنها (outer rule's selector). انظر على سبيل المثال إلى الشيفرة التالية:<syntaxhighlight lang="sass">
 
#main p {
 
#main p {
 
   color: #00ff00;
 
   color: #00ff00;
سطر 11: سطر 12:
 
}
 
}
  
</syntaxhighlight>تُصرّف إلى:<syntaxhighlight lang="css">
+
</syntaxhighlight>ستُصرّف إلى:<syntaxhighlight lang="css">
 
#main p {
 
#main p {
 
   color: #00ff00;
 
   color: #00ff00;
سطر 19: سطر 20:
 
     color: #000000; }
 
     color: #000000; }
  
</syntaxhighlight>هذا يساعد على تجنّب تكرار المُحددات الأبويّة (parent selectors)، ويجعل مخططات [[CSS]] ‏(CSS layouts) المعقدة التي تحتوي الكثير من المُحدّدات المتشعّبة أكثر بساطة. على سبيل المثال:<syntaxhighlight lang="sass">
+
</syntaxhighlight>هذا يساعد على تجنّب تكرار المُحدِّدات الأبويّة (parent selectors)، ويجعل مخطَّطات [[CSS]] ‏(CSS layouts) المعقَّدة التي تحتوي الكثير من المُحدّدات المتشعّبة أكثر بساطة. انظر على سبيل المثال إلى الشيفرة التالية:<syntaxhighlight lang="sass">
 
#main {
 
#main {
 
   width: 97%;
 
   width: 97%;
سطر 31: سطر 32:
 
}
 
}
  
</syntaxhighlight>تُصرّف إلى:<syntaxhighlight lang="css">
+
</syntaxhighlight>ستُصرّف إلى:<syntaxhighlight lang="css">
 
#main {
 
#main {
 
   width: 97%; }
 
   width: 97%; }
سطر 44: سطر 45:
  
 
== الإشارة إلى المُحدّد الأب (Referencing Parent Selectors) باستخدام الرمز & ==
 
== الإشارة إلى المُحدّد الأب (Referencing Parent Selectors) باستخدام الرمز & ==
يكون من المفيد أحيانًا استخدام المُحدّد الأب لقاعدة متشّعبةٍ بطريقةٍ غير الطريقة الافتراضية. على سبيل المثال، قد ترغب في اعتماد أنماط خاصةٍ عندما يمر مؤشر الفأرة على ذلك المُحدِّد (الصنف الزائف <code>[[CSS/:hover|‎:hover]]</code>) أو عندما يكون للعنصر <code>[[HTML/body|body]]</code> صنفٌ معيّن. في هذه الحالات، يمكنك أن تحدّد صراحةً أين ينبغي أن يُدرج المحدِّد الأب عبر استخدام الرمز <code>&</code>. على سبيل المثال:<syntaxhighlight lang="sass">
+
من المفيد أحيانًا استخدام المُحدّد الأب لقاعدة متشّعبةٍ بطريقةٍ غير الطريقة الافتراضيَّة. على سبيل المثال، قد ترغب في اعتماد أنماط خاصَّةٍ عندما يمر مؤشر الفأرة على ذلك المُحدِّد (الصنف الزائف <code>[[CSS/:hover|‎:hover]]</code>) أو عندما يكون للعنصر [[HTML/body|body]] صنفًا معيّنًا. يمكنك في هذه الحالات أن تحدّد صراحةً أين ينبغي أن يُدرج المحدِّد الأب عبر استخدام الرمز <code>&</code>. انظر على سبيل المثال إلى الشيفرة التالية:<syntaxhighlight lang="sass">
 
a {
 
a {
 
   font-weight: bold;
 
   font-weight: bold;
سطر 61: سطر 62:
 
     font-weight: normal; }
 
     font-weight: normal; }
  
</syntaxhighlight>سيُبدّل الرمز <code>&</code> إلى المُحدِّد الأب كما يظهر في أسطُر [[CSS]]. وهذا يعني أنّه إن كان لديك قاعدةٌ عميقة التشعّب (أي أنَّها تتشعب أكثر من مستوى)، فستُستبين قيمة المحدِّد الأب بشكلٍ كاملٍ قبل استبدال المحرف <code>&</code>. على سبيل المثال:<syntaxhighlight lang="sass">
+
</syntaxhighlight>سيُبدّل الرمز <code>&</code> إلى المُحدِّد الأب مثلما يظهر في أسطُر [[CSS]]. هذا يعني أنّه إن كان لديك قاعدةٌ عميقة التشعّب (أي أنَّها تتشعب أكثر من مستوى)، فستُستبين قيمة المحدِّد الأب بشكلٍ كاملٍ قبل استبدال المحرف <code>&</code>. انظر على سبيل المثال إلى الشيفرة التالية:<syntaxhighlight lang="sass">
 
#main {
 
#main {
 
   color: black;
 
   color: black;
سطر 77: سطر 78:
 
       color: red; }
 
       color: red; }
  
</syntaxhighlight>أمّا في حالة المُحدّدات المركّبة (compound selectors) فيجب أن تظهر <code>&</code> في البداية، ولكن يمكن أن تُتبع بلاحقة، والتي ستضاف إلى المحدِّد الأب. على سبيل المثال:<syntaxhighlight lang="sass">
+
</syntaxhighlight>أمّا في حالة المُحدّدات المركّبة (compound selectors) فيجب أن تظهر <code>&</code> في البداية، ولكن يمكن أن تُتبع بلاحقة، والتي ستضاف إلى المحدِّد الأب. انظر على سبيل المثال إلى الشيفرة التالية:<syntaxhighlight lang="sass">
 
#main {
 
#main {
 
   color: black;
 
   color: black;
سطر 91: سطر 92:
 
</syntaxhighlight>إن لم يكن من الممكن تطبيق لاحقةٍ على المحدِّد الأب، فستُطلِق Sass خطأً.
 
</syntaxhighlight>إن لم يكن من الممكن تطبيق لاحقةٍ على المحدِّد الأب، فستُطلِق Sass خطأً.
  
== الخصائص المتشعّبة ==
+
== الخصائص المتشعّبة (Nested Properties) ==
اللغة [[CSS]] لديها عدد غير قليل من الخاصيات في "مجالات الأسماء" (namespaces)؛ على سبيل المثال، الخاصيات <code>[[CSS/font-family|font-family]]</code> و <code>[[CSS/font-size|font-size]]</code> و <code>[[CSS/font-weight|font-weight]]</code> كلّها موجودةٌ في فضاء الأسماء <code>[[CSS/font|font]]</code>. في لغة [[CSS]]، إن كنت ترغب في ضبط مجموعة من الخاصيات في نفس مجال الأسماء، فسيكون عليك كتابته في كل مرة. توفّر Sass اختصارًا لهذه العمليّة: يكفي أن تكتب مجال الأسماء مرّة واحدة، ثم تضع داخله كل الخصائص الفرعيّة. على سبيل المثال:<syntaxhighlight lang="sass">
+
تملك اللغة [[CSS]] عددًا ليس قليلًا من الخاصِّيَّات في "مجالات الأسماء" (namespaces)؛ على سبيل المثال، الخاصِّيات <code>[[CSS/font-family|font-family]]</code> و <code>[[CSS/font-size|font-size]]</code> و <code>[[CSS/font-weight|font-weight]]</code> كلّها موجودةٌ في فضاء الأسماء <code>[[CSS/font|font]]</code>. في لغة [[CSS]]، إن كنت ترغب في ضبط مجموعة من الخاصيات في نفس مجال الأسماء، فسيكون عليك كتابته في كل مرة. توفّر Sass اختصارًا لهذه العمليّة إذ يكفي أن تكتب مجال الأسماء مرّة واحدة ثمَّ تضع داخله كل الخصائص الفرعيّة. انظر على سبيل المثال الشيفرة التالية:<syntaxhighlight lang="sass">
 
.funky {
 
.funky {
 
   font: {
 
   font: {
سطر 106: سطر 107:
 
   font-weight: bold; }
 
   font-weight: bold; }
  
</syntaxhighlight>يمكن لخاصيّة مجال الأسماء (property namespace) نفسِها أن تُعطى قيمةً. على سبيل المثال:<syntaxhighlight lang="sass">
+
</syntaxhighlight>يمكن لخاصيّة مجال الأسماء (property namespace) نفسِها أن تُعطى قيمةً. انظر على سبيل المثال ما يلي:<syntaxhighlight lang="sass">
 
.funky {
 
.funky {
 
   font: 20px/24px fantasy {
 
   font: 20px/24px fantasy {
سطر 120: سطر 121:
  
 
== المُحدّد النائب (Placeholder Selectors): ‏‎<code>%foo</code> ==
 
== المُحدّد النائب (Placeholder Selectors): ‏‎<code>%foo</code> ==
تدعم التقنية Sass نوعًا خاصًّا من المُحدِّدات (selectors) يُسمّى "المحدِّد النائب". هذه المحدِّدات تبدو [[CSS/Class Selectors|كمحدّدات الأصناف]] (class selectors) [[CSS/ID Selectors|ومحددات المُعرّفات]] (id selectors)، باستثناء أنّ الرمزين <code>#</code> و <code>.</code> سيُبدَّلان إلى الرمز <code>%</code>. يُفترض أن تُستخدم هذه المُحدّدات مع التعليمة <code>[[Sass/@ rules|‎@extend]]</code>. لمزيد من المعلومات راجع المُحدّدات المُعدّة للتوسيع (‎@extend-Only Selectors).
+
تدعم التقنية Sass نوعًا خاصًّا من المُحدِّدات (selectors) يُسمّى "المحدِّد النائب". هذه المحدِّدات تبدو مثل [[CSS/Class Selectors|محدّدات الأصناف]] (class selectors) [[CSS/ID Selectors|ومحددات المُعرّفات]] (id selectors)، باستثناء أنّ الرمز <code>#</code> والرمز <code>.</code> سيُبدَّلان إلى الرمز <code>%</code>. يُفترض أن تُستخدم هذه المُحدّدات مع التعليمة <code>[[Sass/@ rules|‎@extend]]</code>. راجع لمزيد من المعلومات المُحدّدات المُعدّة للتوسيع (‎@extend-Only Selectors).
  
القواعد التي تستخدم المُحدّدات النائبة، دون استخدام الموجّه <code>[[Sass/@ rules|‎@extend]]</code>، لن تُترجم إلى لغة CSS.
+
القواعد التي تستخدم المُحدّدات النائبة، دون استخدام التعليمة <code>[[Sass/@ rules|‎@extend]]</code>، لن تُترجم إلى لغة CSS.
  
 
== مصادر ==
 
== مصادر ==
 
* [https://sass-lang.com/documentation/file.SASS_REFERENCE.html#css_extensions قسم CSS Extensions من توثيق Sass الرسمي].
 
* [https://sass-lang.com/documentation/file.SASS_REFERENCE.html#css_extensions قسم CSS Extensions من توثيق Sass الرسمي].
 +
[[تصنيف:Sass|{{SUBPAGENAME}}]]

المراجعة الحالية بتاريخ 07:01، 20 مايو 2018

القواعد المتشعّبة (Nested Rules)

تسمح Sass لقواعد CSS بأن تتشعّب داخل بعضها البعض ولا تطبَّق في تلك الحالة القاعدة الداخليَّة إلّا ضمن المُحدّد الخارجي الذي يتضمّنها (outer rule's selector). انظر على سبيل المثال إلى الشيفرة التالية:

#main p {
  color: #00ff00;
  width: 97%;

  .redbox {
    background-color: #ff0000;
    color: #000000;
  }
}

ستُصرّف إلى:

#main p {
  color: #00ff00;
  width: 97%; }
  #main p .redbox {
    background-color: #ff0000;
    color: #000000; }

هذا يساعد على تجنّب تكرار المُحدِّدات الأبويّة (parent selectors)، ويجعل مخطَّطات CSS ‏(CSS layouts) المعقَّدة التي تحتوي الكثير من المُحدّدات المتشعّبة أكثر بساطة. انظر على سبيل المثال إلى الشيفرة التالية:

#main {
  width: 97%;

  p, div {
    font-size: 2em;
    a { font-weight: bold; }
  }

  pre { font-size: 3em; }
}

ستُصرّف إلى:

#main {
  width: 97%; }
  #main p, #main div {
    font-size: 2em; }
    #main p a, #main div a {
      font-weight: bold; }
  #main pre {
    font-size: 3em; }

الإشارة إلى المُحدّد الأب (Referencing Parent Selectors) باستخدام الرمز &

من المفيد أحيانًا استخدام المُحدّد الأب لقاعدة متشّعبةٍ بطريقةٍ غير الطريقة الافتراضيَّة. على سبيل المثال، قد ترغب في اعتماد أنماط خاصَّةٍ عندما يمر مؤشر الفأرة على ذلك المُحدِّد (الصنف الزائف ‎:hover) أو عندما يكون للعنصر body صنفًا معيّنًا. يمكنك في هذه الحالات أن تحدّد صراحةً أين ينبغي أن يُدرج المحدِّد الأب عبر استخدام الرمز &. انظر على سبيل المثال إلى الشيفرة التالية:

a {
  font-weight: bold;
  text-decoration: none;
  &:hover { text-decoration: underline; }
  body.firefox & { font-weight: normal; }
}

ستُصرّف إلى:

a {
  font-weight: bold;
  text-decoration: none; }
  a:hover {
    text-decoration: underline; }
  body.firefox a {
    font-weight: normal; }

سيُبدّل الرمز & إلى المُحدِّد الأب مثلما يظهر في أسطُر CSS. هذا يعني أنّه إن كان لديك قاعدةٌ عميقة التشعّب (أي أنَّها تتشعب أكثر من مستوى)، فستُستبين قيمة المحدِّد الأب بشكلٍ كاملٍ قبل استبدال المحرف &. انظر على سبيل المثال إلى الشيفرة التالية:

#main {
  color: black;
  a {
    font-weight: bold;
    &:hover { color: red; }
  }
}

ستُصرّف إلى:

#main {
  color: black; }
  #main a {
    font-weight: bold; }
    #main a:hover {
      color: red; }

أمّا في حالة المُحدّدات المركّبة (compound selectors) فيجب أن تظهر & في البداية، ولكن يمكن أن تُتبع بلاحقة، والتي ستضاف إلى المحدِّد الأب. انظر على سبيل المثال إلى الشيفرة التالية:

#main {
  color: black;
  &-sidebar { border: 1px solid; }
}

ستُصرّف إلى:

#main {
  color: black; }
  #main-sidebar {
    border: 1px solid; }

إن لم يكن من الممكن تطبيق لاحقةٍ على المحدِّد الأب، فستُطلِق Sass خطأً.

الخصائص المتشعّبة (Nested Properties)

تملك اللغة CSS عددًا ليس قليلًا من الخاصِّيَّات في "مجالات الأسماء" (namespaces)؛ على سبيل المثال، الخاصِّيات font-family و font-size و font-weight كلّها موجودةٌ في فضاء الأسماء font. في لغة CSS، إن كنت ترغب في ضبط مجموعة من الخاصيات في نفس مجال الأسماء، فسيكون عليك كتابته في كل مرة. توفّر Sass اختصارًا لهذه العمليّة إذ يكفي أن تكتب مجال الأسماء مرّة واحدة ثمَّ تضع داخله كل الخصائص الفرعيّة. انظر على سبيل المثال الشيفرة التالية:

.funky {
  font: {
    family: fantasy;
    size: 30em;
    weight: bold;
  }
}

ستُصرّف إلى:

.funky {
  font-family: fantasy;
  font-size: 30em;
  font-weight: bold; }

يمكن لخاصيّة مجال الأسماء (property namespace) نفسِها أن تُعطى قيمةً. انظر على سبيل المثال ما يلي:

.funky {
  font: 20px/24px fantasy {
    weight: bold;
  }
}

ستُصرّف إلى:

.funky {
  font: 20px/24px fantasy;
    font-weight: bold;
}

المُحدّد النائب (Placeholder Selectors): ‏‎%foo

تدعم التقنية Sass نوعًا خاصًّا من المُحدِّدات (selectors) يُسمّى "المحدِّد النائب". هذه المحدِّدات تبدو مثل محدّدات الأصناف (class selectors) ومحددات المُعرّفات (id selectors)، باستثناء أنّ الرمز # والرمز . سيُبدَّلان إلى الرمز %. يُفترض أن تُستخدم هذه المُحدّدات مع التعليمة ‎@extend. راجع لمزيد من المعلومات المُحدّدات المُعدّة للتوسيع (‎@extend-Only Selectors).

القواعد التي تستخدم المُحدّدات النائبة، دون استخدام التعليمة ‎@extend، لن تُترجم إلى لغة CSS.

مصادر