احتمالا شما هم با این مشکل مواجه شدهاید که یک متن را روی یک تصویر قرار دهید و تشابه رنگ متن و تصویر باعث ناخوانا شدن متن در بعضی نقاط شود.
برای حل این مشکل با استفاده از mix-blend-mode میتوانیم خیلی ساده و فقط با CSS، در همهی نقاط بین متن و تصویر contrast ایجاد کنیم.
#quicktip #css #trick
@ProGraphs
برای حل این مشکل با استفاده از mix-blend-mode میتوانیم خیلی ساده و فقط با CSS، در همهی نقاط بین متن و تصویر contrast ایجاد کنیم.
#quicktip #css #trick
@ProGraphs
🔺 چیزهایی که دوست داریم در سال 2019 به CSS اضافه شود.
https://css-tricks.com/2019-css-wishlist/
#link #css
@ProGraphs
https://css-tricks.com/2019-css-wishlist/
#link #css
@ProGraphs
CSS-Tricks
2019 CSS Wishlist | CSS-Tricks
What do you wish CSS could do natively that it can't do now? First, let's review the last time we did this in 2013.
فرض کنید سه عنصر grand-parent و parent و child، به ترتیب داخل هم قرار دارند و این کد CSS بر روی آنها اعمال شده است.
عرض عنصر child چند پیکسل است؟
#interviewquestion #css
@ProGraphs
عرض عنصر child چند پیکسل است؟
#interviewquestion #css
@ProGraphs
در یکی از مطالب قدیمیتر تفاوت پراپرتیهای transform و left/right را برای ایجاد انیمیشن در CSS بررسی کردیم. و دیدیم که مرورگر برای render کردن تغییرات در صفحه، چند مرحله (style - layout - paint - composite) را طی میکند.
اما در بعضی شرایط، تغییر ظاهر یک عنصر، بر روی سایر عناصر هم تاثیر میگذارد و مرورگر را مجبور به انجام محاسبات اضافه برای سایر عناصر میکند.
با استفاده از پراپرتی جدید contain در CSS میتوانیم عملیات style و layout و paint را فقط به یک بخش از صفحه محدود کنیم.
https://developers.google.com/web/updates/2016/06/css-containment
#quicktip #css #performance
@ProGraphs
اما در بعضی شرایط، تغییر ظاهر یک عنصر، بر روی سایر عناصر هم تاثیر میگذارد و مرورگر را مجبور به انجام محاسبات اضافه برای سایر عناصر میکند.
با استفاده از پراپرتی جدید contain در CSS میتوانیم عملیات style و layout و paint را فقط به یک بخش از صفحه محدود کنیم.
https://developers.google.com/web/updates/2016/06/css-containment
#quicktip #css #performance
@ProGraphs
اگر هردوی این rulesetها به یک عنصر اعمال شوند، متن این عنصر چه رنگی خواهد بود؟
#interviewquestion #css
@ProGraphs
#interviewquestion #css
@ProGraphs
در این کد میدانیم که پراپرتی width در یک transition تغییر خواهد کرد.
بنابراین از will-change استفاده کردهایم تا مرورگر را از این موضوع با خبر کنیم.
آیا این کار تاثیری در عملکرد transition دارد؟
#interviewquestion #css #performance
@ProGraphs
بنابراین از will-change استفاده کردهایم تا مرورگر را از این موضوع با خبر کنیم.
آیا این کار تاثیری در عملکرد transition دارد؟
#interviewquestion #css #performance
@ProGraphs
احتمالا دقت کردهاید که در CSS با استفاده از پراپرتی display میتوانیم هم نحوهی قرار گرفتن خود عنصر و هم نحوهی چیده شدن فرزندان عنصر در صفحه را تعیین کنیم.
به عنوان مثال:
- با استفاده از display: flex خود عنصر Block میشود و فرزندان آن از قوانین flex تبعیت میکنند.
- با استفاده از display: inline-flex خود عنصر به صورت inline نمایش داده میشود و فرزندان آن از قوانین flex تبعیت میکنند.
- با display: block خود عنصر به صورت Block در میآید و فرزندان آن از قوانین normal flow تبعیت میکنند و ...
همچنین میدانیم که display: none هم خود عنصر و هم فرزندان آن را از صفحه حذف میکند.
اما حالا با ویژگی جدید display: contents میتوانیم کاری کنیم که خود عنصر از صفحه حذف شود، ولی فرزندان آن در صفحه باقی بمانند!
در این مقاله میتوانید کاربرد عملی این ویژگی را ببینید:
https://rachelandrew.co.uk/archives/2016/01/29/vanishing-boxes-with-display-contents/
#quicktip #css
به عنوان مثال:
- با استفاده از display: flex خود عنصر Block میشود و فرزندان آن از قوانین flex تبعیت میکنند.
- با استفاده از display: inline-flex خود عنصر به صورت inline نمایش داده میشود و فرزندان آن از قوانین flex تبعیت میکنند.
- با display: block خود عنصر به صورت Block در میآید و فرزندان آن از قوانین normal flow تبعیت میکنند و ...
همچنین میدانیم که display: none هم خود عنصر و هم فرزندان آن را از صفحه حذف میکند.
اما حالا با ویژگی جدید display: contents میتوانیم کاری کنیم که خود عنصر از صفحه حذف شود، ولی فرزندان آن در صفحه باقی بمانند!
در این مقاله میتوانید کاربرد عملی این ویژگی را ببینید:
https://rachelandrew.co.uk/archives/2016/01/29/vanishing-boxes-with-display-contents/
#quicktip #css
فرض کنید سه عنصر div داریم که داخل هر کدام یک span با کلاسهای red و green و blue قرار دارد:
هر سه عنصر span دارای position: absolute هستند و عنصر قرمز با استفاده از z-index جلوی دو عنصر دیگر قرار گرفته است (مشابه تصویر).
بدون تغییر دادن موقعیت عناصر در html و بدون تغییر دادن position و z-index عناصر، کاری کنید که عنصر قرمز پشت دو عنصر سبز و آبی قرار بگیرد.
#interviewquestion #css
@ProGraphs
<div><span class="red">1</span></div>
<div><span class="green">2</span></div>
<div><span class="blue">3</span></div>
هر سه عنصر span دارای position: absolute هستند و عنصر قرمز با استفاده از z-index جلوی دو عنصر دیگر قرار گرفته است (مشابه تصویر).
بدون تغییر دادن موقعیت عناصر در html و بدون تغییر دادن position و z-index عناصر، کاری کنید که عنصر قرمز پشت دو عنصر سبز و آبی قرار بگیرد.
#interviewquestion #css
@ProGraphs
This media is not supported in your browser
VIEW IN TELEGRAM
فرض کنید بر روی یک عنصر هم translate، هم scale و هم rotate اعمال کردهایم.
حالا میخواهیم در حالت hover، فقط مقدار rotate را تغییر دهیم.
متاسفانه برای این کار مجبوریم تمام مقادیر قبلی را هم تکرار کنیم!
با استفاده از متغیرهای CSS میتوانیم این مشکل را حل کنیم (ویدیو را ببینید).
#quicktip #css #trick
@ProGraphs
حالا میخواهیم در حالت hover، فقط مقدار rotate را تغییر دهیم.
متاسفانه برای این کار مجبوریم تمام مقادیر قبلی را هم تکرار کنیم!
با استفاده از متغیرهای CSS میتوانیم این مشکل را حل کنیم (ویدیو را ببینید).
#quicktip #css #trick
@ProGraphs
فرض کنید همچین تابعی را در جاوااسکریپت نوشتهایم که با استفاده از transitionهای css، یک عنصر را از یک موقعیت به یک موقعیت دیگر جابهجا کند.
اما با اجرا شدن این تابع متوجه میشویم که موقعیت اولیهای که برای عنصر تعریف میکنیم (خط ۲) کاملا نادیده گرفته میشود و عنصر بدون توجه به موقعیت اولیه، فقط به سمت موقعیت نهایی جابهجا میشود!
علت این موضوع چیست؟ شما چطور این مشکل را حل میکنید؟
#interviewquestion #js #css
@ProGraphs
اما با اجرا شدن این تابع متوجه میشویم که موقعیت اولیهای که برای عنصر تعریف میکنیم (خط ۲) کاملا نادیده گرفته میشود و عنصر بدون توجه به موقعیت اولیه، فقط به سمت موقعیت نهایی جابهجا میشود!
علت این موضوع چیست؟ شما چطور این مشکل را حل میکنید؟
#interviewquestion #js #css
@ProGraphs
احتمالا دقت کردهاید که وقتی مقادیر CSSی یک عنصر را در جاوااسکریپت میخوانیم، مقدار مورد نظر را به همراه واحد آن در یک string دریافت میکنیم:
اما حالا با استفاده از api جدید CSS Typed OM میتوانیم مقدار و واحد رو به صورت جداگانه در یک آبجکت دریافت کنیم و خیلی راحتتر استایلهای عناصر را تغییر دهیم.
برای مقایسهی بهتر، در این ویدیو هم با CSSOM و هم با CSS Typed OM عرض یک عنصر را دو برابر میکنیم.
#quicktip #css #houdini
@ProGraphs
100px
یعنی برای انجام محاسبات مجبوریم این string را parse کنیم و دوباره واحد مورد نظر را concat کنیم.اما حالا با استفاده از api جدید CSS Typed OM میتوانیم مقدار و واحد رو به صورت جداگانه در یک آبجکت دریافت کنیم و خیلی راحتتر استایلهای عناصر را تغییر دهیم.
برای مقایسهی بهتر، در این ویدیو هم با CSSOM و هم با CSS Typed OM عرض یک عنصر را دو برابر میکنیم.
#quicktip #css #houdini
@ProGraphs
پراپرتی transform-style در CSS مشخص میکند که فرزندان یک عنصر در یک سطح صاف هستند، یا باید در یک فضای سه بعدی نمایش داده شوند.
به این ترتیب با استفاده از transform: rotate و transform-style میتوانیم یک عنصر را دور یک عنصر دیگر قرار دهیم!
codepen.io/prographs/pen/Rwwgwmo
#quicktip #css #trick
@ProGraphs
به این ترتیب با استفاده از transform: rotate و transform-style میتوانیم یک عنصر را دور یک عنصر دیگر قرار دهیم!
codepen.io/prographs/pen/Rwwgwmo
#quicktip #css #trick
@ProGraphs
احتمالا دقت کردهاید که وقتی میخوایم یه پراپرتی CSS رو تو حالت hover یا ... تغییر بدیم، مجبوریم اون پراپرتی رو دوباره با مقادیر جدید تکرار کنیم.
اما حالا با متغیرهای CSS و تابع calc میتونیم بدون تکرار کردن دوبارهی پراپرتیها، بین دو مقدار switch کنیم. به عنوان مثال:
حالا برای اینکه عنصر رو 45deg بچرخونیم و top 10px بهش بدیم، فقط کافیه مقدار متغیر i رو 1 کنیم!
دقت کنید که تو این ترفند داریم از ویژگی live بودن متغیرهای CSS استفاده میکنیم. پس با متغیرهای SASS نمیتونیم این کار رو انجام بدیم.
برای مقایسهی بهتر، توی ویدیو پراپرتیهای transform و background رو با استفاده از این ترفند (بدون تکرار کردن کردن پراپرتیها) تغییر میدیم.
#quicktip #css #trick #dry
@ProGraphs
اما حالا با متغیرهای CSS و تابع calc میتونیم بدون تکرار کردن دوبارهی پراپرتیها، بین دو مقدار switch کنیم. به عنوان مثال:
transform: rotate(calc(var(--i) * 45deg));توی این کد اگر متغیر i = 0 باشه، عنصرمون rotate و top نداره.
top: calc(var(--i) * 10px);
حالا برای اینکه عنصر رو 45deg بچرخونیم و top 10px بهش بدیم، فقط کافیه مقدار متغیر i رو 1 کنیم!
دقت کنید که تو این ترفند داریم از ویژگی live بودن متغیرهای CSS استفاده میکنیم. پس با متغیرهای SASS نمیتونیم این کار رو انجام بدیم.
برای مقایسهی بهتر، توی ویدیو پراپرتیهای transform و background رو با استفاده از این ترفند (بدون تکرار کردن کردن پراپرتیها) تغییر میدیم.
#quicktip #css #trick #dry
@ProGraphs
میدونیم که تغییر پراپرتی box-shadow با CSS جزو انیمیشنهای نسبتا سنگین محسوب میشه و میتونه باعث کند شدن انیمیشن بشه.
اما با یه ترفند جالب میتونیم box-shadow یه عنصر رو خیلی روانتر animate کنیم.
به این صورت که یه pseudo element به اندازهی خود عنصر تعریف میکنیم و box-shadow رو به این pseudo element میدیم. حالا کافیه opacity این pseudo element رو تغییر بدیم (به کد داخل عکس دقت کنید).
در واقع با این ترفند به جای پراپرتی box-shadow، پراپرتی opacity رو تغییر دادیم (animate کردن پراپرتی opacity برای مرورگر سادهتره)
کد کامل این ترفند رو میتونید اینجا ببینید.
ترفندهای مشابه برای تغییر بهینهتر طول و عرض عنصر هم وجود داره که در مطالب بعدی بررسی میکنیم :)
#quicktip #css #performance #trick
@ProGraphs
اما با یه ترفند جالب میتونیم box-shadow یه عنصر رو خیلی روانتر animate کنیم.
به این صورت که یه pseudo element به اندازهی خود عنصر تعریف میکنیم و box-shadow رو به این pseudo element میدیم. حالا کافیه opacity این pseudo element رو تغییر بدیم (به کد داخل عکس دقت کنید).
در واقع با این ترفند به جای پراپرتی box-shadow، پراپرتی opacity رو تغییر دادیم (animate کردن پراپرتی opacity برای مرورگر سادهتره)
کد کامل این ترفند رو میتونید اینجا ببینید.
ترفندهای مشابه برای تغییر بهینهتر طول و عرض عنصر هم وجود داره که در مطالب بعدی بررسی میکنیم :)
#quicktip #css #performance #trick
@ProGraphs
Translate CSS selectors into plain English!
https://hugogiraudel.github.io/selectors-explained/
#tool #css
@ProGraphs
https://hugogiraudel.github.io/selectors-explained/
#tool #css
@ProGraphs
Forwarded from Ditty | دیتی
🔺ببینین CSS نویسهای سراسر دنیا چه نظری درباره این زبان دارن:
https://2020.stateofcss.com
- این نتیجه نظرسنجی سال ۲۰۲۰ هست. برای شرکت توی نظرسنجی امسال اینجا رو ببینین.
#css
https://2020.stateofcss.com
- این نتیجه نظرسنجی سال ۲۰۲۰ هست. برای شرکت توی نظرسنجی امسال اینجا رو ببینین.
#css
Stateofcss
The State of CSS 2020: Demographics
The annual survey about the latest trends in CSS.