This media is not supported in your browser
VIEW IN TELEGRAM
فرض کنید یک گالری عکس یا یک لیست آیتم دارید و وقتی اسکرول میکنید، هر تصویر یا آیتم بهصورت دقیق و منظم جلوی چشم شما قرار میگیرد، نه اینکه نیمهای از آن نمایش داده شود.
Scroll Snap دقیقاً همین کار را انجام میدهد: وقتی کاربر اسکرول میکند، مرورگر بهصورت خودکار موقعیت صفحه را روی نقاط مشخص (Snap Points) قفل میکند. مثل اینکه یک مغناطیس نامرئی روی هر آیتم گذاشتهایم که وقتی نزدیک میشود، صفحه آن را درست در وسط یا بالای دید شما قرار میدهد.
ویژگی scroll-snap-type یک خصوصیت الزامی برای هر کانتینر قابل اسکرول است که میخواهید روی آن scroll snapping فعال شود. این ویژگی به سه سؤال برای کانتینر پاسخ میدهد:
1-آیا این کانتینر از scroll snapping استفاده میکند؟
2-روی کدام محور — افقی (x)، عمودی (y)، بلوک (block) یا خطی (inline) — scroll snapping اعمال شود؟
3-رفتار scroll snapping چگونه باشد؟ آیا همیشه اجباری (mandatory) است، یا فقط زمانی که کاربر به موقعیت اسنپ نزدیک شود فعال میشود؟
#️⃣#tip #css
👥@IR_javascript_group
🆔@IR_javascript
Scroll Snap دقیقاً همین کار را انجام میدهد: وقتی کاربر اسکرول میکند، مرورگر بهصورت خودکار موقعیت صفحه را روی نقاط مشخص (Snap Points) قفل میکند. مثل اینکه یک مغناطیس نامرئی روی هر آیتم گذاشتهایم که وقتی نزدیک میشود، صفحه آن را درست در وسط یا بالای دید شما قرار میدهد.
ویژگی scroll-snap-type یک خصوصیت الزامی برای هر کانتینر قابل اسکرول است که میخواهید روی آن scroll snapping فعال شود. این ویژگی به سه سؤال برای کانتینر پاسخ میدهد:
1-آیا این کانتینر از scroll snapping استفاده میکند؟
2-روی کدام محور — افقی (x)، عمودی (y)، بلوک (block) یا خطی (inline) — scroll snapping اعمال شود؟
3-رفتار scroll snapping چگونه باشد؟ آیا همیشه اجباری (mandatory) است، یا فقط زمانی که کاربر به موقعیت اسنپ نزدیک شود فعال میشود؟
#️⃣#tip #css
👥@IR_javascript_group
🆔@IR_javascript
👍3🔥1
دربارهٔ مشکل مرکزچینی عمودی محتوا در CSS میتوان افسانهها نوشت
خیلی هم غمانگیز است که این داستانها کمکم به پایان میرسند، زیرا حالا ما نه تنها Flex و Grid را داریم، بلکه یک ویژگی ساده و قابلفهم به نام align-content هم در دسترس است
بله، این ویژگی از دیرباز پایهای برای مدلهای Flex و Grid بوده است، اما از نسخههای جدید مرورگرها — Chrome 123**، **Firefox 125 و Safari 17.4 — پشتیبانی میشود و اکنون در مدل بلوکی (Block Layout) هم قابل استفاده است! 🎉
مثال ساده:
#️⃣#tip #css
👥@IR_javascript_group
🆔@IR_javascript
خیلی هم غمانگیز است که این داستانها کمکم به پایان میرسند، زیرا حالا ما نه تنها Flex و Grid را داریم، بلکه یک ویژگی ساده و قابلفهم به نام align-content هم در دسترس است
بله، این ویژگی از دیرباز پایهای برای مدلهای Flex و Grid بوده است، اما از نسخههای جدید مرورگرها — Chrome 123**، **Firefox 125 و Safari 17.4 — پشتیبانی میشود و اکنون در مدل بلوکی (Block Layout) هم قابل استفاده است! 🎉
مثال ساده:
.container {
align-content: center;
}
#️⃣#tip #css
👥@IR_javascript_group
🆔@IR_javascript
👍4
در مرورگر سافاری روی سیستمعامل آیاواس یک قابلیت جالب وجود دارد: وقتی انگشتتان را روی یک عنصر، مثلاً یک پیوند، نگه دارید، پنجرهای شناور باز میشود که پیشنمایش آن را نمایش میدهد. اما گاهی این ویژگی اصلاً کاربردی نیست و لازم است راهی برای غیرفعال کردن آن پیدا شود.
طبق معمول، این روش چندان هم استاندارد نیست
سپاس از اپل، همیشه همینطور خاص!
#️⃣#tip #css
👥@IR_javascript_group
🆔@IR_javascript
طبق معمول، این روش چندان هم استاندارد نیست
سپاس از اپل، همیشه همینطور خاص!
#️⃣#tip #css
👥@IR_javascript_group
🆔@IR_javascript
👍2
میدونید اگه توی فایرفاکس داخل یه فیلد
هیچی! قبول میکنه 😐
یعنی همون «lol» رو جلوی چشمتون نشون میده، انگار که یه عدد درسته. ولی وقتی مقدارش رو توی DOM بخونید، خالیه. یعنی مرورگر میگه: «باشه بهت نشونش دادم، ولی اصلاً حسابش نمیکنم.» شاهکاره واقعاً!
این یه باگه که از سال ۲۰۱۷ توی Bugzilla بازه و هنوزم وصله نشده:
[Bugzilla #1398528](https://bugzilla.mozilla.org/show_bug.cgi?id=1398528)
طبق استاندارد WHATWG**، ورودی از نوع number فقط باید رشتههای عددی رو قبول کنه. ولی فایرفاکس هرچی رو قبول میکنه — حروف، ایموجی، هرچی بخوای. فقط پشتصحنه مقدارش خالی میشه. یعنی میبینی چی تایپ کردی، ولی مرورگر اون رو معتبر نمیدونه. نتیجه؟ تجربه کاربری افتضاح.
حالا چرا درستش نمیکنن؟
جواب همیشگی: «خب اگه کاربر با اعداد عربی یا دوناگاری کار کنه چی؟ تازه فرق بین نقطه و ویرگول رو هم باید مشخص کنیم.» خلاصه ترجیح میدن همهچی رو آزاد بذارن تا اینکه واقعا مشکل رو حل کنن.
بریم سراغ کروم:
کروم بعضی وقتا اجازه میده توی فیلد number حرف **e رو بنویسید، چون ممکنه بخواید عددی مثل
جالبتر اینکه
از اون طرف اگه توی لوکالی باشید که جداکننده اعشار نقطه است، نوشتن
نتیجه نهایی:
* فایرفاکس: هرچی بنویسی (حتی «سلام») نشون میده، ولی زیرش خالیه.
* کروم: یه فیلتر داره، ولی اونم نصفهنیمه و پر از تناقض.
پس چی کار کنیم؟ خودمون کد بزنیم برای اعتبارسنجی، چون امیدی به مرورگرها نیست.
الان این باگ وارد سال هشتم شده، همچنان با برچسب «NEW» خوابیده و با توجه به بحثها، به این زودی هم درست نمیشه.
پ.ن. فایرفاکس اخیراً توی نسخه انگلیسیش، خطای اعتبارسنجی رو به زبان فنلاندی نشون داده! 🤦♂️
پ.ن.۲. تازه جدای اینا، اصلاً خیلیها معتقدن که
#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
<input type="number">
بهجای عدد، چیزی مثل lol بنویسید چی میشه؟هیچی! قبول میکنه 😐
یعنی همون «lol» رو جلوی چشمتون نشون میده، انگار که یه عدد درسته. ولی وقتی مقدارش رو توی DOM بخونید، خالیه. یعنی مرورگر میگه: «باشه بهت نشونش دادم، ولی اصلاً حسابش نمیکنم.» شاهکاره واقعاً!
این یه باگه که از سال ۲۰۱۷ توی Bugzilla بازه و هنوزم وصله نشده:
[Bugzilla #1398528](https://bugzilla.mozilla.org/show_bug.cgi?id=1398528)
طبق استاندارد WHATWG**، ورودی از نوع number فقط باید رشتههای عددی رو قبول کنه. ولی فایرفاکس هرچی رو قبول میکنه — حروف، ایموجی، هرچی بخوای. فقط پشتصحنه مقدارش خالی میشه. یعنی میبینی چی تایپ کردی، ولی مرورگر اون رو معتبر نمیدونه. نتیجه؟ تجربه کاربری افتضاح.
حالا چرا درستش نمیکنن؟
جواب همیشگی: «خب اگه کاربر با اعداد عربی یا دوناگاری کار کنه چی؟ تازه فرق بین نقطه و ویرگول رو هم باید مشخص کنیم.» خلاصه ترجیح میدن همهچی رو آزاد بذارن تا اینکه واقعا مشکل رو حل کنن.
بریم سراغ کروم:
کروم بعضی وقتا اجازه میده توی فیلد number حرف **e رو بنویسید، چون ممکنه بخواید عددی مثل
1e10
(فرمت علمی) رو وارد کنید. اما اگه فقط «e» رو بنویسید… فیلد معتبر میشه! 😆جالبتر اینکه
1e-
رو هم معتبر میدونه، ولی 1ee
نه.از اون طرف اگه توی لوکالی باشید که جداکننده اعشار نقطه است، نوشتن
1,5
(با ویرگول) یا قبول میشه یا نمیشه — بستگی داره به نسخهی مرورگر، وضعیت ماه و احتمالاً میزان قهوهای که برنامهنویس کروم خورده!نتیجه نهایی:
* فایرفاکس: هرچی بنویسی (حتی «سلام») نشون میده، ولی زیرش خالیه.
* کروم: یه فیلتر داره، ولی اونم نصفهنیمه و پر از تناقض.
پس چی کار کنیم؟ خودمون کد بزنیم برای اعتبارسنجی، چون امیدی به مرورگرها نیست.
الان این باگ وارد سال هشتم شده، همچنان با برچسب «NEW» خوابیده و با توجه به بحثها، به این زودی هم درست نمیشه.
پ.ن. فایرفاکس اخیراً توی نسخه انگلیسیش، خطای اعتبارسنجی رو به زبان فنلاندی نشون داده! 🤦♂️
پ.ن.۲. تازه جدای اینا، اصلاً خیلیها معتقدن که
<input type="number">
بهخودش هیچ فایدهای نداره و حتی مضر هم هست#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
bugzilla.mozilla.org
1398528 - HTML <input type=number> should not allow users to type in characters that are not part of a number
NEW (nobody) in Core - DOM: Core & HTML. Last updated 2025-08-29.
👍1🔥1
Capture node screenshot
این قابلیت در DevTools کروم و فایرفاکس به شما اجازه میدهد که یک عنصر مشخص (یا همان نود) در صفحه را بهصورت تصویر ذخیره کنید، بدون اینکه نیاز باشد کل صفحه را اسکرول کنید یا اسکرینشات بگیرید.
روش کار بهطور خلاصه:
1. باز کردن DevTools:
* در کروم یا فایرفکس، کلید F12 یا Ctrl+Shift+I را فشار دهید.
2. انتخاب نود موردنظر:
* در تب Elements یا Inspector**، روی عنصر HTML که میخواهید اسکرینشاتش را بگیرید کلیک کنید.
3. **گرفتن اسکرینشات:
* در کروم: راستکلیک روی نود → گزینهی Capture node screenshot را انتخاب کنید.
* در فایرفکس: راستکلیک روی نود → گزینهی Take a screenshot of node یا مشابه آن را انتخاب کنید.
DevTools سپس همان بخش خاص را پردازش کرده و یک تصویر PNG از آن نود ایجاد میکند.
#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript
این قابلیت در DevTools کروم و فایرفاکس به شما اجازه میدهد که یک عنصر مشخص (یا همان نود) در صفحه را بهصورت تصویر ذخیره کنید، بدون اینکه نیاز باشد کل صفحه را اسکرول کنید یا اسکرینشات بگیرید.
روش کار بهطور خلاصه:
1. باز کردن DevTools:
* در کروم یا فایرفکس، کلید F12 یا Ctrl+Shift+I را فشار دهید.
2. انتخاب نود موردنظر:
* در تب Elements یا Inspector**، روی عنصر HTML که میخواهید اسکرینشاتش را بگیرید کلیک کنید.
3. **گرفتن اسکرینشات:
* در کروم: راستکلیک روی نود → گزینهی Capture node screenshot را انتخاب کنید.
* در فایرفکس: راستکلیک روی نود → گزینهی Take a screenshot of node یا مشابه آن را انتخاب کنید.
DevTools سپس همان بخش خاص را پردازش کرده و یک تصویر PNG از آن نود ایجاد میکند.
#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript
###
مرورگر برای نمایش صفحه نیاز دارد منابع لازم مثل CSS، JS، تصاویر و ویدیو را دانلود کند. اول HTML دریافت و تحلیل میشود و همزمان اسکنر پیشبارگذاری منابع را پیدا و دانلود میکند. همه منابع براساس اولویت در شبکه بارگذاری میشوند.
ویژگی
* high → اولویت بالا
* low → اولویت پایین
* auto → رفتار پیشفرض مرورگر
میتوان از این ویژگی در عناصر زیر استفاده کرد:
---
### کاربردهای متداول
* بارگذاری تصاویر مهم صفحه (مثلاً تصاویر LCP) با اولویت بالا
* کاهش اولویت تصاویر غیرضروری (مثل تصاویر کاروسل)
* پیشبارگذاری منابع کماهمیت با اولویت پایین
* افزایش یا کاهش اولویت اسکریپتها بسته به نیاز
همچنین میتوان اولویت را هنگام فراخوانی
---
### نکته مهم
`fetchpriority` ابزار جدیدی است برای کنترل هوشمندانه بارگذاری منابع و مکمل روشهای قدیمی مثل:
*
*
*
برای جزئیات بیشتر میتوانید مقاله کامل را در web.dev بخوانید:
[https://web.dev/articles/fetch-priority](https://web.dev/articles/fetch-priority)
#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
fetchpriority
در HTMLمرورگر برای نمایش صفحه نیاز دارد منابع لازم مثل CSS، JS، تصاویر و ویدیو را دانلود کند. اول HTML دریافت و تحلیل میشود و همزمان اسکنر پیشبارگذاری منابع را پیدا و دانلود میکند. همه منابع براساس اولویت در شبکه بارگذاری میشوند.
ویژگی
fetchpriority
به شما اجازه میدهد اولویت بارگذاری منابع را مشخص کنید:* high → اولویت بالا
* low → اولویت پایین
* auto → رفتار پیشفرض مرورگر
میتوان از این ویژگی در عناصر زیر استفاده کرد:
<link>`،
<script>،
<img> و
<iframe>`.<img src="lcp-image.jpg" fetchpriority="high">
---
### کاربردهای متداول
* بارگذاری تصاویر مهم صفحه (مثلاً تصاویر LCP) با اولویت بالا
* کاهش اولویت تصاویر غیرضروری (مثل تصاویر کاروسل)
* پیشبارگذاری منابع کماهمیت با اولویت پایین
* افزایش یا کاهش اولویت اسکریپتها بسته به نیاز
همچنین میتوان اولویت را هنگام فراخوانی
fetch()
مشخص کرد:const response = await fetch('/resource', { priority: 'low' });
---
### نکته مهم
`fetchpriority` ابزار جدیدی است برای کنترل هوشمندانه بارگذاری منابع و مکمل روشهای قدیمی مثل:
*
loading
در <img>
و <iframe>
*
preload
در <video>
و <link>
*
defer
و async
در <script>
برای جزئیات بیشتر میتوانید مقاله کامل را در web.dev بخوانید:
[https://web.dev/articles/fetch-priority](https://web.dev/articles/fetch-priority)
#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
web.dev
Optimize resource loading with the Fetch Priority API | Articles | web.dev
The Fetch Priority API indicates the relative priority of resources to the browser. It can enable optimal loading and improve Core Web Vitals.
Media is too big
VIEW IN TELEGRAM
ماشین قابلآموزش (Teachable Machine) یک آزمایش تعاملی است که یادگیری ماشین را برای همه سادهتر میکند؛ بهطوریکه مستقیماً در مرورگر اجرا میشود و هیچ نیازی به کدنویسی ندارد. روشی سریع و ساده برای ساخت مدلهای یادگیری ماشین جهت استفاده در وبسایتها، اپلیکیشنها و موارد دیگر — بدون نیاز به دانش تخصصی یا کدنویسی.
🔗https://teachablemachine.withgoogle.com/
#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript
🔗https://teachablemachine.withgoogle.com/
#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript
This media is not supported in your browser
VIEW IN TELEGRAM
🖤وفات حضرت معصومه سلاماللهعلیها
🏴 رحلت شهادتگونه بانوی مهر و وفا، اُخت الرضا، عمه سادات، کریمه اهل بیت علیهمالسلام، حضرت فاطمه معصومه سلام الله تسلیت باد.
🔗https://www.namasha.com/v/IM2n2FnC
#️⃣#event
👥@IR_javascript_group
🆔@IR_javascript
🏴 رحلت شهادتگونه بانوی مهر و وفا، اُخت الرضا، عمه سادات، کریمه اهل بیت علیهمالسلام، حضرت فاطمه معصومه سلام الله تسلیت باد.
🔗https://www.namasha.com/v/IM2n2FnC
#️⃣#event
👥@IR_javascript_group
🆔@IR_javascript
❤8👎3😱1
چگونگی تست WebKit یا Safari روی ویندوز و لینوکس
به سادگی از BrowserStack استفاده کنید
اما مشکل اینجاست که همه نمیتوانند حتی ۱۵۰ دلار در سال برای پلن فریلنسری هزینه کنند… آیا راهی وجود دارد؟
بله، راه وجود دارد!
BrowserStack بهطور فعال از پروژههای Open Source پشتیبانی میکند و لایسنس یکساله رایگان ارائه میدهد!
اگر پروژهی شما چنین شرایطی دارد، کافی است به این صفحه
بروید و لینک مخزن (repository) خود را وارد کنید.
نکته مهم: باید لایسنس مناسب داشته باشید. لیست کامل را پیدا نکردم، اما مطمئنم که GPL، BSD و MIT پوشش داده شدهاند. من هم خودم Creative Commons Attribution 4.0 International را وارد کردم.
دسترسی هر سال تمدید میشود تا زمانی که مخزن در دسترس باشد
#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript
به سادگی از BrowserStack استفاده کنید
اما مشکل اینجاست که همه نمیتوانند حتی ۱۵۰ دلار در سال برای پلن فریلنسری هزینه کنند… آیا راهی وجود دارد؟
بله، راه وجود دارد!
BrowserStack بهطور فعال از پروژههای Open Source پشتیبانی میکند و لایسنس یکساله رایگان ارائه میدهد!
اگر پروژهی شما چنین شرایطی دارد، کافی است به این صفحه
بروید و لینک مخزن (repository) خود را وارد کنید.
نکته مهم: باید لایسنس مناسب داشته باشید. لیست کامل را پیدا نکردم، اما مطمئنم که GPL، BSD و MIT پوشش داده شدهاند. من هم خودم Creative Commons Attribution 4.0 International را وارد کردم.
دسترسی هر سال تمدید میشود تا زمانی که مخزن در دسترس باشد
#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript