برنامه نویسی

100% CSS: رفتار حذفی مرزی برای هر عنصر!

افسانه می گوید، روزی می رسد که افکت حذفی مرز زیبا مجموعه فیلدست با هر عنصر html امکان پذیر خواهد بود.

و من یک خبر عالی دارم: در کروم، آن روز امروز است!

مجموعه فیلد؟ افسانه؟

اگر آشنا نیستید، در اینجا افکت حذفی مرز در مجموعه فیلد با یک افسانه آمده است:

تصویری از دو عنصر مجموعه فیلد ساده با افسانه آنها (عنوان) که یک شکاف به عرض متن خود در مرز مجموعه فیلد ایجاد می کنند.نمونه‌های افسانه مجموعه فیلد در یک اسکرین شات کمی تغییر یافته از VanillaHTML

عرض از legend (عنوان) بریدن یک سوراخ در مرز fieldset به صورت خودکار

در حالی که از نظر فنی فقط استفاده از آن امکان پذیر است

و

در هر جایی، معمولاً استفاده از a توصیه نمی شود

خارج از a and without any عناصر داخل آن، به عنوان هدف اصلی یک مجموعه فیلد است گروه بندی معنایی ورودی های فرم مرتبط. استفاده از آن در زمینه‌های نامرتبط بر خلاف معنای مورد نظر آن است و می‌تواند بر دسترسی به صفحه‌خوان‌ها تأثیر منفی بگذارد.

رفتار حذفی افسانه مرزی فیلدست در هر کجا

انجام این کار بی‌اهمیت نیست، بنابراین من هر ذره از پیچیدگی‌هایی را که می‌توانستم پنهان کردم تا آن را تا حدی پیش پاافتاده کنم که تکرار شود:

  1. @import ابزار fieldset-legend در css شما.
  2. را اضافه کنید fieldset-legend کلاس به لفاف
  3. را تنظیم کنید --fl-left دارایی به هر ارزش (حتی مقادیر منفی در صورت تمایل)

و کتابخانه محل قرار خواهد داد :first-child بنابراین به صورت عمودی در مرکز بالای عنصر قرار می گیرد و چیزهای پشت آن را حذف می کند!

برای ایجاد شکاف در اطراف عنوان، padding را به عنوان اضافه کنید :first-child هر طور که شما بخواهید

بزرگترین مشکل در اینجا این است که شما نمی توانید گره های متن ساده را مستقیماً در آن قرار دهید fieldset-legend لفاف، متن باید درون عناصر خودش تودرتو باشد.

همچنین، از نظر فنی fieldsetناک اوت مرزی اینطور نیست غرق شدن به پایین legend المان کنید و پس‌زمینه را نیز مانند آنچه در بالا انجام می‌دهد، کلیپ کنید.

اگر ناک اوت را به تنها ترجیح می دهید غرق شدن از طریق مرز، می توانید یک مورد اضافی ارائه دهید اموال، --fl-sink و آن را برابر با عرض حاشیه خود قرار دهید:

آیا کار دیگری انجام می دهد؟

این کار را انجام می دهد!

--fl-left جایگزین ها

به جای --fl-left، می توانید در عوض استفاده کنید --fl-center.
اگر تنظیم کنید --fl-center به 0px، عنوان به صورت افقی در امتداد لبه بالایی قرار می گیرد.
اگر آن را تنظیم کنید -10px، به سمت چپ وسط توسط آفست می شود 10px.
آن را تنظیم کنید 15px و به سمت راست از مرکز به سمت راست تغییر می کند 15px.

به جای --fl-left یا --fl-center، همچنین می توانید استفاده کنید --fl-right با رفتار مورد انتظار

هر 3 تای اینها هستند و می تواند مثبت، 0 پیکسل یا منفی باشد.

عنوان به عنوان :first-child جایگزین ها

ممکن است برای شما مهم باشد که عناصر دیگری مانند پرش های صفحه فقط برای صفحه خوان را قبل از عنوان در داخل صفحه قرار دهید. fieldset-legend ظرف

یک کلاس بگذارید fieldset-legend-title بر روی هر یک از فرزندان مستقیم شما fieldset-legend عنصر و کتابخانه آن عنصر را به همان موقعیت دلخواه در بالا می برد و ترک می کند :first-child به تنهایی

fieldset-legend استفاده می کند ::before شبه

می توانید از آن استفاده کنید ::after شبه در عوض، فقط نام کلاس را تغییر دهید fieldset-legend به fieldset-legend-after

fieldset-legend شبه نیست؟

این استفاده پیشرفته است اما …

شما می توانید inset: 0px; یک عنصر در داخل لفاف، آن را هر طور که می خواهید سفارشی کنید و استفاده کنید fieldset-legend-custom به جای fieldset-legend یا fieldset-legend-after.

این کار تمام بریده های کتابخانه را حذف می کند و یک سفارشی به شما می دهد mask برای استفاده در هر نقطه از داخل fieldset-legend-custom عنصر

به عنوان مثال، اگر می‌خواهید از آن با کتابخانه شکل‌دهی علمی تخیلی مورد علاقه خود استفاده کنید، augmented-ui:

رفتار برگشتی

پشتیبانی از ویژگی محدود مورد نیاز برای استفاده از این ابزار است timeline-scope.

پرسش‌های مربوط به سبک کانتینر نیز مورد نیاز است.

اولین نسخه نمایشی این مقاله در مرورگرهای غیر کروم به این صورت است:

تصویری از رفتار بازگشتی همانطور که در زیر توضیح داده شده است

برای به حداقل رساندن تفاوت‌ها از همان استایل مکانیکی استفاده می‌کند، مانند موقعیت غیراستاتیک و isolation: isolate; اما مهم‌تر از همه، آن عنوان را به عقب می‌برد و دو کار را انجام می‌دهد !important چیزها:

  1. عنوان color تبدیل می شود currentColor – محتوای پشت عنوان از بدنه به داخل شما تغییر می کند fieldset-legend ظرفی که ممکن است زمینه بسیار متفاوتی داشته باشد. با استفاده از currentColor اطمینان حاصل می کند که محتوا خوانا است زیرا بقیه محتوای موجود در مجموعه بدون فیلد شما احتمالاً قبلاً به درستی تنظیم شده است.
  2. در همین راستا، نمی‌توانم بدانم که آیا عنصر عنوان شما قبلاً پس‌زمینه خاص خود را داشته است یا نه (البته اگر چنین بود، برای قرار دادن آن بر روی مرز نیازی به این ابزار ندارید) بنابراین پس‌زمینه مجبور می‌شود transparent، تضمین می کند currentColor بر روی fieldset-legendپس زمینه، که در اکثر موارد از قبل قابل خواندن خواهد بود.

برای تعیین رفتار بازگشتی خاص، می توانید تنظیم کنید
--fl-fallback-title-color و --fl-fallback-title-background که به جای استفاده خواهد شد currentColor یا transparent در صورتی که در جایی بدون پشتیبانی ارائه شود.

و این همان چیزی است که نسخه ی نمایشی سفارشی بالا در مرورگرهایی که پشتیبانی نمی کنند به نظر می رسد fieldset-legend:

تصویری از رفتارهای بازگشتی همانطور که در بالا توضیح داده شد

پشتیبانی مجدد بیشتر

اگر می دانید چگونه از تکنیک قدیمی Space Toggle من استفاده کنید، این کتابخانه همچنین ارائه می دهد:

--fl-supported، که در صورت پشتیبانی و initial زمانی که پشتیبانی نمی شود

و

--fl-not-supported، که برعکس است.


تماس 👽 را باز کنید

لطفاً اگر برای هر یک از این موارد به کمک نیاز دارید، درخواست ویژگی دارید یا می خواهید آنچه ایجاد کرده اید به اشتراک بگذارید، تماس بگیرید!

🦋@JaneOri.PropJockey.io

𝕏@Jane0ri

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا