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

افسانه می گوید، روزی می رسد که افکت حذفی مرز زیبا مجموعه فیلدست با هر عنصر html امکان پذیر خواهد بود.
و من یک خبر عالی دارم: در کروم، آن روز امروز است!
مجموعه فیلد؟ افسانه؟
اگر آشنا نیستید، در اینجا افکت حذفی مرز در مجموعه فیلد با یک افسانه آمده است:
نمونههای افسانه مجموعه فیلد در یک اسکرین شات کمی تغییر یافته از VanillaHTML
عرض از legend
(عنوان) بریدن یک سوراخ در مرز fieldset
به صورت خودکار
در حالی که از نظر فنی فقط استفاده از آن امکان پذیر است
در هر جایی، معمولاً استفاده از a توصیه نمی شود
خارج از a
and without any
عناصر داخل آن، به عنوان هدف اصلی یک مجموعه فیلد است گروه بندی معنایی ورودی های فرم مرتبط. استفاده از آن در زمینههای نامرتبط بر خلاف معنای مورد نظر آن است و میتواند بر دسترسی به صفحهخوانها تأثیر منفی بگذارد.
رفتار حذفی افسانه مرزی فیلدست در هر کجا
انجام این کار بیاهمیت نیست، بنابراین من هر ذره از پیچیدگیهایی را که میتوانستم پنهان کردم تا آن را تا حدی پیش پاافتاده کنم که تکرار شود:
-
@import
ابزار fieldset-legend در css شما. - را اضافه کنید
fieldset-legend
کلاس به لفاف - را تنظیم کنید
--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
چیزها:
- عنوان
color
تبدیل می شودcurrentColor
– محتوای پشت عنوان از بدنه به داخل شما تغییر می کندfieldset-legend
ظرفی که ممکن است زمینه بسیار متفاوتی داشته باشد. با استفاده ازcurrentColor
اطمینان حاصل می کند که محتوا خوانا است زیرا بقیه محتوای موجود در مجموعه بدون فیلد شما احتمالاً قبلاً به درستی تنظیم شده است. - در همین راستا، نمیتوانم بدانم که آیا عنصر عنوان شما قبلاً پسزمینه خاص خود را داشته است یا نه (البته اگر چنین بود، برای قرار دادن آن بر روی مرز نیازی به این ابزار ندارید) بنابراین پسزمینه مجبور میشود
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