اشتراکها
یک بازی برای یادگیری CSS grid
نظرات مطالب
مبانی TypeScript؛ ماژولها
خیلی ممنون ، الان پروژه کامپایل شد ولی نتیجه ای که باید اتفاق میوفتاد نیوفتاد . توی developer tools وقتی Console Log مرورگر رو نگاه کردم موارد زیر خطا گرفته شده بود
و فایل tsconfig.json رو به پروژه با محتوای زیر اضافه کردم
testmd.ts:1Uncaught ReferenceError: exports is not defined require.js:143 Uncaught Error: Module name "testmd" has not been loaded yet for context: _. Use require([])
کتابخانه RequireJs رو هم به پروژه اضافه کردم حالا محتوای فایل html برابر با موارد زیر هست
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>TypeScript HTML App</title> <link rel="stylesheet" href="app.css" type="text/css"/> <script src="Scripts/require.js"></script> <script src="Scripts/App/app.js"></script> </head> <body> <h1>TypeScript HTML App</h1> <div id="content"></div> </body> </html>
{ "compilerOptions": { "target": "es5", "outDir": "Scripts/App", "moduleResolution": "node", "module": "commonjs", "sourceMap": true, "experimentalDecorators": true, "emitDecoratorMetadata": true } }
مشکل کجاست به نظرتون ؟
اشتراکها
پروژه Big Rig
اشتراکها
کتابخانه is.js
اشتراکها
Bootstrap 4 alpha منتشر شد
- Moved from Less to Sass
- Improved grid system
- Opt-in flexbox support is here
- Dropped wells, thumbnails, and panels for cards
- Consolidated all our HTML resets into a new module, Reboot
- Brand new customization options
- Dropped IE8 support and moved to rem and em units
- Rewrote all our JavaScript plugins
- Improved auto-placement of tooltips and popovers
- And tons more!
DOM در حالت عادی بسیار نامرتب است. همچنین با افزودن کلاسهای CSS، کد HTML به مراتب نامرتبتر از قبل میشود. بوت استرپ نیز شامل تعداد زیادی از کلاسهای CSS میباشد که برای انجام وظایف خاصی به HTML اضافه میشوند.
روش متداول استفاده از بوتاسترپ
Embedd کردن کلاسهای CSS بوتاسترپ به صورت مستقیم درون HTML
اغلب فریمورکها، از لحاظ معنایی یا semantic، دارای مشکل هستند. اگر به سورس HTML صفحاتی که با این نوع از فریمورکها ساخته شده باشند نگاهی بیندازید با حجم زیادی از کلاسهایی مانند <"div class="row> و یا <"div class="col-sm> مواجه خواهید شد. نوشتن کدهای HTML به این صورت از لحاظ معنایی اشتباه است. مثلاً اگر بنا به دلایلی سازندگان بوت استرپ تصمیم بگیرند نام کلاسهای را در نسخه بعدی این فریمورک تغییر دهند (مانند تغییر نام کلاسها در نسخهی 3 بوت استرپ)، و یا اگر در آینده بخواهید از یک فریمورک دیگر در سایتتان استفاده کنید. باید این تغییرات را در تمام صفحات سایتتان اعمال کنید؛ در نتیجه اینکار زمان زیادی را از شما صرف میکند.
راهحل؟
استفاده از CSS preprocessors
بوتاسترپ، از Less برای اینکار استفاده میکند. Less در واقع یک CSS preprocessor نوشته شده با جاوا اسکریپت است که قابلیت اجرا در مرورگر را دارد. Less امکانات زیادی، از قبیل استفاده از توابع، متغیرها، Mixins و ... را در اختیار شما قرار میدهد. در واقع هدف از Less، نگهداری آسان و قابلیت توسعه فایلهای CSS میباشد. در این حالت شما کدهای CSS خود را درون فایلهایی با پسوند Less مینویسید. در این حالت بجای پیوست کردن کلاسهای بوتاسترپ در کد HTML، آن را درون استایلشیت پیوست خواهید کرد. همانطور که عنوان شد، بوتاسترپ با Less نوشته شده است. فایلهای Less بوتاسترپ را میتوانید از مخرن کد گیتهاب آن دانلود نمائید یا اینکه از طریق نیوگت میتوانید آن را نصب کنید:
PM> Install-Package Twitter.Bootstrap.Less
کار با Less خیلی ساده است. به عنوان مثال در کد زیر یک کلاس با نام loud داریم که استایلهایی را به آن اعمال کردهایم. اکنون جهت استفاده مجدد از این استایلها برای کلاسی دیگر، نیاز به نوشتن مجدد آن نیست. کافی همانند یک تابع در هر کلاسی آن را فراخوانی کنیم:
.loud { color: red; } // Make all H1 elements loud h1 { .loud; }
استفاده از Mixins
با استفاده از Mixins میتوانیم عناصر داخل صفحاتمان را به صورت Semantic تعریف نمائیم. به عنوان مثال میخواهیم با استفاده از سیستم گرید بوتاسترپ، ساختاری مانند تصویر زیر را داشته باشیم:
در حالت معمول با استفاده از کلاسهای CSS بوتاسترپ میتوانیم اینکار را انجام دهیم:
<div class="container"> <div class="row"> <div class="col-md-8"> Content - Main </div> <div class="col-md-4"> Content - Secondary </div> </div> </div>
<div class="wrapper"> <div class="content-main"> Content - Main </div> <div class="content-secondary"> Content - Secondary </div> </div>
در بوت استرپ از Less Mixins جهت اعمال استایل هایی مانند row و column میتوانیم استفاده کنیم. به طور مثال برای اعمال استایل به کلاسهای فوق میتوانیم به این صورت عمل کنیم:
// Core variables and mixins @import "variables.less"; @import "mixins.less"; .wrapper { .make-row(); } .content-main { .make-lg-column(8); } .content-secondary { .make-lg-column(3); .make-lg-column-offset(1); }
کد فوق بعد از کامپایل به کد زیر تبدیل خواهد شد:
.wrapper { margin-left: -15px; margin-right: -15px; } .content-main { position: relative; min-height: 1px; padding-left: 15px; padding-right: 15px; } @media (min-width: 1200px) { .content-main { float: left; width: 66.66666666666666%; } } .content-secondary { position: relative; min-height: 1px; padding-left: 15px; padding-right: 15px; } @media (min-width: 1200px) { .content-secondary { float: left; width: 25%; } } @media (min-width: 1200px) { .content-secondary { margin-left: 8.333333333333332%; } }
همانطور که قبلاً عنوان شد ویژوال استودیو به راحتی توسط افزونه Web Essentials از فایلهای Less پشتیبانی میکند. در نتیجه کامپایل فایلهای Less داخل ویژوال استودیو توسط این افزونه به راحتی قابل انجام میباشد.
یک قابلیت جالب دیگر در رابطه با فایلهایی Less، تولید نسخههای CSS عادی و فشرده نهایی توسط افزونه Web Essentials میباشد. به طور مثال شما میتوانید نسخه minified شده را به Layout تان اضافه کنید. بعد از هربار تغییر در فایل Less این فایل نیز به روز خواهد شد:
همچنین برای دیگر اجزای بوتاسترپ نیز میتوانید به این صورت عمل کنید:
<!-- Before --> <a href="#" class="btn danger large">Click me!</a> <!-- After --> <a href="#" class="annoying">Click me!</a> a.annoying { .btn; .btn-danger; .btn-large; }