جاوااسکریپت | JavaScript
513 subscribers
660 photos
140 videos
3 files
515 links
کانال @IR_javascript حاوی اطلاعات مفید در حوزه برنامه نویس فرانت که بصورت روزانه بروز می‌شود.
در این کانال شما به:
[1] مطالب تازه
[2] تحلیل‌های عمیق
[3] نکات آموزشی
[4] چالش
[5] ابزار و راهنمایی‌های کاربردی
دسترسی خواهید داشت.

🆔@IR_javascript
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Services Card
انیمیشن زیبا با استفاده از CSS

🔗https://codepen.io/Gogh/pen/poqaPOM

#️⃣#code
🆔@IR_javascript
🤔1
‏annyang— یک کتابخانه کوچک جاوا اسکریپت تشخیص گفتار که به کاربران شما امکان می دهد سایت شما را با دستورات صوتی کنترل کنند.

🔗https://github.com/TalAter/annyang

#️⃣#npm_module
🆔@IR_javascript
👍1
‏Idle Detection API زمانی که کاربرفعالیتی ندارد و مواردی مانند عدم تعامل با صفحه کلید، ماوس، صفحه نمایش، فعال شدن محافظ صفحه نمایش، قفل شدن صفحه، یا حرکت به صفحه دیگری را اطلاع می دهد.

try {
const controller = new AbortController();
const signal = controller.signal;

const idleDetector = new IdleDetector();
idleDetector.addEventListener('change', () => {
const userState = idleDetector.userState;
const screenState = idleDetector.screenState;
console.log(`Idle change: ${userState}, ${screenState}.`);
});

await idleDetector.start({
threshold: 60000,
signal,
});
console.log('IdleDetector is active.');
} catch (err) {
// Deal with initialization errors like permission denied,
// running outside of top-level frame, etc.
console.error(err.name, err.message);
}


🔗https://developer.mozilla.org/en-US/docs/Web/API/Idle_Detection_API

#️⃣#tip
🆔@IR_javascript
👍2
استفاده از AbortController برای لغو درخواست‌ها، رویدادهای DOM و وعده‌ها

گاهی اوقات با عملیاتی مواجه هستیم که لازم داریم علاوه‌بر مدیریت کردن زمان شروع، بتونیم زمان به پایان رسیدن اون رو هم مدیریت کنیم. برای مثال وقتی که یک عملیات در حال اجرا هست (مثلاً هنگام خوندن اطلاعات از سرور)، استثنائی رخ میده (مثلاً طولانی شدن بیش از حد انتظار برای دریافت پاسخ) و ما لازم داریم تا این عملیات رو قبل از اینکه به پایان برسه متوقف کنیم.
const controller = new AbortController();

document.getElementById("cancel").onclick = () => {
controller.abort();
}

(async function () {
const res = await fetch('/upload', {
// ...
signal: controller.signal,
});

const data = await res.json();

return data;
})();


🔗https://developer.mozilla.org/en-US/docs/Web/API/AbortController

🔗https://ditty.ir/posts/javascript-abortcontroller/nBwbX

#️⃣#tip
🆔@IR_javascript
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
اگه آهنگی مدام توی مغزتون play میشه، برای شما پیشنهاد ویژه‌ای برای جایگزینی دارم.

برگرفته از: @gizmiztel

#️⃣#comic
🆔@IR_javascript
نمونه ای از پیاده سازی تم های روشن و تاریک با استفاده از CSS خالص

<body>
<label>
<input id="dark" type="checkbox">
Dark mode
</label>
</body>


body {
--fg: black;
--bg: white;
color: var(--fg);
background-color: var(--bg);
}

body:has(#dark:checked) {
--fg: white;
--bg: black;
}



#️⃣#tip #css
🆔@IR_javascript
👍2
در خروجی چه خواهد بود
Anonymous Quiz
38%
5
20%
4
17%
1
25%
0
استفاده از JavaScript Intl API برای قالب‌بندی اعداد، تاریخ‌ها و رشته‌ها با توجه به موقعیت مکانی کاربر

‏Intl API قابلیتی برای قالب بندی اعداد، تاریخ ها و رشته ها با توجه به موقعیت مکانی کاربر که اپ را برای کاربران بین المللی قابل دسترسی تر می کند.

#️⃣#tip
🆔@IR_javascript
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
لحظه تحویل سال در حرم امام رضا (ع)

🔹لحظاتی زیبا از نواختن اولین نقاره در سال ۱۴۰۳ از نقاره‌خانه حرم مطهر رضوی

سال نو تون مبارک 💚💚💚

#️⃣#event
🆔@IR_javascript
8👎4
با استفاده از دستور supports@ می توان پشتیبانی مرورگر را در مورد یک ویژگی بررسی کرد. یعنی آن ویژگی در مرورگر منظور کار می کند یا نه.

معمولا این کار توسط کتابخانه های جاوااسکریپت نظیر Modernizr انجام می شود اما این دستور این امکان را می دهد تا بتوان این آزمایش را در فایل CSS بدون نوشتن کد جاوااسکریپت انجام داد.

