ProGraphs
818 subscribers
216 photos
6 videos
11 files
377 links
مجموعه مطالبی از برنامه‌نویسی وب و گرافیک

ProGraphs = Programming + Graphics
Download Telegram
تفاوت این سه روش برای load کردن اسکریپت خارجی چیست‌ ؟

#interviewquestion #html

@ProGraphs
اینم یه بازی برای یاد گرفتن گرید توی CSS 😅

https://cssgridgarden.com/#fa

#link #css #grid

@ProGraphs
ProGraphs
تفاوت این سه روش برای load کردن اسکریپت خارجی چیست‌ ؟ #interviewquestion #html @ProGraphs
جواب:
<script></script>:
زمانی که مرورگر به تگ اسکریپت معمولی می‌رسد پروسه parse شدن داکیومنت را متوقف می‌کند تا هم فایل اسکریپت دانلود شود و هم execute شود. سپس پروسه parsing را ادامه می‌دهد. (البته مرورگرهای مدرن برای سرعت بیشتر و برای بعضی از فایل ها کمی متفاوت عمل می‌کنند. عبارت speculative parsing را جستجو کنید)


<script async></script>:
در این روش مرورگر زمانی که به تگ اسکریپت می‌رسد به parse کردن داکیومنت ادامه می‌دهد و به صورت هم‌زمان اسکریپت را دانلود می‌کند. ولی وقتی که فایل دانلود شد پروسه parsing را متوقف می‌کند تا اسکریپت execute شود. دقت کنید که در این روش ممکن است اسکریپت‌ها به ترتیبی که در داکیومنت آمده اند اجرا نشوند (دلیلش هم واضح است 😁). در نتیجه استفاده از این روش برای اسکریپتی مانند jQuery مناسب نیست چرا که ممکن است اسکریپت‌های بعدی از آن استفاده کنند و اگر ترتیب اجرای اسکریپت‌ها رعایت نشود اسکریپت‌ها با مشکل مواجه می شوند.


<script defer></script>:
در این روش مانند async فایل اسکریپت هم‌زمان با parse شدن داکیومنت دانلود می شود ولی تا زمان parse شدن کامل داکیومنت صبر می‌کند بعد اجرا می‌شود. در این روش برعکس async ترتیب اسکریپت‌ها حفظ می شود.
اگر حوصله ندارید متن رو بخونید، عکس‌ها رو ببینید.
البته برای اینکه عکس رو متوجه بشید باید متن رو بخونید. 😄
​​معرفی CSS Specificity:
فرض کنید در ساختار HTML زیر با CSS عنصر داخلی را انتخاب کنیم:
<div id="parent">
<div class="child"></div>
</div>
معمولا بیشتر از یک راه برای انتخاب عنصر وجود دارد. برای مثال همه‌ی این انتخابگر‌ها عنصر مورد نظر را برای ما انتخاب می‌کنند:
#parent .child
.child
div.child
...
در عمل بار‌ها پیش می‌آید که چندین دستور با انتخابگر‌های متفاوت، استایل‌های متفاوتی را بر روی یک عنصر اعمال می‌کنند. در این شرایط کدام یک از استایل‌ها برای عنصر اعمال می‌شود ؟ برای حل این مشکل مفهوم CSS Specificity استفاده می‌شود.
به اینصورت که به هر انتخابگر بر اساس نوع آن امتیازی تعلق می‌گیرد و انتخابگر با بیشترین امتیاز اعمال می‌شود.
دسته بندی انتخابگر‌ها و امتیاز آن‌ها به این شکل است:
1) inline style ==> 1, 0, 0, 0
2) ID ==> 0, 1, 0, 0
3) Class - attributes selector - pseudo-classe ==> 0, 0, 1, 0
4) Type selector - pseudo-element ==> 0, 0, 0, 1

--) اما چرا امتیاز‌ها را به جای 1و 10 و 100 و 1000 به این شکل نمایش می‌دهیم ؟
در واقع این امتیاز ها در سیستم دهدهی محاسبه نمی‌شوند. به عنوان مثال انتخابگر‌های class و id را در نظر بگیرید. اگر انتخابگر class را با 10 و انتخابگر id را با 100 نشان می‌دادیم به این معنی بود که 10 انتخابگر کلاس برابر با یک انتخابگر ‌id است. اما این‌طور نیست و اهمیت id selector بیشتر از class selector است.
در واقع اگر تعداد id selector ها برابر بود، بعد به سراغ شمارش class selector ها می‌رویم.
#test > .a.b.c.d.e.f.g.h.i.j.k

