پلتفرم وب با نوآوری زنده است، با ویژگی های CSS و وب UI در خط مقدم این تکامل هیجان انگیز است. ما در عصر طلایی برای رابط کاربری وب زندگی میکنیم، با ویژگیهای جدید CSS که با سرعتی که قبلاً ندیدهایم در مرورگرها فرود میآیند و دنیایی از امکانات را برای ایجاد تجربههای وب زیبا و جذاب باز میکند. این پست وبلاگ عمیقاً به وضعیت فعلی CSS می پردازد و برخی از متحول کننده ترین ویژگی های جدید را بررسی می کند که نحوه ساخت برنامه های وب را بازتعریف می کند که به صورت زنده در Google I/O 2024 ارائه شده است.
تجربیات تعاملی جدید
یک تجربه وب اساساً یک تماس و پاسخ بین شما و کاربرانتان است – به همین دلیل سرمایه گذاری در تعاملات با کیفیت با کاربر بسیار مهم است. ما روی پیشرفتهای واقعاً بزرگی کار کردهایم که قابلیتهایی را باز میکند که قبلاً هرگز در وب برای پیمایش در صفحات وب و پیمایش بین آنها نداشتیم.
انیمیشن های اسکرول محور
همانطور که از نام آن مشخص است، API انیمیشنهای اسکرول به شما امکان میدهد انیمیشنهای مبتنی بر اسکرول پویا را بدون تکیه بر مشاهدهگرهای اسکرول یا دیگر برنامهنویسیهای سنگین ایجاد کنید.
انیمیشن های اسکرول محور ایجاد کنید
مشابه نحوه عملکرد انیمیشنهای مبتنی بر زمان بر روی پلتفرم، اکنون میتوانید از پیشرفت اسکرول اسکرول برای شروع، توقف و معکوس کردن یک انیمیشن استفاده کنید. بنابراین با اسکرول کردن به جلو، پیشرفت انیمیشن را مشاهده خواهید کرد و در هنگام اسکرول کردن به عقب برعکس خواهد شد. این به شما امکان می دهد تصاویری جزئی یا تمام صفحه را با عناصر متحرک در داخل و درون پنجره مشاهده کنید، که به عنوان اسکرولایتر نیز شناخته می شود، برای تأثیر بصری پویا.
انیمیشنهای اسکرول را میتوان برای برجسته کردن محتوای مهم، راهنمایی کاربران از طریق یک داستان، یا به سادگی افزودن یک لمس پویا به صفحات وب خود استفاده کرد.
بصری انیمیشن اسکرول محور
نسخه ی نمایشی زنده
@keyframes appear {
from {
opacity: 0;
scale: 0.8;
}
to {
opacity: 1;
scale: 1;
}
}
img {
animation: appear linear;
animation-timeline: view();
animation-range: entry 25% cover 50%;
}
کد قبلی یک انیمیشن ساده را تعریف می کند که با تغییر شفافیت و مقیاس یک تصویر در نمای ظاهر می شود. انیمیشن توسط موقعیت اسکرول هدایت می شود. برای ایجاد این افکت، ابتدا انیمیشن CSS را تنظیم کنید و سپس animation-timeline
را تنظیم کنید. در این حالت، تابع view()
با مقادیر پیشفرض خود، تصویر را نسبت به Scrollport (که در این مثال، viewport نیز هست) دنبال میکند.
مهم است که پشتیبانی مرورگر و تنظیمات برگزیده کاربر را در نظر داشته باشید، به خصوص برای نیازهای دسترسی. بنابراین، از قانون @supports
استفاده کنید تا بررسی کنید که آیا مرورگر از انیمیشنهای اسکرولمحور پشتیبانی میکند یا خیر، و انیمیشن پیمایشمحور خود را در یک عبارت ترجیحی کاربر مانند @media (prefers-reduced-motion: no-preference)
بپیچید تا به تنظیمات حرکتی کاربران احترام بگذارید. . با انجام این بررسی ها می دانید که سبک های شما کار می کنند و انیمیشن برای کاربر مشکلی ندارد.
@supports (animation-timeline: view()) {
@media (prefers-reduced-motion: no-preference) {
/* Apply scroll-driven animations here */
}
}
انیمیشنهای اسکرول محور میتوانند به معنای تجربههای پیمایشی تمام صفحه باشند، اما میتوانند به معنای انیمیشنهای ظریفتر مانند نوار هدر باشند که در حین پیمایش یک برنامه وب، سایه را به حداقل میرسانند و نشان میدهند.
بصری انیمیشن اسکرول محور
نسخه ی نمایشی زنده
@keyframes shrink-name {
from {
font-size: 2em;
}
to {
font-size: 1.5em;
}
}
@keyframes add-shadow {
from {
box-shadow: none;
}
to {
box-shadow: 0 4px 2px -2px gray;
}
}
header {
animation: add-shadow linear both;
}
h2 {
animation: shrink-name linear both;
}
header, h2 {
animation-timeline: scroll();
animation-range: 0 150px;
}
این نسخه ی نمایشی از چند انیمیشن مختلف فریم کلیدی استفاده می کند - هدر، متن، نوار ناوبری و پس زمینه - سپس انیمیشن اسکرول-محور مربوطه را برای هر کدام اعمال می کند. در حالی که هر کدام از آنها سبک انیمیشن متفاوتی دارند، همه آنها دارای خط زمانی انیمیشن، نزدیکترین پیمایشگر، و محدوده انیمیشن یکسان هستند - از بالای صفحه تا 150 پیکسل.
مزایای عملکرد انیمیشن های اسکرول محور
این API داخلی، بار کدی را که باید حفظ کنید، کاهش میدهد، چه اسکریپت سفارشی که نوشتهاید و چه شامل یک وابستگی شخص ثالث اضافی. همچنین نیاز به ارسال ناظرهای مختلف اسکرول را از بین می برد، به این معنی که برخی از مزایای عملکرد بسیار قابل توجه است. این به این دلیل است که انیمیشنهای اسکرول محور هنگام متحرک کردن ویژگیهایی که میتوانند روی کامپوزیتور متحرک شوند، مانند تبدیلها و کدورت، از API جدید مستقیماً در CSS استفاده میکنید یا از قلابهای جاوا اسکریپت استفاده میکنید، از موضوع اصلی کار میکنند.
Tokopedia اخیراً از انیمیشن های پیمایشی استفاده کرده است تا نوار ناوبری محصول را در حین پیمایش ظاهر کند. استفاده از این API مزایای جدی هم برای مدیریت کد و هم برای عملکرد داشته است.
"ما موفق شدیم تا 80٪ از خطوط کد خود را در مقایسه با استفاده از رویدادهای اسکرول JS معمولی کاهش دهیم و مشاهده کردیم که میانگین استفاده از CPU از 50٪ به 2٪ در حین پیمایش کاهش می یابد. - Andy Wihalim، مهندس ارشد نرم افزار، Tokopedia."
آینده افکت های اسکرول
ما می دانیم که این اثرات همچنان وب را به مکانی جذاب تر تبدیل می کند، و ما در حال فکر کردن در مورد آنچه ممکن است بعدی باشد. این شامل توانایی نه تنها استفاده از جدولهای زمانی انیمیشن جدید، بلکه استفاده از یک نقطه اسکرول برای شروع یک انیمیشن است که به آن انیمیشنهای اسکرول راهاندازی میگویند.
و حتی ویژگیهای اسکرول بیشتری در آینده به مرورگرها میآیند. دمو زیر ترکیبی از این ویژگی های آینده را نشان می دهد. از CSS scroll-start-target
برای تنظیم تاریخ و زمان اولیه در انتخابکنندهها و رویداد جاوا اسکریپت scrollsnapchange
برای بهروزرسانی تاریخ هدر استفاده میکند که همگامسازی دادهها با رویداد قطعشده را بیاهمیت میکند.
همچنین می توانید با استفاده از رویداد جاوا اسکریپت scrollsnapchanging
یک انتخابگر را در زمان واقعی به روز کنید.
این ویژگیهای خاص در حال حاضر فقط در Canary پشت پرچم وجود دارند، اما قابلیتهایی را که قبلاً ساختن آن در پلتفرم غیرممکن یا بسیار دشوار بود را باز میکنند و آینده احتمالات تعاملات مبتنی بر اسکرول را برجسته میکنند.
برای کسب اطلاعات بیشتر درباره شروع کار با انیمیشنهای پیمایشی، تیم ما به تازگی مجموعه ویدیویی جدیدی را راهاندازی کرده است که میتوانید آن را در کانال یوتیوب Chrome for Developers پیدا کنید. در اینجا، شما اصول اولیه انیمیشنهای اسکرول را از Bramus Van Damme از جمله نحوه کارکرد این ویژگی، واژگان، روشهای مختلف برای ایجاد افکتها، و نحوه ترکیب افکتها برای ایجاد تجربیات غنی خواهید آموخت. این یک مجموعه ویدیویی عالی برای بررسی است.
مشاهده انتقال
ما به تازگی یک ویژگی جدید قدرتمند متحرک سازی در صفحات وب را پوشش دادیم، اما یک ویژگی جدید قدرتمند به نام انتقال دید برای متحرک سازی بین بازدیدهای صفحه برای ایجاد یک تجربه کاربری یکپارچه نیز وجود دارد. انتقالهای مشاهده، سطح جدیدی از سیالیت را به وب ارائه میکنند و به شما امکان میدهند بین نماهای مختلف در یک صفحه یا حتی در صفحات مختلف، انتقال یکپارچه ایجاد کنید.
Airbnb یکی از شرکتهایی است که در حال حاضر با یکپارچهسازی انتقال دید در رابط کاربری خود برای یک تجربه ناوبری وب روان و بدون درز آزمایش کرده است. این شامل نوار کناری ویرایشگر فهرست است، درست به ویرایش عکس ها و افزودن امکانات رفاهی، همه در یک جریان کاربر سیال.
در حالی که این افکتهای تمام صفحه زیبا و بدون درز هستند، میتوانید تعاملات میکرو ایجاد کنید، مانند این مثال که نمای فهرست شما در تعامل با کاربر بهروزرسانی میشود. این افکت را می توان بدون زحمت با انتقال دید به دست آورد.
راه برای فعال کردن سریع ترانزیشنهای مشاهده در برنامه تک صفحهای شما به سادگی بستهبندی یک تعامل با استفاده از document.startViewTransition
است و اطمینان از اینکه هر عنصری که در حال انتقال است دارای یک view-transition-name
، درون خطی یا پویا با استفاده از جاوا اسکریپت در حین ایجاد است. گره های DOM
نمایشی تصویری
نسخه ی نمایشی زنده
document.querySelectorAll('.delete-btn').forEach(btn => {
btn.addEventListener('click', () => {
document.startViewTransition(() => {
btn.closest('.card').remove();
});
})
});
/* Styles for the transition animation */
::view-transition-old(.card):only-child {
animation: fade-out ease-out 0.5s;
}
مشاهده کلاس های انتقال
از نامهای انتقال مشاهده میتوان برای اعمال انیمیشنهای سفارشی در انتقال نمای خود استفاده کرد، اگرچه این کار با انتقال عناصر بسیار دشوار است. اولین بهروزرسانی جدید برای مشاهده انتقالها در سال جاری، این مشکل را ساده میکند و امکان ایجاد کلاسهای انتقال نمایش را که میتواند برای انیمیشنهای سفارشی اعمال شود، معرفی میکند.
پشتیبانی مرورگر
مشاهده انواع انتقال
یکی دیگر از پیشرفت های بزرگ برای انتقال مشاهده، پشتیبانی از انواع انتقال مشاهده است. انواع انتقال مشاهده زمانی مفید هستند که می خواهید نوع دیگری از انتقال نمای بصری را هنگام متحرک سازی به و از نمای صفحه انجام دهید.
پشتیبانی مرورگر
برای مثال، ممکن است بخواهید یک صفحه اصلی به یک صفحه وبلاگ به روشی متفاوت از آن صفحه که به صفحه اصلی متحرک می شود، متحرک شود. یا ممکن است بخواهید صفحات را به روشهای مختلفی مانند این مثال، از چپ به راست و برعکس، جابهجا و خارج کنید. قبل از انجام این کار کثیف بود. میتوانید برای اعمال سبکها، کلاسهایی را به DOM اضافه کنید و سپس باید کلاسها را حذف کنید. View-transition-types مرورگر را قادر میسازد تا انتقالهای قدیمی را بهجای اینکه از شما بخواهد قبل از شروع موارد جدید این کار را بهصورت دستی انجام دهید، پاکسازی کند و این کار را برای شما انجام دهد.
می توانید انواع را در تابع document.startViewTransition
خود تنظیم کنید، که اکنون یک شی را می پذیرد. update
تابع فراخوانی است که DOM را به روز می کند و types
آرایه ای با انواع است.
document.startViewTransition({
update: myUpdate,
types: ['slide', 'forwards']
})
انتقال نمایش چند صفحه ای
چیزی که وب را قدرتمند می کند، گستردگی آن است. بسیاری از برنامه ها فقط یک صفحه نیستند، بلکه یک ملیله قوی حاوی چندین صفحه هستند. و به همین دلیل است که ما بسیار هیجان زده هستیم که اعلام کنیم که پشتیبانی از انتقال نمای بین اسناد را برای برنامه های چند صفحه ای در Chromium 126 ارسال می کنیم.
پشتیبانی مرورگر
این مجموعه ویژگی جدید اسناد متقابل شامل تجربیات وب است که در یک مبدا زندگی می کنند، مانند پیمایش از web.dev به web.dev/blog، اما این شامل پیمایش با مبدا متقابل، مانند پیمایش از web.dev به blog.web.dev یا به دامنه دیگری مانند google.com.
یکی از تفاوتهای اصلی با انتقالهای نمای همان سند این است که نیازی نیست انتقال خود را با document.startViewTransition()
بپیچید. در عوض، با استفاده از CSS @view-transition
at-rule، هر دو صفحه درگیر در انتقال view را انتخاب کنید.
@view-transition {
navigation: auto;
}
برای جلوه سفارشیتر، میتوانید با استفاده از شنوندههای رویداد pageswap
یا pagereveal
جدید به جاوا اسکریپت متصل شوید، که به شما امکان دسترسی به شی انتقال view را میدهد.
با pageswap
میتوانید تغییرات لحظه آخری را در صفحه خروجی درست قبل از گرفتن عکسهای فوری قدیمی انجام دهید، و با pagereveal
صفحه جدید را قبل از شروع رندر پس از شروع اولیه، سفارشی کنید.
window.addEventListener('pageswap', async (e) => {
// ...
});
window.addEventListener('pagereveal', async (e) => {
// ...
});
در آینده، ما در نظر داریم تا انتقالهای مشاهده را گسترش دهیم، از جمله:
- انتقالهای محدوده : به شما اجازه میدهد یک انتقال را به یک زیردرخت DOM محدود کنید، و بقیه صفحه را قادر میسازد همچنان تعاملی باشد و از انتقالهای چند نمایشی که همزمان اجرا میشوند پشتیبانی میکند.
- انتقالهای نمای مبتنی بر اشاره : از حرکتهای کشیدن یا کشیدن انگشت برای راهاندازی انتقال نمای متقابل اسناد برای تجربههای بومیمانند بیشتر در وب استفاده کنید.
- تطبیق پیمایش در CSS : انتقال نمای متقاطع خود را مستقیماً در CSS خود به عنوان جایگزینی برای استفاده از رویدادهای
pageswap
وpagereveal
در جاوا اسکریپت سفارشی کنید. سخنرانی زیر توسط براموس ون دام را بررسی کنید:
اجزای رابط کاربر با موتور: ساده کردن تعاملات پیچیده
ساختن برنامه های پیچیده وب کار ساده ای نیست، اما CSS و HTML در حال تکامل هستند تا این فرآیند را بسیار قابل مدیریت کنند. ویژگیها و پیشرفتهای جدید ایجاد مؤلفههای رابط کاربری را ساده میکنند و به شما امکان میدهند روی ایجاد تجربیات عالی تمرکز کنید. این کار از طریق یک تلاش مشترک شامل چندین نهاد استاندارد کلیدی و گروههای اجتماعی، از جمله گروه کاری CSS، گروه جامعه رابط کاربری باز، و WHATWG (گروه کاری فناوری کاربردی ابرمتن وب) انجام میشود.
یکی از مشکلات بزرگ توسعه دهندگان یک درخواست به ظاهر ساده است: توانایی استایل دادن به منوهای کشویی (عنصر انتخاب). در حالی که در ظاهر ساده به نظر می رسد، این یک مشکل پیچیده است و بسیاری از قطعات پلت فرم را لمس می کند. از طرحبندی و رندر گرفته تا اسکرول و تعامل، تا استایل عامل کاربر و ویژگیهای CSS و حتی تغییرات در خود HTML.

یک کشویی شامل قطعات زیادی است و شامل حالات بسیاری است که باید در نظر گرفته شوند، مانند:
- اتصالات صفحه کلید (برای ورود/خروج از تعامل)
- برای رد کردن، کلیک کنید
- مدیریت پاپاور فعال (پس از باز شدن پاپاورهای دیگر را ببندید)
- مدیریت فوکوس برگه
- تجسم مقدار گزینه انتخاب شده
- سبک تعامل پیکان
- مدیریت دولتی (باز/بستن)
در حال حاضر مدیریت همه این حالت به تنهایی دشوار است، اما پلتفرم نیز آن را آسان نمی کند. برای رفع این مشکل، ما آن قطعات را شکستیم و چند ویژگی ابتدایی را ارسال میکنیم که فهرستهای بازشوی استایل را فعال میکنند، اما کارهای بیشتری را نیز انجام میدهند.
Popover API
ابتدا یک ویژگی جهانی به نام popover
ارسال کردیم، که من هیجان زده هستم که اعلام کنم چند هفته پیش به وضعیت اولیه در دسترس رسیده است.
عناصر Popover با display: none
تا زمانی که با فراخوانی مانند دکمه یا با جاوا اسکریپت باز نشود. برای ایجاد یک پاپاور اولیه، ویژگی popover را روی عنصر تنظیم کنید و ID آن را با استفاده از popovertarget
به یک دکمه پیوند دهید. اکنون، دکمه فراخوان است،
نمایشی تصویری
نسخه ی نمایشی زنده
<button popovertarget="my-popover">Open Popover</button>
<div id="my-popover" popover>
<p>I am a popover with more information.</p>
</div>
با فعال شدن ویژگی popover، مرورگر بسیاری از رفتارهای کلیدی را بدون هیچ گونه اسکریپت اضافی از جمله:
- ارتقاء به لایه بالایی : یک لایه جداگانه در بالای بقیه صفحه، بنابراین مجبور نیستید با
z-index
بازی کنید. - قابلیت حذف نور : کلیک کردن در خارج از ناحیه پاپاور، پاپاور را بسته و فوکوس را برمی گرداند.
- مدیریت فوکوس برگه پیشفرض. : باز کردن پاپاور باعث توقف تب بعدی در داخل پاپاور می شود.
- اتصالات صفحه کلید داخلی : با زدن کلید
esc
یا دوبار تغییر دادن، پاپاور بسته می شود و فوکوس برمی گردد. - اتصالات پیش فرض مؤلفه. : مرورگر به صورت معنایی یک popover را به ماشه آن متصل می کند.

حتی ممکن است امروز بدون اینکه متوجه شوید از این API popover استفاده کنید. GitHub popover را در منوی "جدید" صفحه اصلی خود و در نمای کلی بررسی درخواست pull خود پیاده سازی کرد. آنها به تدریج این ویژگی را با استفاده از popover polyfill که توسط Oddbird با پشتیبانی قابل توجهی از Keith Cirkel خود GitHub ساخته شده بود، برای پشتیبانی از مرورگرهای قدیمی تر بهبود دادند.
ما توانستهایم با مهاجرت به پاپاور، ۱۰۰۰ خط کد را به معنای واقعی کلمه منسوخ کنیم. Popover با حذف نیاز به مبارزه با اعداد z-index جادویی به ما کمک میکند... داشتن رابطه درخت دسترسی صحیح که با رفتار دکمههای اعلانی ایجاد شده است، و رفتارهای تمرکز تعبیهشده در آن، اجرای صحیح الگوها را برای سیستم طراحی ما بسیار آسانتر میکند. کیت سیرکل، مهندس نرم افزار، GitHub
متحرک سازی جلوه های ورود و خروج
هنگامی که پاپاور دارید، احتمالاً می خواهید تعاملی را اضافه کنید. چهار ویژگی تعاملی جدید وجود دارد که در سال گذشته برای پشتیبانی از پوپاورهای متحرک به وجود آمد. این موارد عبارتند از:
توانایی متحرک سازی display
و content-visibility
در یک جدول زمانی کلید فریم.
ویژگی transition-behavior
با کلمه کلیدی allow-discrete
برای فعال کردن انتقال خصوصیات گسسته مانند display
.
قانون @starting-style
برای متحرک کردن جلوه های ورودی از display: none
و در لایه بالایی .
ویژگی overlay برای کنترل رفتار لایه بالایی در طول یک انیمیشن.
این ویژگیها برای هر عنصری که در لایه بالایی متحرک میسازید، کار میکنند، خواه پاپاور یا دیالوگ باشد. در مجموع، برای دیالوگ با پسزمینه به این شکل به نظر میرسد:
نمایشی تصویری
نسخه ی نمایشی زنده
dialog, ::backdrop{
opacity: 0;
transition: opacity 1s, display 1s allow-discrete, overlay 1s allow-discrete;
}
[open], [open]::backdrop {
opacity: 1;
}
@starting-style {
[open], [open]::backdrop {
opacity: 0;
}
}
ابتدا، @starting-style
راهاندازی کنید تا مرورگر بداند از چه سبکهایی این عنصر را در DOM متحرک کند. این کار هم برای دیالوگ و هم برای پس زمینه انجام می شود. سپس حالت باز را هم برای دیالوگ و هم برای پس زمینه استایل دهید. برای دیالوگ، از ویژگی open
و برای popover از شبه عنصر ::popover-open
استفاده میکند. در نهایت، opacity
، display
، و overlay
با استفاده از کلمه کلیدی allow-discrete
متحرک کنید تا حالت انیمیشن که در آن ویژگیهای گسسته میتوانند تغییر کنند، فعال شود.
موقعیت لنگر
Popover فقط شروع داستان بود. یک بهروزرسانی بسیار هیجانانگیز این است که پشتیبانی از موقعیت لنگر اکنون از Chrome 125 در دسترس است.
با استفاده از موقعیت یابی لنگر، تنها با چند خط کد، مرورگر می تواند منطق اتصال یک عنصر موقعیت یافته را به یک یا چند عنصر لنگر انجام دهد. در مثال زیر، یک راهنمای ابزار ساده به هر دکمه متصل شده است که در مرکز پایین قرار دارد.
نمایشی تصویری
نسخه ی نمایشی زنده
با استفاده از ویژگی anchor-name
در عنصر لنگر (در این مورد دکمه)، و ویژگی position-anchor
در عنصر موقعیت (در این مورد، راهنمای ابزار) یک رابطه موقعیت لنگر در CSS تنظیم کنید. سپس با استفاده از تابع anchor()
موقعیت مطلق یا ثابت را نسبت به لنگر اعمال کنید. کد زیر بالای راهنمای ابزار را در پایین دکمه قرار می دهد.
.anchor {
anchor-name: --my-anchor;
}
.positioned {
position: absolute;
position-anchor: --my-anchor;
}
از طرف دیگر، از anchor-name مستقیماً در تابع anchor استفاده کنید و از ویژگی position-anchor
صرفنظر کنید. این می تواند هنگام اتصال به چندین عنصر مفید باشد.
.anchor {
anchor-name: --my-anchor;
}
.positioned {
position: absolute;
top: anchor(--my-anchor bottom);
}
در نهایت، از کلمه کلیدی جدید anchor-center
برای ویژگی های justify
و align
استفاده کنید تا عنصر قرار گرفته را روی لنگر آن متمرکز کنید.
.anchor {
anchor-name: --my-anchor;
}
.positioned {
position: absolute;
top: anchor(--my-anchor bottom);
justify-self: anchor-center;
}
در حالی که استفاده از موقعیت لنگر با پاپاور بسیار راحت است، پاپاور قطعاً برای استفاده از موقعیت لنگر الزامی نیست. موقعیت لنگر را می توان با هر دو (یا بیشتر) عنصر برای ایجاد یک رابطه بصری استفاده کرد. در واقع، نسخه ی نمایشی زیر، با الهام از مقاله ای از رومن کوماروف ، نشان می دهد که یک سبک زیر خطی برای لیست کردن آیتم ها در حالی که ماوس را بر روی آنها نگه می دارید یا برگه می کنید، نشان می دهد.
نمایشی تصویری
نسخه ی نمایشی زنده
این مثال از تابع لنگر برای تنظیم موقعیت لنگر با استفاده از ویژگی های فیزیکی left
، right
و bottom
استفاده می کند. هنگامی که ماوس را روی یکی از پیوندها نگه میدارید، لنگر هدف تغییر میکند، و مرورگر هدف را تغییر میدهد تا موقعیتیابی را اعمال کند، همچنین رنگ را در همان زمان متحرک میکند تا جلوهای منظم ایجاد کند.
ul::before {
content: "";
position: absolute;
left: anchor(var(--target) left);
right: anchor(var(--target) right);
bottom: anchor(var(--target) bottom);
...
}
li:nth-child(1) { --anchor: --item-1 }
ul:has(:nth-child(1) a:is(:hover, :focus-visible)) {
--target: --item-1;
--color: red;
}
موقعیت یابی inset-area
علاوه بر موقعیتیابی مطلق جهتدار پیشفرض که احتمالاً قبلاً استفاده کردهاید، مکانیسم طرحبندی جدیدی نیز وجود دارد که بهعنوان بخشی از API موقعیتیابی لنگر به نام ناحیه داخلی قرار گرفته است. ناحیه درونی، قرار دادن عناصر قرار گرفته نسبت به لنگرهای مربوطه را آسان می کند و بر روی یک شبکه 9 سلولی با عنصر لنگر در مرکز کار می کند. به عنوان مثال، inset-area: top
عنصر قرار گرفته را در بالا قرار می دهد، و inset-area: bottom
عنصر قرار گرفته را در پایین قرار می دهد.
یک نسخه ساده شده از اولین نسخه نمایشی لنگر با inset-area
به شکل زیر است:
.anchor {
anchor-name: --my-anchor;
}
.positioned {
position: absolute;
position-anchor: --my-anchor;
inset-area: bottom;
}
میتوانید این مقادیر موقعیتی را با کلیدواژههای span ترکیب کنید تا از موقعیت مرکزی شروع کنید و یا به سمت چپ، به راست یا همه را بچرخانید تا مجموعه کاملی از ستونها یا ردیفهای موجود را اشغال کنید. همچنین می توانید از ویژگی های منطقی نیز استفاده کنید. برای سهولت در تجسم و انتخاب این مکانیسم طرحبندی، این ابزار را در Chrome 125+ بررسی کنید:
از آنجایی که این عناصر لنگر هستند، عنصر موقعیتیافته به صورت پویا در اطراف صفحه حرکت میکند و لنگر آن حرکت میکند. بنابراین در این مورد، ما عناصر کارت به سبک پرس و جوی کانتینر را داریم که بر اساس اندازه ذاتی خود تغییر اندازه میدهند (کاری که نمیتوانستید با درخواستهای رسانه انجام دهید)، و با تغییر رابط کاربری کارت، منوی لنگر با طرحبندی جدید تغییر میکند.
نمایشی تصویری
نسخه ی نمایشی زنده
موقعیت های لنگر پویا با position-try-options
ایجاد منوها و پیمایش زیر منوها با ترکیبی از پوپاور و موقعیت لنگر بسیار ساده تر است. و هنگامی که با عنصر لنگردار خود به لبه یک درگاه دید برخورد میکنید، میتوانید به مرورگر اجازه دهید که تغییر موقعیت را برای شما نیز انجام دهد. شما می توانید این کار را به چند روش انجام دهید. اولین مورد این است که قوانین موقعیت یابی خود را ایجاد کنید. در این حالت، منوی فرعی ابتدا در سمت راست دکمه "فروشگاه" قرار می گیرد. اما می توانید یک بلوک @position-try
برای زمانی که فضای کافی در سمت راست منو وجود ندارد ایجاد کنید و یک شناسه سفارشی از --bottom
به آن بدهید. سپس، این بلوک @position-try
با استفاده از position-try-options
به لنگر متصل میکنید.
اکنون، مرورگر بین این حالتهای لنگر سوئیچ میکند، ابتدا موقعیت مناسب را امتحان میکند و سپس به پایین میرود. و این را می توان با یک انتقال خوب انجام داد.
نمایشی تصویری
نسخه ی نمایشی زنده
#submenu {
position-anchor: --submenu;
top: anchor(top);
left: anchor(right);
margin-left: var(--padding);
position-try-options: --bottom;
transition: top 0.25s, left 0.25s;
width: max-content;
}
@position-try --bottom {
top: anchor(left);
left: anchor(bottom);
margin-left: var(--padding);
}
در کنار منطق موقعیت یابی صریح، چند کلمه کلیدی وجود دارد که مرورگر در صورت تمایل به برخی تعاملات اساسی مانند چرخاندن لنگر در مسیرهای بلوک یا درون خطی ارائه می کند.
position-try-options: flip-block, flip-inline;
برای یک تجربه ساده ورق زدن، از این مقادیر کلیدواژه برگردان استفاده کنید و از نوشتن یک تعریف position-try
کننده به طور کلی صرف نظر کنید. بنابراین اکنون می توانید تنها با چند خط CSS یک عنصر کاملاً کاربردی و پاسخگوی موقعیت مکانی داشته باشید.
نمایشی تصویری
نسخه ی نمایشی زنده
.tooltip {
inset-area: top;
position-try-options: flip-block;
}
درباره استفاده از موقعیت لنگر بیشتر بیاموزید.
آینده رابط کاربری لایه ای
ما در همه جا تجربیات متصل شده را می بینیم، و مجموعه ویژگی هایی که در این پست نشان داده شده است، شروعی عالی برای آزادسازی خلاقیت و کنترل بهتر بر عناصر لنگر و رابط های لایه ای است. اما این تازه شروع کار است. به عنوان مثال، در حال حاضر popover
فقط با دکمه ها به عنوان عنصر فراخوانی یا با جاوا اسکریپت کار می کند. برای چیزی مانند پیشنمایشهای سبک ویکیپدیا، الگویی که در سرتاسر پلتفرم وب مشاهده میشود، باید امکان تعامل با آن وجود داشته باشد، و همچنین از یک پیوند و از سوی کاربر که بدون نیاز به کلیک کردن روی آن علاقه نشان میدهد، مانند یک شناور یا برگه، یک پاپاور ایجاد کند. تمرکز کنید.
به عنوان گام بعدی برای popover API، ما در حال کار بر روی interesttarget
هستیم تا این نیازها را برطرف کنیم و بازآفرینی این تجربیات را با قلابهای دسترسی مناسب آسانتر کنیم. حول رفتارهای ایده آل، اما حل و عادی سازی این عملکرد در سطح پلت فرم باید این تجربیات را برای همه بهبود بخشد.
<a interesttarget="my-tooltip">Hover/Focus to show the tooltip</a>
<span popover=hint id="my-toolip">This is the tooltip</span>
علاوه بر این، یک فراخوان عمومی دیگر ( invoketarget
) برای آزمایش در Canary به لطف کار دو توسعه دهنده شخص ثالث، Keith Cirkel و Luke Warlow وجود دارد. invoketarget
از تجربه توسعهدهنده اعلامی پشتیبانی میکند که popovertarget
برای همه عناصر تعاملی، از جمله <dialog>
، <details>
، <video>
، <input type="file">
و غیره نرمالسازی شده است.
<button invoketarget="my-dialog">
Open Dialog
</button>
<dialog id="my-dialog">
Hello world!
</dialog>
ما می دانیم که موارد استفاده وجود دارد که هنوز توسط این API پوشش داده نشده است. به عنوان مثال، شکل دادن به فلشی که یک عنصر لنگر را به لنگر آن متصل میکند، بهویژه زمانی که موقعیت عنصر لنگر تغییر میکند، و به یک عنصر امکان میدهد که «لغزش» کند و در نمای دید بماند بهجای اینکه وقتی به مرز خود میرسد به مجموعه موقعیت دیگری بپیچد. جعبه بنابراین، در حالی که ما برای ایجاد این API قدرتمند هیجانزده هستیم، همچنین مشتاقیم که قابلیتهای آن را در آینده بیشتر گسترش دهیم.
انتخاب سبک
با استفاده از popover
و anchor
با هم، تیم پیشرفت کرده است تا در نهایت امکان انتخاب کشویی قابل تنظیم را فراهم کند. خبر خوب این است که پیشرفت های زیادی صورت گرفته است. خبر بد این است که این API در حال حاضر هنوز در حالت آزمایشی است. با این حال، من برای به اشتراک گذاشتن چند دموی زنده و به روز رسانی در مورد پیشرفت خود هیجان زده هستم و امیدوارم بازخورد شما را دریافت کنم. اول، پیشرفت هایی در مورد نحوه انتخاب کاربران در تجربه انتخابی جدید و قابل تنظیم وجود داشته است. روش فعلی و در حال انجام برای انجام این کار استفاده از یک ویژگی ظاهر در CSS است که روی appearance: base-select
. پس از تنظیم ظاهر، تجربه انتخابی جدید و قابل تنظیم را انتخاب خواهید کرد.
select {
appearance: base-select;
}
علاوه بر appearance: base-select
، چند بهروزرسانی جدید HTML وجود دارد. اینها شامل توانایی قرار دادن گزینه های خود در یک datalist
برای سفارشی سازی و توانایی اضافه کردن محتوای غیر تعاملی دلخواه مانند تصاویر در گزینه های شما می شود. شما همچنین به یک عنصر جدید، <selectedoption>
دسترسی خواهید داشت، که محتوای گزینه ها را در خود منعکس می کند، سپس می توانید آن را مطابق با نیازهای خود سفارشی کنید. این عنصر واقعا مفید است.
نمایشی تصویری

نسخه ی نمایشی زنده
<select>
<button type=popover>
<selectedoption></selectedoption>
</button>
<datalist>
<option value="" hidden>
<p>Select a country</p>
</option>
<option value="andorra">
<img src="Flag_of_Andorra.svg" />
<p>Andorra</p>
</option>
<option value="bolivia">
<img src="Flag_of_Bolivia.svg" />
<p>Bolivia</p>
</option>
...
</datalist>
</select>
کد زیر سفارشی کردن <selectedoption>
را در رابط کاربری Gmail نشان می دهد، که در آن یک نماد بصری نشان دهنده نوع پاسخی است که برای صرفه جویی در فضا انتخاب شده است. میتوانید از سبکهای نمایش اولیه در selectedoption
برای متمایز کردن استایل گزینه از سبک پیشنمایش استفاده کنید. در این حالت، متنی که در گزینه نشان داده شده است می تواند به صورت بصری در selectedoption
پنهان شود.
نمایشی تصویری

نسخه ی نمایشی زنده
selectedoption .text {
display: none;
}
یکی از بزرگترین مزایای استفاده مجدد از عنصر <select>
برای این API سازگاری با عقب است. در این انتخاب کشور، میتوانید یک رابط کاربری سفارشی شده با تصاویر پرچم را در گزینهها برای تجزیه آسانتر محتوا توسط کاربر مشاهده کنید. از آنجایی که مرورگرهای پشتیبانی نشده خطوطی را که نمیفهمند، مانند دکمه سفارشی، فهرست دادهها، گزینههای انتخابی و تصاویر موجود در گزینهها نادیده میگیرند، نسخه بازگشتی مشابه رابط کاربری انتخابی پیشفرض فعلی خواهد بود.

با انتخاب های قابل تنظیم، امکانات بی پایان هستند. من به ویژه این انتخابگر کشور به سبک Airbnb را دوست دارم زیرا سبکی هوشمندانه برای طراحی واکنشگرا وجود دارد. شما می توانید این کار و بسیاری کارهای دیگر را با انتخاب سبک آینده انجام دهید و آن را به یک افزونه بسیار مورد نیاز برای پلتفرم وب تبدیل کنید.
نمایشی تصویری
نسخه ی نمایشی زنده
آکاردئون انحصاری
حل استایل انتخابی (و تمام قطعات همراه با آن) تنها جزء رابط کاربری نیست که تیم کروم روی آن تمرکز کرده است. اولین به روز رسانی اجزای اضافی، توانایی ایجاد آکاردئون های انحصاری است که در آن تنها یکی از آیتم های آکاردئون را می توان در یک زمان باز کرد.
پشتیبانی مرورگر
راه فعال کردن این است که مقدار نام یکسانی را برای چندین عنصر جزئیات اعمال کنید، بنابراین یک گروه متصل از جزئیات ایجاد می شود، بسیار شبیه به یک گروه از دکمه های رادیویی
<details name="learn-css" open>
<summary>Welcome to Learn CSS!</summary>
</details>
<details name="learn-css">
<summary>Box Model</summary>
<p>...</p>
</details>
<details name="learn-css">
<summary>Selectors</summary>
<p>...</p>
</details>
:user-valid
و :user-invalid
یکی دیگر از بهبودهای مؤلفه رابط کاربری، کلاسهای :user-valid
و :user-invalid
هستند. اخیراً در همه مرورگرها پایدار است، شبه کلاسهای :user-valid
و :user-invalid
شبیه به کلاسهای شبه :valid
و :invalid
رفتار میکنند، اما تنها پس از اینکه کاربر به طور قابل توجهی با ورودی تعامل داشته باشد، با یک کنترل فرم مطابقت دارد. این بدان معناست که برای تعیین اینکه آیا یک مقدار فرم با آن تعامل داشته است یا "کثیف" شده است، کد کمتری مورد نیاز است، که می تواند برای ارائه بازخورد کاربر بسیار مفید باشد و تعداد زیادی از اسکریپت های لازم برای انجام این کار را کاهش می دهد. گذشته
نمایش نمایش نسخه ی نمایشی
نسخه نمایشی زنده
input:user-valid,
select:user-valid,
textarea:user-valid {
--state-color: green;
--bg: linear-gradient(...);
}
input:user-invalid,
select:user-invalid,
textarea:user-invalid {
--state-color: red;
--bg: linear-gradient(...);
}
درباره استفاده از شبه عناصر اعتبار سنجی فرم کاربر* بیشتر بیاموزید.
field-sizing: content
یکی دیگر از بهروزرسانیهای مفید مؤلفهای که اخیراً منتشر شده field-sizing: content
، که میتواند برای تشکیل کنترلهایی مانند ورودیها و مناطق متنی اعمال شود. این باعث می شود که اندازه ورودی بسته به محتوای آن بزرگ شود (یا کوچک شود). field-sizing: content
میتواند مخصوصاً برای قسمتهای متنی مفید باشد، زیرا دیگر اندازههای ثابتی ندارید که ممکن است لازم باشد برای دیدن آنچه در قسمتهای قبلی درخواست خود در یک کادر ورودی خیلی کوچک نوشتهاید، به بالا بروید.
نمایش نمایش نسخه ی نمایشی
نسخه نمایشی زنده
textarea, select, input {
field-sizing: content;
}
درباره اندازه زمین بیشتر بدانید.
<hr>
در <select>
امکان فعال کردن <hr>
یا عنصر قاعده افقی در انتخاب ها یکی دیگر از ویژگی های جزئی کوچک اما مفید است. در حالی که این کاربرد معنایی چندانی ندارد، به شما کمک می کند تا به خوبی محتوا را در یک لیست انتخابی جدا کنید، به خصوص محتوایی که ممکن است لزوماً نخواهید آنها را با یک optgroup گروه بندی کنید، مانند مقدار placeholder.
اسکرین شات را انتخاب کنید

