أساسيات SASS

تشرح هذه المقالة أساسيات SASS۔

سنشرح ميزات SASS الأساسية خطوة بخطوة وسنوضح كيفية استخدامها من خلال أمثلة عملية.۔

YouTube Video

أساسيات SASS

SASS (صفحات الأنماط المركبة المثيرة نحويًا) هي لغة أنماط تُمَدّد CSS۔ من خلال استخدام SASS، يمكنك الاستفادة من ميزات متقدمة غير متوفرة في CSS، مثل المتغيرات والتداخل والمزيجات (mixins) والوراثة.۔ هذا يجعل إدارة أوراق الأنماط وإعادة استخدامها أسهل بكثير.۔

ما هو SASS؟

SASS هي لغة تبسط كتابة CSS وتوفر قدرًا أكبر من المرونة والقوة في التصميم۔ يوفر SASS أيضًا صيغة SCSS (CSS جريء)، والتي تشبه صيغة CSS القياسية۔ إليك مثال:۔

مثال SCSS

1$base-font: Arial, sans-serif;
2$bg-color: #f4f4f4;
3
4body {
5    font-family: $base-font;
6    background-color: $bg-color;
7}

مثال CSS

1body {
2    font-family: Arial, sans-serif;
3    background-color: #f4f4f4;
4}

إعداد SASS

كيفية التثبيت

لاستخدام SASS، قم أولاً بتثبيت Node.js ثم ثبت SASS باستخدام الأمر التالي:۔

1npm install -g sass

كيفية التحويل

لتحويل ملفات SASS (.scss أو .sass) إلى CSS، استخدم الأمر التالي:۔

1sass input.scss output.css

يمكنك أيضًا استخدام خيار watch لمراقبة تغيرات الملفات وتنفيذ التحويل في الوقت الفعلي.۔

المتغيرات

يسمح لك SASS باستخدام المتغيرات لإعادة استخدام القيم مثل الألوان وأحجام الخطوط۔

كود نموذج

1$primary-color: #3498db;
2$font-stack: 'Roboto', sans-serif;
3
4body {
5    color: $primary-color;
6    font-family: $font-stack;
7}
  • يستخدم هذا الكود متغيرات SASS لتعريف الألوان والخطوط، ويعيد استخدامها داخل محدد body لتعزيز التناسق وسهولة الصيانة.۔

النتيجة بعد التحويل

1body {
2    color: #3498db;
3    font-family: 'Roboto', sans-serif;
4}

التداخل

يعزز SASS قابلية قراءة الكود من خلال السماح بتداخل المُحدِدات في CSS۔

كود نموذج

 1nav {
 2    ul {
 3        list-style: none;
 4        margin: 0;
 5        padding: 0;
 6
 7        li {
 8            display: inline-block;
 9
10            a {
11                text-decoration: none;
12                color: #333;
13
14                &:hover {
15                    color: #3498db;
16                }
17            }
18        }
19    }
20}
  • يستخدم هذا الكود الهيكلية المتداخلة لتوضيح بنية الأنماط بصريًا.۔

النتيجة بعد التحويل

 1nav ul {
 2    list-style: none;
 3    margin: 0;
 4    padding: 0;
 5}
 6
 7nav ul li {
 8    display: inline-block;
 9}
10
11nav ul li a {
12    text-decoration: none;
13    color: #333;
14}
15
16nav ul li a:hover {
17    color: #3498db;
18}

المزج (الإضافات)

تتيح الإضافات (Mixins) إعادة استخدام الشيفرة عبر عدة محددات۔

كود نموذج

 1@mixin border-radius($radius) {
 2    border-radius: $radius;
 3    -webkit-border-radius: $radius;
 4    -moz-border-radius: $radius;
 5}
 6
 7button {
 8    @include border-radius(10px);
 9}
10
11.card {
12    @include border-radius(5px);
13}
  • يعرّف هذا الكود نمط border-radius باستخدام @mixin ويعيد استخدامه في button و.card باستخدام @include، مما يتيح تصميماً فعالاً بدون تكرار.۔

النتيجة بعد التحويل

 1button {
 2    border-radius: 10px;
 3    -webkit-border-radius: 10px;
 4    -moz-border-radius: 10px;
 5}
 6
 7.card {
 8    border-radius: 5px;
 9    -webkit-border-radius: 5px;
10    -moz-border-radius: 5px;
11}

الوراثة (@extend)

تسمح الوراثة (@extend) بتطبيق أنماط موجودة على محددات أخرى۔

كود نموذج

 1%button-style {
 2    padding: 10px 20px;
 3    color: white;
 4    background-color: #3498db;
 5}
 6
 7button {
 8    @extend %button-style;
 9    border: none;
10}
11
12.link-button {
13    @extend %button-style;
14    text-decoration: none;
15}
  • يعرّف هذا الكود محددًا مؤقتًا %button-style ويستخدم @extend لتطبيق الأنماط المشتركة على كل من button و.link-button، مما يعزز إعادة الاستخدام والتناسق.۔

النتيجة بعد التحويل

 1button, .link-button {
 2    padding: 10px 20px;
 3    color: white;
 4    background-color: #3498db;
 5}
 6
 7button {
 8    border: none;
 9}
10
11.link-button {
12    text-decoration: none;
13}

الشروط والحلقات

يدعم SASS الشروط والحلقات لإنشاء الأنماط بشكل ديناميكي۔

مثال على جملة شرطية

1$theme: dark;
2
3body {
4    background-color: if($theme == light, #fff, #333);
5    color: if($theme == light, #333, #fff);
6}
  • يستخدم هذا الكود دالة if في SASS لتغيير ألوان الخلفية والنص بناءً على قيمة $theme، مما يتيح إنشاء أنماط ديناميكية من خلال الشروط.۔

مثال على حلقة

1@for $i from 1 through 3 {
2    .column-#{$i} {
3        width: calc(100% / $i);
4    }
5}
  • يستخدم هذا الكود حلقة @for في SASS لإنشاء أصناف بشكل ديناميكي من .column-1 إلى .column-3

النتيجة بعد التحويل

 1body {
 2    background-color: #333;
 3    color: #fff;
 4}
 5
 6.column-1 {
 7    width: 100%;
 8}
 9
10.column-2 {
11    width: 50%;
12}
13
14.column-3 {
15    width: 33.3333%;
16}

تقسيم الملفات والاستيراد

يتيح لك SASS تقسيم الملفات وإعادة استخدامها عبر @use أو @import۔

هيكلية الملفات

styles/
  _variables.scss
  _mixins.scss
  main.scss

_variables.scss

1$primary-color: #3498db;

_mixins.scss

1@mixin flex-center {
2    display: flex;
3    justify-content: center;
4    align-items: center;
5}

main.scss

1@use 'variables';
2@use 'mixins';
3
4header {
5    background-color: variables.$primary-color;
6    @include mixins.flex-center;
7}

النتيجة بعد التحويل

1header {
2  background-color: #3498db;
3  display: flex;
4  justify-content: center;
5  align-items: center;
6}

الملخص

استخدام SASS يسهل كتابة CSS ويحسن قابلية إعادة استخدام الشيفرة وسهولة صيانتها۔

يمكنك متابعة المقالة أعلاه باستخدام Visual Studio Code على قناتنا على YouTube.۔ يرجى التحقق من القناة على YouTube أيضًا.۔

YouTube Video