💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ emad ta
خلاصه مطالب sass
جامعه Html & CSS ایجاد شده در ۱۵ آذر ۱۳۹۹

Sass : Syntactically Awesome Style Sheets 

 

یک پیش‌پردازنده است که CSS را قادر می‌سازد تا از مواردی مانند متغیرها، تودرتونویسی، inline import و موارد مختلف دیگری استفاده کند. در حقیقت Sass مانند یک اکستنشن برای CSS عمل می‌کند. Sass کمک می‌کند که همه چیز را سازمان‌دهی شده نگه داریم و فایل‌های استایل‌شیت را با سرعت بیشتری ایجاد کنیم.

 

نکته : ما باید بیایم و کد‌های sass امون رو کامپایل کنیم به css  که برای این کار میتوانیم 2 تا کار رو انجام بدهیم یا بیایم و از پلاگین‌های vscode  استفاده کنیم که محبوب‌ترین اشون live sass compile  هستش و راه دومی استفاده از پکیج منجیر‌ها مثل gulp یا webpack  هستش که بیایم و از اونا استفاده بکنیم 

و یادمان باشد که باید ادرس فایل‌های css که کامپایل شده رو به ht

 

نکته : برتری sass به نسبت رقیب اش less در این است که برای توسعه فایل جانبه ای رو اضافه نمیکند 

 

 

Futures Sass   :

 

1-Variable-7       Nesting -6       Mixin -5       Extend-4      Import  -3    Conditional-statement -2       loops 

 

 

Sass دارای دو گزینه سینتکس است:

 

1-  ( SCSS ( Sassy CSS : استفاده از فایل با فرمت .scss که سازگاری بالایی با سینتکس CSS دارد.

 

2 - دندانه‌دار (همان Sass) : از فرمت .sass استفاده می‌کند و به صورت دندانه‌ای است -برخلاف حالت }{-. این مورد نیز به با CSS سازگاری دارد و نوشتن آن سریع‌تر است. 

 

 

توضیح هات پیرامون امکانات sass 

 

1- variables : به ما این اجازه رو میدهد تا مثل دیگر زبان‌های برنامه نویسی بتوانیم یک متغیر رو تعریف کنیم که برای تعریف متغیر کافی است از $ کمک بگیریم همچنین ما در آن می‌توانیم متغیر هامون رو به دو صورت سراسری یا گلوبال و محلی تعریف کنیم که برای سراسری کافی است که در root  پروژه اون هارو تعریف کنیم و برای محلی در { } استایل دهی هامون همچنین با دادن یک global! میتوانیم بیایم و متغیر‌های محلی امون رو به سراسری تبدیل بکنیم 

$font-stack:    Helvetica, sans-serif;
$primary-color: #333;
$color : blue ;
body {
  font: 100% $font-stack;
  color: $primary-color;
}
a {
 $color : red !global ;  که در این جا این مقدار دیگه جایگزین می‌شود
 color : $color
  }

 

2- nesting : ما برای تو در تو نویسی مشابه به css  میایم و استفاده میکنیم ولی شیوه کار با تودرتو نویسی در css تفاوت دارد و دو مدل تو در تو نویسی داریم یکی برای کلاس‌ها یا تگ هامون یکی هم برای پراپرتی هامون یا سودوالمنت هامون

تو در تو نویسی برای تگ ها

nav {  style nav
  ul {
       style nav ul
    li {
         style nav ul  li
        a {
               style nav ul li a
               } 
                  }
                     } 
                        }

حال برای تو در نویسی برای پراپرتی هامون هم بکه دارای پیشوند مشترک هستند پسوند‌های متفاوت به شیوه ی زیر استفاده میکنیم

a {
 &:hover{ }
 &::after {}
  font:{
    size : 17px;
    weight : 600px
     }

 

3- mixin : برای موقعی هستش که میخاهیم تعدادی از پراپرتی‌های مشابه رو برای المان‌های مختلف در نظر بگیریم که ما در داخل css و  حتی ساختار bootstrap برای بهینه‌تر شدن کدهامون میومدیم و یک کلاس واحد تعریف میکردیم و استایل‌های مشترک رو درون آن قرار میدادیم و در نهایت هم میومدیم و یک کلاس متفاوت تعریف میکردیم  و اون پراپرتی هایی که متفاوت بودن رو درون قرار میدادیم  و دو تا کلاس مربوطه رو به تگ هامون میدادیم

.btn {  fontsize : 16px; ......  padding:4px }
.btn-sucsess {  background-color : green; } و بعد به تگ هامون کلاس‌های بالا رو باهم میدادیم

حال ما در داخل ساختار sass  باید بیایم و پراپرتی هایی که در داخل btn  هستند رو به عنوان یک mixin  در نظر بگیریم و بعد استایل هامون رو بهش میدهیم و در نهایت به کلاس مربوطه میایم اضافه اش میکنیم به شیوه ی زیر  

 

با استفاده از روش بالا کدهای ما در هر استایل عملا میان و دوباره تولید می‌شوند 

// sass
@mixin  btn {   ....... fonstsize:23px ...........   }                                     
 .btn-sucsess { @include btn ;  background-color : green ;  }           
 حال فقط لازم هستش که بیایم وکلاس btn-sucsess رو بهش بدهیم  
 // css 
 .btn-success {  ... fonstsize:23px ..... background-color : green  }
           
  @mixin flex-center {  display : flex;  align-item:center;  justify-content:center }
 .x {  @include flex-center();  .....  }  

ما در حالت عادی میکسین هامون ساده هستند ولی میتوانیم در آن‌ها از متغیر‌ها نیز  استفاده کنیم بهتر هست در نام گزاری متغیر‌ها اصول کد نویسی تمیز رو رعایت کنیم 


@mixin flex-position ($justify-content : center ,$align-item : center ) {
   dusplay : flex ;
   justify-content : $justify-content ;
   align-item : $align-item ;
   }
.y {
          @include flex-position(space-around,end); 
}

نکته : همچنین mixin‌های ما میتوانند مقادیر پیش فرض بیان و بگیرند و میتوانیم چند mixin رو پشت سر هم قرار دهیم

 

4- extend : همانطور که در بالا گفته شد mixin‌ها برای پراپرتی‌های تکراری مورد استفاده قرار میگیرد ما از خاصیت برای موقعی استفاده میکنیم که مواردی کلی هستند اما  ما تکرار پراپرتی رو نداریم حال اگر ما یکسری پراپرتی داشتیم که یکبار نوشته می‌شود و خیلی عمومی هستش و جاهای دیگه هم برا ما کاربرد دارد از extend  استفاده میکنیم این دو مفهوم خیلی به هم نزدیک هستند

 

تفاوت این دو مفهوم در مقدار تولیدی حجم کدهامون هستش که خطوط کد کمتری رو اشغال میکند  

 // sass
 .btn { ....... fontsize:23px ..... }
 .btn-success { @extend .btn;  background-color : green}
 //css
 .btn , .btn-sucess { ....... fontsize:23px .....  }
 .btn-sucsess { background-color : green }

نکته : زمانی که در یک پروژه عناصری داریم که استایل بیشتری دارند و قرار هستش که بعدا یک پراپرتی یا خصیصه اشون تغیر بکند رو با extend استفاده میکنیم ازشون

 

 

5- loop : ما می‌توانیم با استفاده از sass بیایم و یک سری حلقه هایی ایجاد کنیم برای کلاس هایی که تقریبا اسامی مشترکی رو دارند برای مثال در کد زیر ما  اومدیم و با استفاده از حلقه‌ها ساختار گرید بندی مون رو بهتری نوشتیم

 $sm-width : 768px;
@media screen and ( max-width : $sm-width ) {
   $sm-class-slug L col-sm;
   @for $i from 1 through 12 {  
     .#{ $sm-class-slug}-#{$i}{ 
        width : 8.3333 * $i
                                }
                                 } 
                                  }

 

6- Conditional-statement :  استفاده از ساختار‌های شرطی ما با استفاده از if میتوانیم بیایم و برای استایل هامون یکسری ساختار‌های شرطی قرار دهیم

@mixin avatar ($size,#$circle : false ){
  width:$size;
  height : $size
  @if $circle {  border-radius: $size / 2 ;
                 box-shadow : 0 0 10px rgba(0,0,0,.5)  }
                 else {  border-radius : 25px }
  }
  .circle { @include avatar(100px,$circle:false) }

7- pattern‌ها یا import‌ها : Partialها فایل کوچک Sass هستند که قابلیت import شدن در دیگر فایل‌های Sass را مهیا می‌کنند. با استفاده از این حالت شما می‌توانید فایل‌های CSS ماژولاری داشته باشید که نگه‌داری و دیباگ‌ کردن آن‌ها ساده‌تر است. یک Partial به این صورت نام گذاری می‌شود: partial.scss_ بااستفاده از دستور @import می‌توانید Partialهایی که در بالا گفته شد را به کدها اضافه کنیم. این کار با استفاده از یک Http Request انجام می‌شود.

 

 

 

نکته : در استفاده از mixin  ها وقتی برای یک تابع اش میایم و یک مقدار پیش فرض قرار نمیدهیم در هنگام استفاده اگر آن را ندهیم مقدار null را برای ما در نظر میگیرد همچنین ما زمانی که چندین حالت  optional در داخل برنامه امون در mixin  ها داریم  که یکی مقدار پیش فرض دادیم به بقیه نه باید حتی اون هایی که مقدار پیش فرض نمیخایم بهش بدهیم هم مقدار null  رو بهشون اضافه کنیم 

 

emad ta ۱۶ آذر ۱۳۹۹، ۰۸:۰۰