Live Demo را انتخاب کنید
<select name="majors" id="major-select">
<option value="">Select a major</option>
<hr>
<optgroup label="School of Fine Arts">
<option value="arthist">
Art History
</option>
<option value="finearts">
Fine Arts
</option>
...
</select>
درباره استفاده از hr در انتخاب بیشتر بیاموزید
بهبود کیفیت زندگی
ما دائماً در حال تکرار هستیم و این فقط برای تعاملات و اجزا نیست. بسیاری دیگر از به روز رسانی های کیفیت زندگی وجود دارد که در سال گذشته منتشر شده است.
لانه سازی با چشم انتظار
تودرتوی CSS بومی سال گذشته در همه مرورگرها قرار گرفت و از آن زمان برای پشتیبانی از lookahead بهبود یافته است، به این معنی که نام عناصر &
قبل از آن دیگر الزامی نیست. این باعث میشود لانهسازی بسیار ارگونومیکتر و شبیه به آنچه در گذشته به آن عادت کردهام احساس شود.
یکی از موارد مورد علاقه من در مورد تودرتو CSS این است که شما را قادر می سازد بصری کامپوننت ها را مسدود کنید، و در داخل آن کامپوننت ها شامل حالت ها و اصلاح کننده ها، مانند پرس و جوهای کانتینر و پرس و جوهای رسانه ای می شود. قبلاً، من عادت داشتم تمام این پرس و جوها را برای اهداف خاص در پایین فایل گروه بندی کنم. اکنون، میتوانید آنها را درست در کنار بقیه کدتان به روشی منطقی بنویسید
.card {
/* card base styles */
h2 {
/* child element style */
}
&.highlight {
/* modifier style */
}
&:hover, &:focus {
/* state styles */
}
@container (width >= 300px) {
/* container query styles */
}
}
تراز کردن محتوا برای طرح بندی بلوک
یکی دیگر از تغییرات بسیار خوب، توانایی استفاده از مکانیسم های مرکزی مانند align-content
در طرح بندی بلوک است. این بدان معناست که اکنون میتوانید کارهایی مانند مرکز عمودی در یک div را بدون نیاز به اعمال طرحبندی انعطافپذیر یا شبکهای، و بدون عوارض جانبی مانند جلوگیری از فروپاشی حاشیه انجام دهید، که ممکن است از آن الگوریتمهای طرحبندی نخواهید.
پشتیبانی مرورگر
اسکرین شات

نسخه نمایشی زنده
div {
align-content: center;
}
بسته بندی متن: متعادل و زیبا
وقتی صحبت از چیدمان شد، چیدمان متن با افزودن text-wrap: balance
و pretty
. text-wrap: balance
برای بلوک یکنواختتر متن استفاده میشود، در حالی که text-wrap: pretty
روی کاهش تکتنها در خط آخر متن تمرکز میکند.
نمایش نمایشی نسخه ی نمایشی
نسخه نمایشی زنده
balance
و pretty
روی عنوان و یک پاراگراف مقایسه کنید. سعی کنید نسخه ی نمایشی را به زبان دیگری ترجمه کنید! h1 {
text-wrap: balance;
}
درباره text-wrap: balance بیشتر بیاموزید.
به روز رسانی تایپوگرافی بین المللی
بهروزرسانیهای طرحبندی تایپوگرافی برای ویژگیهای متن CJK در سال گذشته بهروزرسانیهای خوبی دریافت کردند، مانند ویژگی word-break: auto-phrase
که خط را در مرز عبارت طبیعی میپیچد.
پشتیبانی مرورگر

word-break: normal
و word-break: auto-phrase
و text-spacing-trim
، که برای بهبود خوانایی تایپوگرافی چینی، ژاپنی، و کره ای برای نتایج بصری دلپذیرتر، بین نویسههای نقطهگذاری هستهگذاری میشود.

