دوره جامع و پروژهمحور طراحی وب با تمرکز روی JavaScript، Ajax و API! با طراحی ریسپانسیو و پروژههای حرفهای مثل دیجیکالا و شمرون کباب مهارتت رو حرفهای کن!
مشاهده بیشتربا دوره رایگان "ساخت فریمورک CSS با Sass" حرفهای شو! دیگه وقتشه کدهای شلوغ و تکراری رو کنار بذاری و فریمورک CSS اختصاصی خودتو بسازی. تو این دوره، از صفر تا صد Sass رو یاد میگیری و یاد میگیری چطور پروژههات رو سریعتر و شگفتانگیزتر کنی!
مشاهده بیشترمشخصات مقاله
-
723
-
0.0
-
2113
-
0
-
0
آموزش ارسال آرگومان Content Block به mixin در Sass
آموزش Sass – ارسال قطعه کد به عنوان آرگومان به یک mixin/ارسال Content Block به mixin
در Sass این امکان تعریف شده که قطعه کدی که حاوی مجموعه ای از دستورات style دهی هست را به عنوان آرگومان به mixin ارسال کرد. این قطعه کد سپس هر جایی که دستور @content در بدنه ی mixin درج شده باشد، داخل style های موجود در mixin می نشیند. بدین وسیله توسعه دهنده می تواند در رابطه با ساخت selector و directive ها، لایه های انتزاعی (abstractions) تعریف و پیاده سازی کند.
مثال:
1 2 3 4 5 6 7 8 9 10 11 | @mixin apply-to-ie6-only { * html { @content; } } @ include apply-to-ie6-only { #logo { background-image: url(/logo.gif); } } <button></button> |
کد زیر را تولید می کند:
1 2 3 4 | * html #logo { background-image: url(/logo.gif); } <button></button> |
همین mixin ها را می توان با گرامر مختصر (shorthand syntax) .sass نیز به صورت زیر تعریف کرد:
1 2 3 4 5 6 7 | =apply-to-ie6-only * html @content +apply-to-ie6-only #logo background-image: url(/logo.gif) <button></button> |
حوزه ی دسترسی به متغیر (variable scope) و Content block ها
قطعه کدِ حاوی دستورات style دهی که به عنوان آرگومان به mixin ارسال می شود، در واقع داخل scope یا بدنه ای که قطعه کد در آن تعریف شده، محسابه و ارزیابی می گردد نه در بدنه و حوزه ی دسترسی (scope) mixin مورد نظر. به عبارت دیگر متغیرهایی که به صورت محلی داخل بدنه (حوزه دستری) mixin تعریف شده اند، داخل قطعه کد style دهی ارسال شده به عنوان آرگومان قابل دسترسی و استفاده نیستند و مقادیر این متغیرها نهایتا به عنوان مقدار سراسری (resolve) درنظر گرفته می شوند:
1 2 3 4 5 6 7 8 9 10 | $color : white; @mixin colors( $color : blue) { background-color: $color ; @content; border-color: $color ; } .colors { @ include colors { color: $color ; } } <button></button> |
به قطعه کد زیر کامپایل می شود:
1 2 3 4 5 6 | .colors { background-color: blue; color: white; border-color: blue; } <button></button> |
بعلاوه، این امر دقیقا مشخص می کند که متغیرها و mixin هایی که داخل قطعه کد ارسال شده (به عنوان پارامتر) بکار رفته اند، به style های موجود در اطراف جایی که قعطه کد در آن مکان تعریف شده، مربوط می شوند. مثال:
1 2 3 4 5 6 7 8 | #sidebar { $sidebar -width: 300px; width: $sidebar -width; @ include smartphone { width: $sidebar -width / 3; } } <button></button> |
مثال زیر ارسال قطعه کدهای style دهی (content block) به عنوان پارامتر به mixin را در فایل SCSS به صورت کاربردی نمایش می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | pass_content.htm < html > < head > < title >Mixin example of sass< /title > < link rel= "stylesheet" type= "text/css" href= "sample.css" / > < /head > < body > < div class = "block" > < h1 >Example using passing content blocks< /h1 > < p >Different Colors< /p > < ul > < li >Red< /li > < li >Green< /li > < li >Blue< /li > < /ul > < /div > < /body > < /html > <button></button> |
حال فایل sample.scss را ایجاد نمایید.
1 2 3 4 5 6 7 8 9 10 | sample.scss @mixin element { @content; } @ include element { .block { color: green; } } <button></button> |
می توانید با اجرای دستور زیر به SASS فرمان دهید که بر روی محتوای فایل نظارت داشته و هرگاه تغییری در فایل SASS رخ داد، CSS متناظر را نیز بروز رسانی کند:
1 | sass --watch C:\ruby\lib\sass\sample.scss:sample.css<button></button> |
با اجرای دستور بالا، فایل sample.css به صورت خودکار ایجاد می شود. محتوای این فایل به صورت زیر خواهد بود:
1 2 3 4 5 | sample.css .block { color: green; } <button></button> |
خروجی
جهت مشاهده ی خروجی مراحل زیر را به ترتیب طی نمایید:
- کد html بالا را در فایل pass_content.scss ذخیره نمایید.
- اکنون فایل HTML را با مرورگر دلخواه باز نمایید. خروجی بدین صورت در پنجره ی مرورگر به نمایش در می آید:
نظرات شما