این موضوع را در طول هفته بیشتر بررسی خواهیم کرد.

#quicktip #css

@ProGraphs
اولین عنصر داخل لیست چه رنگی خواهد بود ؟

#interviewquestion #css

@ProGraphs
ProGraphs
اولین عنصر داخل لیست چه رنگی خواهد بود ؟ #interviewquestion #css @ProGraphs
جواب: indigo
این سوال خیلی ساده با نکاتی که درباره Specificity مطرح کردیم قابل حل هست. تنها نکته ای که باید دقت کنید این است که اگر یک attribute selector به ویژگی Id اشاره کند ماهیت آن به Id Selector تبدیل نمی‌شود و هم‌چنان امتیاز یک attribute selector را دارد. (که البته منطقی هم هست).
امتیاز انتخابگر اول:‌ 0,0,2,0
امتیاز انتخابگر دوم: 0,0,3,0
بنابراین ruleset دوم اعمال می‌شود و رنگ اولین آیتم لیست ‌indigo خواهد بود
​​نکات تکمیلی CSS Specificity

1) انتخابگر universal تأثيری بر Specificity ندارد. (قسمت ۱ تصویر)

2) شبه کلاس not جزو pseudo class ها محسوب می‌شود با این حال تأثيری بر Specificity نمی‌گذارد. اما انتخابگر‌هایی که داخل not می‌آیند Specificity را تغییر می‌دهند. (قسمت ۲ تصویر)

3)‌ اگر در یک دستور CSS از important استفاده کنیم، بدون توجه به قوانین Specificity آن دستور اعمال می‌شود. هرچند این کار در اکثر مواقع bad practice و دور زدن Specificity محسوب می‌شود. (قسمت ۳ تصویر)

#quicktip #css

@ProGraphs
​​یه دوره آموزشی کوتاه Figma مناسب برای مبتدیان

https://www.figmaforbeginners.com/

#link #tool #design #ui #figma

@ProGraphs
اگر هر‌دوی این ruleset ها به یک عنصر اعمال شوند. متن این عنصر چه رنگی خواهد بود ؟

#interviewquestion #css

@ProGraphs
یه بازی دیگه، این بار برای یاد گرفتن سلکتور‌ها توی CSS 😋

https://flukeout.github.io/

#link #css #selector

@ProGraphs
ProGraphs
اگر هر‌دوی این ruleset ها به یک عنصر اعمال شوند. متن این عنصر چه رنگی خواهد بود ؟ #interviewquestion #css @ProGraphs
جواب:‌ tomato

در قدم اول Specificity هر دو را محاسبه می‌کنیم:
امتیاز انتخابگر اول:
0, 1, 3, 2
امتیاز انتخابگر دوم:
0, 1, 3, 2

امتیاز هر دو انتخابگر یکسان هست. در این شرایط استایلی که آخرتر آمده است اعمال می‌شود. در نتیجه رنگ متن tomato خواهد بود.

سوالات مرتبط با CSS Specificity در مصاحبه‌ها زیاد مطرح می‌شوند و معمولا برای چالش بیشتر از انتخابگر‌های طولانی‌تر استفاده می‌شود. ولی دقت کنید که استفاده از این انتخابگر‌های طویل در پروژه‌های واقعی مناسب نیست‌!

اگر در محاسبه Specificity مشکل دارید نکاتی که پیش‌تر در مورد Specificity مطرح کردیم را مطالعه کنید.
​​🔸آرشیوی از فونت‌های قابل دانلود رایگان

https://www.dafont.com/

#link #font

@ProGraphs
​​حتما از قابلیت‌های devtools برای تست کردن پروژه در ابعاد موبایل‌ها اطلاع دارید.
اما با chrome devtools می‌توانیم اینترنت و پردازنده ضعیف‌تر دستگاه‌های همراه را هم شبیه‌سازی کنیم.
این تنظیمات در تب Performance قرار دارند. برای مثال در تصویر اینترنت 3G و CPU با سرعت پردازش یک چهارم شبیه‌سازی شده است.

#quicktip #devtools

@ProGraphs
تفاوت undefined و undeclared در جاوااسکریپت چیست ؟

#interviewquestion #js

@ProGraphs