نحو نسبی رنگ
در دنیای تم رنگی، شاهد یک به روز رسانی بزرگ با نحو نسبی رنگ بودیم.
در این مثال، رنگهای اینجا از قالببندی مبتنی بر Oklch استفاده میکنند. همانطور که مقدار رنگ بر اساس نوار لغزنده تنظیم می شود، کل موضوع تغییر می کند. این را می توان با نحو نسبی رنگ به دست آورد. پسزمینه از رنگ اصلی بر اساس رنگ استفاده میکند و کانالهای روشنایی، رنگ و رنگ را برای تنظیم مقدار آن تنظیم میکند. --i نمایه خواهر و برادر در لیست برای درجهبندی مقادیر است که نشان میدهد چگونه میتوانید پله را با ویژگیهای سفارشی و نحو رنگ نسبی ترکیب کنید تا مضامین بسازید.
نمایش نمایشی نسخه ی نمایشی
نسخه نمایشی زنده
balance
و pretty
روی عنوان و یک پاراگراف مقایسه کنید. سعی کنید نسخه ی نمایشی را به زبان دیگری ترجمه کنید! :root {
--hue: 230;
--primary: oklch(70% .2 var(--hue));
}
li {
--_bg: oklch(from var(--primary)
calc(l - (var(--i) * .05))
calc(c - (var(--i) * .01))
calc(h - (var(--i) + 5)));
}
تابع light-dark()
همراه با عملکرد light-dark()
، مضامین بسیار پویاتر و ساده تر شده اند.
تابع light-dark()
یک پیشرفت ارگونومیک است که گزینه های مضمون رنگ را ساده می کند تا بتوانید سبک های تم را به روشی مختصر تر بنویسید ، همانطور که در این نمودار بصری توسط آدام آرگیل بسیار زیبا نشان داده شده است. قبل از این ، برای تنظیم گزینه های موضوع به دو بلوک مختلف کد (موضوع پیش فرض و پرس و جو ترجیح کاربر) نیاز دارید. اکنون ، می توانید این گزینه های سبک را برای هر دو مضمون سبک و تاریک در همان خط CSS با استفاده از عملکرد light-dark()
بنویسید.
light-dark()
. برای اطلاعات بیشتر به نسخه ی نمایشی مراجعه کنید. html {
color-scheme: light dark;
}
button {
background-color: light-dark(lightblue, darkblue);
}
اگر کاربر یک موضوع سبک را انتخاب کند ، دکمه دارای پس زمینه آبی روشن خواهد بود. اگر کاربر یک موضوع تاریک را انتخاب کند ، دکمه دارای پس زمینه آبی تیره خواهد بود.
:has()
انتخاب کننده است
و من از اینکه در مورد UI مدرن صحبت می کنم بدون ذکر یکی از تأثیرگذارترین برجسته های بین المللی از سال گذشته ، که باید این باشد :has()
، در دسامبر سال گذشته در مرورگرها فرود می آید. این API یک تغییر دهنده بازی برای نوشتن سبک های منطقی است.
انتخاب :has()
انتخاب کننده شما را قادر می سازد تا بررسی کنید که آیا یک عنصر کودک دارای فرزندان خاص است یا اینکه آن کودکان در وضعیت خاصی قرار دارند ، و اساساً می توانند به عنوان انتخاب کننده والدین نیز عمل کنند.
has()
برای استفاده از بلوک های مقایسه بر روی توکوپیدیا استفاده می شود. :has()
قبلاً نشان داده است که برای بسیاری از شرکت ها ، از جمله PolicyBazaar ، که از آنها استفاده می کنند :has()
در بلوک مقایسه کنید ، یا اگر خالی است.
"با انتخاب: HAS () ، ما توانستیم اعتبار سنجی مبتنی بر JavaScript از انتخاب کاربر را از بین ببریم و آن را با یک راه حل CSS جایگزین کنیم که یکپارچه برای ما با همان تجربه قبلی کار می کند.
پرس و جوهای کانتینر
نکته مهم دیگر در وب که اکنون به تازگی در دسترس است و در حال رشد است ، نمایش داده های کانتینر است که امکان پرس و جو از اندازه ذاتی والدین عنصر را برای استفاده از سبک ها فراهم می کند: یک شانه بسیار خوب تر از نمایش داده های رسانه اندازه
Angular به تازگی یک سایت مستندات جدید زیبا را در Angular.dev با استفاده از نمایش داده های کانتینر برای سبک کردن بلوک های هدر بر اساس فضای موجود در صفحه راه اندازی کرده است. بنابراین حتی اگر طرح تغییر کند ، و از یک طرح نوار کناری چند رنگ به یک طرح تک ستونی می رود ، بلوک های هدر می توانند خود سازگار باشند.
بدون پرس و جوهای کانتینر ، انجام چنین کاری بسیار دشوار بود و به عملکرد آسیب رساند و به ناظران تغییر اندازه و ناظران عنصر نیاز داشت. اکنون ، سبک بودن یک عنصر مبتنی بر اندازه والدین آن بی اهمیت است.
صفحه نمایش آزمایشی
نسخه نمایشی زنده
@property
و سرانجام خیلی زود ، ما از دیدن زمین Property در ابتدا هیجان زده هستیم. این یک ویژگی اصلی برای ارائه معنای معنایی به خصوصیات سفارشی CSS (همچنین به عنوان متغیرهای CSS نیز شناخته می شود) است و ویژگی های تعامل جدیدی را امکان پذیر می کند. @property
همچنین معنای متنی ، TypeChecking ، پیش فرض ها و مقادیر برگشتی را در CSS امکان پذیر می کند. باز کردن درها برای ویژگی های حتی قوی تر مانند نمایش داده های سبک. این ویژگی است که قبلاً هرگز امکان پذیر نبود ، و اکنون آنقدر عمق زبان CSS را فراهم می کند.
صفحه نمایش آزمایشی
نسخه نمایشی زنده
@property --card-bg {
syntax: "<color>";
inherits: false;
initial-value: #c0bae8;
}
نتیجه گیری
با وجود همه این قابلیت های قدرتمند UI جدید که در مرورگرها قرار دارند ، امکانات بی پایان است. تجربیات تعاملی رمان با انیمیشن های محور و انتقال مشاهده ، وب را به روش هایی که قبلاً ندیده ایم ، روان و تعاملی تر می کند. و مؤلفه های سطح UI سطح بعدی ، ساخت اجزای قوی و زیبا و سفارشی را بدون پاره کردن کل تجربه بومی آسانتر می کنند. و سرانجام ، کیفیت زندگی در معماری ، چیدمان ، تایپوگرافی و طراحی پاسخگو نه تنها چیزهای بزرگ کوچک را حل می کند ، بلکه به توسعه دهندگان ابزارهای مورد نیاز برای ایجاد رابط های پیچیده ای که روی انواع دستگاه ها ، عوامل شکل و کاربر کار می کنند ، به توسعه دهندگان می دهد. نیاز دارد.
این ویژگی های جدید شما باید بتوانید اسکریپت های شخص ثالث را برای ویژگی های عملکرد سنگین مانند Scrollytelling و عناصر اتصال به یکدیگر با موقعیت یابی لنگر ، ایجاد انتقال صفحه سیال ، در نهایت کشویی سبک و بهبود ساختار کلی کد خود به صورت بومی حذف کنید.
هرگز زمان بهتری برای توسعه دهنده وب نبوده است. از زمان اعلام CSS3 انرژی و هیجان زیادی به وجود نیامده است. ویژگی هایی که ما به آن نیاز داشتیم اما فقط در گذشته آرزو داشته ایم که در گذشته فرود بیایند ، سرانجام به واقعیت و بخشی از این سکو تبدیل می شوند. و به خاطر صدای شما است که ما قادر به اولویت بندی هستیم و در نهایت این قابلیت ها را به زندگی می آوریم. ما در تلاش هستیم تا انجام کارهای سخت و خسته کننده را به صورت بومی آسان تر کنیم تا بتوانید زمان بیشتری را برای ساختن چیزهایی که مهم هستند - مانند ویژگی های اصلی و جزئیات طراحی که برند شما را از هم جدا می کند ، صرف کنید.
برای کسب اطلاعات بیشتر در مورد این ویژگی های جدید هنگام فرود ، در Developer.Chrome.com و Web.Dev دنبال کنید ، جایی که تیم ما آخرین اخبار را در فناوری های وب به اشتراک می گذارد. انیمیشن های محور پیمایش ، مشاهده انتقال ، موقعیت یابی لنگر یا حتی انتخاب قابل انتخاب را امتحان کنید و به ما بگویید که چه فکر می کنید. ما اینجا هستیم تا گوش کنیم و برای کمک به اینجا هستیم.