Glass
<r-glass>APIتوکنهای سبکزمین بازیکد منبع
یک سطح شیشه سیال. یک material انتخاب کنید و شیشه آماده است: هرچه پشتش باشد را مات میکند، آن را در لبهای خمیده مثل یک عدسی خم میکند، رنگها را در لبه کمی از هم جدا میکند و لبه را روشن میکند. هر مقدار را میتوان جداگانه با اتریبیوتی همنام بازنویسی کرد. محتوا در اسلات پیشفرض مینشیند و رنگی میگیرد که روی شیشه خوانا باشد.
کجا به کار میآید: وقتی یک پنل روی محتوای پررنگ و غنی قرار میگیرد: یک کارت شاخص، یک نوار ابزار شناور، یک لایه روی رسانه. روی پسزمینه یکدست چیزی برای خمکردن نیست و جلوه از بین میرود.
زمین بازی
شیشه را بکشید، ماده و پسزمینه را عوض کنید و نشانهگذاری را کپی کنید. قطعه کد فقط چیزهایی را دارد که با ماده فرق میکنند.
<r-glass style="width:340px">
…
</r-glass><r-glass material="clear" backdrop>
<div class="panel">…</div>
</r-glass>مواد
چهار ماده بیشتر کاربردها را پوشش میدهند. regular پیشفرض است.
<r-glass material="thin">…</r-glass>
<r-glass>…regular…</r-glass>
<r-glass material="thick">…</r-glass>
<r-glass material="clear">…</r-glass>| ماده | blur |
saturate |
displace |
bevel |
dispersion |
specular |
|---|---|---|---|---|---|---|
thin |
8 | 160 | 12 | 20 | 20 | 80 |
regular |
16 | 180 | 18 | 28 | 25 | 100 |
thick |
28 | 200 | 22 | 32 | 25 | 100 |
clear |
2 | 130 | 28 | 40 | 40 | 120 |
روی یک تصویر
وقتی شیشه روی یک <img> یا <video> قرار دارد، backdrop را اضافه کنید. بدون مقدار، اولین تصویر یا ویدیوی والدِ شیشه را برمیدارد؛ یک سلکتور مورد دیگری را مشخص میکند. سپس شیشه پیکسلهای آن عنصر را با WebGL2 میخواند و هر طول موج را به اندازه خودش میشکند، در هر موتوری که WebGL2 دارد؛ در حالی که مسیر CSS فقط در Chromium نور را خم میکند. تصویر در صفحه باقی میماند، پس متن alt آن و محتوای اطرافش تغییری نمیکنند.
<div class="hero">
<img src="hero.jpg" alt="…" />
<r-glass material="clear" backdrop rim>…</r-glass>
</div>تصویری از مبدأ دیگر برای خواندهشدن به crossorigin و یک پاسخ CORS نیاز دارد؛ در غیر این صورت شیشه همان مات CSS خود را نگه میدارد.
تهرنگ و رنگ متن
tone میگوید پشت شیشه چه چیزی است. روی پسزمینه تیره یا رنگی، لبه روشن میشود و محتوا سفید است؛ روی پسزمینه روشن، لبه سفید دیده نمیشود، پس لبه سایه میخورد و محتوا تیره میشود. روی تصویر backdrop، تهرنگ از روشنایی ناحیه پوشیدهشده پیروی میکند، مگر اینکه خودتان آن را تنظیم کنید. تهرنگ فعلی به صورت :state(light) و :state(dark) در دسترس است و --ran-glass-ink رنگ محتوا را بازنویسی میکند.
r-glass:state(light) .badge {
border-color: rgb(0 0 0 / 0.2);
}تودرتویی
<r-glass> ترکیبپذیر است: یکی را داخل دیگری بگذارید تا مواد لایهلایه بسازید، مثل یک نوار ابزار شیشهای روی یک پنل شیشهای. هر لایه آنچه پشتش است را خم میکند.
<r-glass radius="28">
<div class="panel">
Outer panel
<r-glass material="thin" radius="16">
<div class="toolbar">Nested glass toolbar</div>
</r-glass>
</div>
</r-glass>مرجع API
ویژگیها
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
material |
string |
regular |
thin، regular، thick یا clear: همه مقادیر نوری زیر را یکجا تنظیم میکند. |
blur |
number |
از ماده | شعاع ماتشدن، بر حسب px. |
saturate |
number |
از ماده | اشباع رنگِ آنچه پشت شیشه است، به درصد. |
displace |
number |
از ماده | اینکه لبه پسزمینه را چقدر به داخل میکشد، بر حسب px. 0 یعنی یک شیشه صاف. |
bevel |
number |
از ماده | پهنای نوار خمیده لبه که نور را خم میکند، بر حسب px. |
dispersion |
number |
از ماده | اینکه رنگها در لبه چقدر از هم جدا میشوند، به درصدی از displace. |
specular |
number |
از ماده | شدت هایلایتها، به درصد. |
radius |
number |
20 |
شعاع گوشهها، بر حسب px. |
tint |
string |
از ماده | پرکننده روی لایه مات: هر مقدار background در CSS. |
tone |
string |
dark |
dark یا light: پشت شیشه چه چیزی است. اگر روی backdrop تنظیم نشود، از تصویر پیروی میکند. |
backdrop |
string |
— | یک <img> یا <video> را با WebGL2 میشکند. خالی، اولین مورد در والد را برمیدارد؛ یک سلکتور مورد دیگری را مشخص میکند. |
rim |
boolean |
false |
لبهای که با GPU نورپردازی میشود: دیواره بیرونی و درونی، نور اصلی و نور پرکننده، درخششها. فقط به شکل پنل بستگی دارد. |
sheen |
boolean |
false |
هایلایتی که روی سطح جارو میکشد. |
interactive |
boolean |
false |
بالا آمدن هنگام hover و بازخورد فشردن، برای شیشه قابل کلیک. میزبان را هم به دکمهای قابل استفاده با صفحهکلید تبدیل میکند: role="button"، یک توقف tab، و Enter و Space مثل کلیک عمل میکنند. |
شکست نور displace
displace تعیین میکند لبه چقدر آنچه پشت شیشه است را به سمت مرکز بکشد، به طوری که پسزمینه درست داخل لبه روی آن کشیده شود، همانطور که یک لبه محدب ضخیم بزرگنمایی میکند. bevel پهنای آن نوار خمیده را تعیین میکند. بیش از نصف bevel، لبه تصویر را روی خودش برمیگرداند، همان کاری که لبه یک شیشه ضخیم واقعی میکند.
<r-glass material="clear" displace="0">…flat…</r-glass> <r-glass material="clear" displace="40">…lensed edge…</r-glass>درخشش و تعامل
sheen یک هایلایت متحرک اضافه میکند؛ interactive بالا آمدن هنگام hover و فشردنی که بدون جهش به جای خود برمیگردد را اضافه میکند.
<r-glass sheen interactive>
<div>Hover & press me</div>
</r-glass>Rim — لبه بازتابی روی GPU (اختیاری)
rim لبه را روی GPU میکشد: یک دیواره بیرونی روشن و یک دیواره درونی کمرنگتر جایی که bevel به سطح صاف میرسد، روشنشده با یک نور اصلی از بالا چپ و یک نور پرکننده کمسو از پایین راست، با ضخامتی که در طول لبه تغییر میکند و درخششهای گاهبهگاه. با تهرنگ light، دیوارهها به جای روشن شدن سایه میخورند. هرگز از پسزمینه نمونه نمیگیرد: شیدر فقط اندازه، شعاع و bevel پنل را میداند. ابتدا با WebGL رندر میشود، اگر مرورگر WebGPU داشته باشد در پسزمینه به آن منتقل میشود، و اگر هیچکدام نباشد هایلایت CSS را دستنخورده میگذارد.
<r-glass>…CSS highlight…</r-glass> <r-glass rim>…GPU-lit edge…</r-glass>Partها و توکنهای CSS
بخشهای داخلی را با ::part(glass)، ::part(specular)، ::part(refraction) و، وقتی rim تنظیم شده، ::part(rim) استایل دهید، یا ویژگیهای سفارشی --ran-glass-* را بازنویسی کنید:
| توکن | کارکرد |
|---|---|
--ran-glass-ink |
رنگ محتوا. پیشفرض سفید، یا روی تهرنگ روشن نزدیک به سیاه. |
--ran-glass-tint |
پرکننده روی لایه مات. |
--ran-glass-border |
حاشیه لبه. |
--ran-glass-shadow |
پشته سایهها (بازتاب و عمق). |
--ran-glass-brightness |
روشنایی آنچه پشت شیشه است. |
--ran-glass-specular-background |
پسزمینه هایلایت CSS. |
--ran-glass-specular-opacity |
شدت هایلایت CSS؛ برای آن لایه جای specular را میگیرد. |
--ran-glass-reduced-transparency-background |
سطح جایگزین وقتی تنظیم سیستمی «کاهش شفافیت» روشن است. |
--ran-glass-reduced-transparency-shadow |
سایه جایگزین در همان حالت. |
r-glass {
--ran-glass-tint: linear-gradient(135deg, rgb(0 0 0 / 0.2), transparent);
}یادداشتها
- دو مسیر. بدون
backdrop،backdrop-filterصفحه زنده پشت شیشه را مات میکند، پس متن، ویدیو و کنترلهای پشت آن همچنان کار میکنند؛ لبه عدسیمانند با رنگهای جداشده یک فیلتر SVG است که در Chromium رندر میشود، و سافاری و فایرفاکس فقط مات را نگه میدارند. باbackdrop، WebGL2 همان یک تصویر یا ویدیو را در هر موتوری که WebGL2 دارد میشکند. - خوانایی. محتوا رنگ
--ran-glass-inkرا میگیرد. متن طولانی را به جای سپردن کنتراست به شیشه، روی یک سطح داخلی مات نگه دارید. - کاهش شفافیت. با تنظیم سیستمی «کاهش شفافیت» یا «افزایش کنتراست» (
prefers-reduced-transparency: reduce)، شیشه به یک سطح توپر و هماهنگ با پوسته (--ran-color-bg-elevated) تبدیل میشود، بدون ماتشدن، شکست نور یا هایلایت. - حرکت. این سطح فقط
transformرا ترنزیشن میدهد، پس تغییر پوسته در یک فریم تمام میشود. درخشش و فشردن ازprefers-reduced-motionپیروی میکنند. - هزینه. نقشه عدسی SVG وقتی اندازه، شعاع یا bevel پنل تغییر کند دوباره ساخته میشود. شکست نور WebGL تا وقتی شیشه دیده میشود، در هر فریم یک بار پنل و تصویر را بررسی میکند و فقط وقتی یکی از آنها جابهجا شده باشد رسم میکند.
زمین بازی