به عنوان مثال فرض کنید می خواهید از ماژول فلکس باکس استفاده کنید اما در عین حال می خواهید مراقب مرورگرهایی که این ماژول را پشتیبانی نمی کنند نیز باشید و برای آنها استایل مجزا بنویسید و راه حل دیگری برای آنها داشته باشید
🔗https://css-tricks.ir/reference/supports/

🔗https://developer.mozilla.org/en-US/docs/Web/API/CSS/supports_static

#️⃣#tip #css
🆔@IR_javascript
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
ایجاد انیمیشن در svg با استفاده از تگ های animateTransform و animate

در انیمیشن بالا از css , js استفاده نشده و با استفاده از المان های animateTransform و animate متحرک شده اند

🔗https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animateTransform

🔗https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animate

#️⃣#tip #html
🆔@IR_javascript
👍1
استفاده از AbortController برای لغو رویدادهای DOM

در مورد این روش چندین رویداد listener به طور همزمان با استفاده از AbortController حذف می شود.

🔗https://developer.mozilla.org/en-US/docs/Web/API/AbortController

🔗https://ditty.ir/posts/javascript-abortcontroller/nBwbX

#️⃣#tip
🆔@IR_javascript
‏border-image-source -- استفاده از تصویر و یا گرادیان برای border یک عنصر

🔗https://developer.mozilla.org/en-US/docs/Web/CSS/border-image-source

#️⃣#tip #css
🆔@IR_javascript
‏beforeunload

این رویداد به صفحه وب اجازه می‌دهد که از کاربر بپرسد آیا واقعاً می‌خواهد صفحه را ترک کند یا خیر.
این رویداد قبل از خارج شدن از صفحه رخ می دهد.
const beforeUnloadHandler = (event) => {
// Recommended
event.preventDefault();

// Included for legacy support, e.g. Chrome/Edge < 119
event.returnValue = true;
};

const nameInput = document.querySelector("#name");

nameInput.addEventListener("input", (event) => {
if (event.target.value !== "") {
window.addEventListener("beforeunload", beforeUnloadHandler);
} else {
window.removeEventListener("beforeunload", beforeUnloadHandler);
}
});


🔗https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event

#️⃣#tip
🆔@IR_javascript
👍2
ایجاد متن گرادیان دار

ویژگی webkit-text-stroke به طور همزمان رنگ و ضخامت طرح را در اطراف حروف و نمادهای متن تنظیم می کند.اما همچنین برای ایجاد یک گرادیان باید 2 ویژگی دیگر اضافه کنید:
background-clip: text
background-image: linear-gradient




<h1>Stroke</h1>


body {
background-color: #000119;
display: grid;
font-family: sans-serif;
place-items: center;
}
h1 {
background-clip: text;
background-image: linear-gradient(to right, #09f1b8, #00a2ff, #ff00d2, #fed90f);
font-size: 100px;
-webkit-text-stroke: transparent 6px;
}



#️⃣#tip #css
🆔@IR_javascript
👍2
‏htmx به شما این امکان را می دهد که به AJAX، CSS Transitions، WebSockets و Server Sent Events به طور مستقیم در HTML با استفاده از attribute ها دسترسی داشته باشید، بنابراین می توانید رابط های کاربری مدرن را با سادگی و قدرت hypertext بسازید.
به طور مثال برای بروز رسانی محتوای عنصر بدون بارگیری مجدد صفحه

HTML:
 <button hx-get="/api/data" hx-target="#result">
دانلود داده ها
</button>
<div id="result"></div>


جاوا اسکریپت:
 // کنترل کننده رویداد که
// هنگامی که درخواست موفقیت آمیز بود، فراخوانی می شود
function updateResult(response) {
document.querySelector('#result').innerHTML = response.text;
}

// کنترل کننده رویداد را ثبت کنید
document.addEventListener('htmx:afterSwap', function(event) {
if (event.detail.elt.id === 'result') {
updateResult(event.detail.xhr);
}
});


در این مثال، با کلیک بر روی دکمه "بارگیری داده ها" یک درخواست GET به /api/data ارسال می شود و نتیجه بدون بارگیری مجدد کل صفحه در داخل عنصر با id= result به روز می شود.

🔗https://htmx.org/

#️⃣#npm_module
🆔@IR_javascript
🔥1🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
‏ Pico CSS یک چارچوب CSS مینیمالیستی و سبک برای HTML ‏

اصلاً لازم نیست با آن زحمتی بکشید چون تمامی style ها به عناصر html داده شده و اصلا نیازی به تعریف کلاس و style ندارید

می توانید Pico را با بیش از 130 متغیر CSS سفارشی کنید یا از SASS استفاده کنید.

برخلاف فریم ورک‌های حجیم و بارگذاری شده، Pico ماهیت سبک HTML را حفظ می‌کند، با اجتناب از اختصاصی بودن بیش از حد CSS، استفاده از حافظه را کاهش می‌دهد و تعداد فایل‌ها را برای بارگیری کاهش می‌دهد.
🔗https://picocss.com/

#️⃣#npm_module
🆔@IR_javascript
👍21