پرش به مطلب اصلی

Logical Properties

مسئله

اگه قبلاً پروژه‌ای داشتید که باید هم‌زمان از فارسی و انگلیسی پشتیبانی میکردید، حتماً متوجه شدید که باید استایل‌هایی که به راست یا چپ مربوط میشن رو تغییر می‌دادید. مثلاً اگه تو نسخه‌ی انگلیسی از margin-left استفاده کردید، تو نسخه‌ی فارسی باید به margin-right تغییرش می‌دادید.

طبیعتاً این کار خیلی طاقت‌فرساست و احتمال بروز اشتباه انسانی توش زیاده.

راه‌حل

خوشبختانه تو CSS میشه از Logical Properties برای حل این مشکل استفاده کرد؛ به این ترتیب، مرورگر طبق Direction سایت استایل‌ها رو اعمال میکنه.

به‌عنوان مثال، معادل چند Property پُر استفاده اینجا آورده شده.

Margin

Logical PropertyLTR PropertyRTL Property
margin-block-startmargin-topmargin-top
margin-block-endmargin-bottommargin-bottom
margin-inline-startmargin-leftmargin-right
margin-inline-endmargin-rightmargin-left

Padding

Logical PropertyLTR PropertyRTL Property
padding-block-startpadding-toppadding-top
padding-block-endpadding-bottompadding-bottom
padding-inline-startpadding-leftpadding-right
padding-inline-endpadding-rightpadding-left

Size

Logical PropertyLTR PropertyRTL Property
block-sizeheightheight
min-block-sizemin-heightmin-height
max-block-sizemax-heightmax-height
inline-sizewidthwidth
min-inline-sizemin-widthmin-width
max-inline-sizemax-widthmax-width

Position

Logical PropertyLTR PropertyRTL Property
inset-block-starttoptop
inset-block-endbottombottom
inset-inline-startleftright
inset-inline-endrightleft

Shorthands

همچنین میتونید دو Logical Property که هر دو Inline یا Block هستن رو همزمان مقداردهی کنید. برای روشن‌تر شدن موضوع، سه کد معادل زیر رو در نظر بگیرید:

.item {
padding-top: 1rem;
padding-bottom: 1rem;
}

/* or */

.item {
padding-block-start: 1rem;
padding-block-end: 1rem;
}

/* or */

.item {
padding-block: 1rem;
}

بیشتر بدانیم: