مرز ها

پادکست CSS - 016: Borders

در ماژول مدل جعبه ، ما یک قیاس فریم برای توصیف هر بخش از مدل جعبه در نظر گرفتیم.

سه قاب عکس کنار هم. قاب میانی دارای بخش هایی از مدل جعبه در بالای آن است

کادر حاشیه قاب جعبه‌های شما است و ویژگی‌های border مجموعه وسیعی از گزینه‌ها را در اختیار شما قرار می‌دهند تا آن فریم را تقریباً به هر سبکی که فکر می‌کنید ایجاد کنید.

خواص مرزی

ویژگی‌های border منفرد راهی برای استایل دادن به بخش‌های مختلف حاشیه فراهم می‌کنند.

پشتیبانی مرورگر

  • 1
  • 12
  • 1
  • 1

منبع

سبک

برای اینکه یک حاشیه ظاهر شود، باید border-style تعریف کنید. چند گزینه برای انتخاب وجود دارد:

هنگام استفاده از سبک های ridge ، inset ، outset و groove ، مرورگر رنگ حاشیه را برای دومین رنگ نشان داده شده تیره می کند تا کنتراست و عمق ارائه دهد. این رفتار می تواند بین مرورگرها متفاوت باشد، به خصوص برای رنگ های تیره مانند black . در کروم، این استایل‌های حاشیه به‌نظر می‌آیند جامد هستند و در فایرفاکس، روشن می‌شوند تا رنگ دوم تیره‌تر ارائه شود.

رفتار مرورگر می تواند برای سایر سبک های حاشیه نیز متفاوت باشد، بنابراین مهم است که سایت خود را در مرورگرهای مختلف آزمایش کنید. یک مثال رایج از این تفاوت این است که هر مرورگر چگونه استایل های dotted و dashed را ارائه می دهد.

نسخه ی نمایشی حاشیه در کروم، فایرفاکس و سافاری که تفاوت های ظریف در نحوه نمایش حاشیه ها را نشان می دهد
حاشیه ها در کروم، فایرفاکس و سافاری نمایش داده می شوند.

برای تنظیم سبک حاشیه در هر طرف کادر خود، می‌توانید از border-top-style ، border-right-style ، border-left-style و border-bottom-style استفاده کنید.

کوتاه نویسی

همانند margin و padding ، می‌توانید از ویژگی shorthand border برای تعریف تمام قسمت‌های حاشیه خود در یک اعلان استفاده کنید.

.my-element {
    border: 1px solid red;
}

ترتیب مقادیر در کوتاه‌نویسی border عبارتند از border-width ، border-style و سپس border-color .

رنگ

می توانید رنگ را در همه طرف جعبه خود یا در هر طرف جداگانه با border-color تنظیم کنید. به طور پیش فرض، از رنگ متن فعلی جعبه استفاده می کند: currentColor . این بدان معنی است که اگر فقط ویژگی های حاشیه مانند عرض را اعلام کنید، رنگ همان مقدار محاسبه شده خواهد بود مگر اینکه به صراحت آن را تنظیم کنید.

.my-element {
    color: blue;
    border: solid; /* Will be a blue border */
}

.my-element {
    color: blue;
    border: solid yellow;
}

برای تنظیم رنگ حاشیه در هر طرف کادر خود، از border-top-color ، border-right-color ، border-left-color و border-bottom-color استفاده کنید.

عرض

عرض یک حاشیه ضخامت خط است و با border-width کنترل می شود. عرض حاشیه پیش فرض medium ​​است. البته این قابل مشاهده نخواهد بود مگر اینکه یک سبک را تعریف کنید. می توانید از عرض های نامگذاری شده دیگر مانند thin و thick استفاده کنید.

ویژگی‌های border-width نیز یک واحد طول مانند px ، em ، rem یا % را می‌پذیرند. برای تنظیم عرض حاشیه در هر طرف کادر خود، از border-top-width ، border-right-width ، border-left-width و border-bottom-width استفاده کنید.

خواص منطقی

در ماژول Logical Properties شما نحوه ارجاع به جریان بلوک و جریان درون خطی را به جای صریح بالا، راست، پایین یا چپ کشف کردید.

شما این قابلیت را با حاشیه ها نیز دارید:

.my-element {
    border: 2px dotted;
    border-inline-end: 2px solid red;
}

در این مثال، .my-element دارای تمام اضلاع به عنوان دارای یک حاشیه نقطه‌دار 2px است که رنگ متن فعلی است. سپس مرز inline-end به صورت 2px ، جامد و قرمز تعریف می شود. این بدان معنی است که در زبان های چپ به راست - مانند انگلیسی - حاشیه قرمز در سمت راست کادر قرار خواهد گرفت. در زبان های راست به چپ - مانند عربی - حاشیه قرمز در سمت چپ کادر خواهد بود.

پشتیبانی مرورگر برای ویژگی های منطقی در حاشیه ها متفاوت است، بنابراین مطمئن شوید که قبل از استفاده، پشتیبانی را بررسی کنید.

شعاع مرزی

برای دادن گوشه های گرد به جعبه از ویژگی border-radius استفاده کنید.

.my-element {
    border-radius: 1em;
}

این مختصر یک حاشیه ثابت به هر گوشه جعبه شما اضافه می کند. مانند سایر ویژگی‌های حاشیه، می‌توانید شعاع مرزی را برای هر طرف با border-top-left-radius ، border-top-right-radius ، border-bottom-right-radius و border-bottom-left-radius تعریف کنید.

همچنین می‌توانید شعاع هر گوشه را در کوتاه‌نویسی مشخص کنید، که به ترتیب است: بالا سمت چپ، بالا سمت راست، پایین سمت راست و پایین سمت چپ.

.my-element {
    border-radius: 1em 2em 3em 4em;
}

با تعریف یک مقدار واحد برای یک گوشه، از کوتاه‌نویسی دیگری استفاده می‌کنید زیرا شعاع حاشیه به دو قسمت تقسیم می‌شود: ضلع عمودی و افقی. این بدان معناست که وقتی border-top-left-radius: 1em تنظیم می کنید، شعاع بالا-چپ- بالا و شعاع بالا-چپ- چپ را تنظیم می کنید.

شما می توانید هر دو ویژگی را در هر گوشه به صورت زیر تعریف کنید:

.my-element {
    border-top-left-radius: 1em 2em;
}

این یک مقدار border-top-left-top 1em و مقدار border-top-left-left 2em اضافه می کند. این شعاع حاشیه سمت چپ بالا را به شعاع بیضوی تبدیل می کند، نه شعاع دایره ای پیش فرض.

شما می توانید این مقادیر را در کوتاه نویسی border-radius ، با استفاده از / برای تعریف مقادیر بیضی، پس از مقادیر استاندارد، تعریف کنید. این به شما امکان می دهد خلاق باشید و برخی از اشکال پیچیده را بسازید.

.my-element {
    border: 2px solid;
  border-radius: 95px 155px 148px 103px / 48px 95px 130px 203px;
}

تصاویر حاشیه

شما فقط مجبور نیستید از یک حاشیه مبتنی بر stroke در CSS استفاده کنید. همچنین می توانید از هر نوع تصویری با استفاده از border-image استفاده کنید. این ویژگی کوتاه نویسی به شما امکان می دهد تصویر مبدأ، نحوه برش آن تصویر، عرض تصویر، میزان فاصله از حاشیه از لبه و نحوه تکرار آن را تنظیم کنید.

.my-element {
  border-image-source: url(https://assets.codepen.io/174183/border-image-frame.jpg);
  border-image-slice: 61 58 51 48;
  border-image-width: 20px 20px 20px 20px;
  border-image-outset: 0px 0px 0px 0px;
  border-image-repeat: stretch stretch;
}

ویژگی border-image-width مانند border-width است: نحوه تنظیم عرض تصویر حاشیه خود است. ویژگی border-image-outset به شما این امکان را می دهد که فاصله بین تصویر حاشیه خود و کادری را که دور آن می پیچد تعیین کنید.

border-image-source

border-image-source (منبع تصویر حاشیه) می تواند یک url برای هر تصویر معتبری باشد که شامل گرادیان های CSS است.

.my-element {
    border-image-source: url('path/to/image.png');
}

.my-element {
    border-image-source: linear-gradient(to bottom, #000, #fff);
}

border-image-slice

ویژگی border-image-slice یک ویژگی مفید است که به شما امکان می دهد یک تصویر را به 9 قسمت تقسیم کنید که از 4 خط تقسیم شده است. مانند خلاصه margin کار می کند که در آن مقدار افست بالا، راست، پایین و چپ را تعریف می کنید.

.my-element {
    border-image: url('image.jpg');
    border-image-slice: 61 58 51 48;
}

تصویر مورد استفاده در نسخه ی نمایشی با چهار برش نشان داده شده با خطوط آبی

با تعیین مقادیر افست، اکنون 9 بخش از تصویر دارید: 4 گوشه، 4 لبه و یک بخش میانی. گوشه ها به گوشه های عنصر با تصویر حاشیه اعمال می شوند. لبه ها به لبه های آن عنصر اعمال می شود. ویژگی border-image-repeat مشخص می کند که چگونه آن لبه ها فضای خود را پر می کنند و ویژگی border-image-width اندازه برش ها را کنترل می کند.

در نهایت، کلمه کلیدی fill تعیین می‌کند که آیا بخش میانی، باقی مانده از برش، به عنوان تصویر پس‌زمینه عنصر استفاده می‌شود یا خیر.

border-image-repeat

border-image-repeat این است که چگونه به CSS آموزش می دهید که دوست دارید تصویر حاشیه شما چگونه تکرار شود. مانند background-repeat عمل می کند.

  • مقدار اولیه stretch است که تصویر منبع را برای پر کردن فضای موجود در صورت امکان گسترش می‌دهد.
  • مقدار repeat لبه های تصویر مبدأ را تا آنجا که ممکن است کاشی می کند و ممکن است نواحی لبه را برای رسیدن به این هدف برش دهد.
  • مقدار round همان تکرار است، اما به جای بریدن نواحی لبه تصویر تا جایی که ممکن است، تصویر را کشیده و همچنین آن را تکرار می کند تا به تکرار یکپارچه دست یابد.
  • مقدار space دوباره همان تکرار است، اما این مقدار فاصله بین هر ناحیه لبه را برای ایجاد یک الگوی بدون درز اضافه می کند.

درک خود را بررسی کنید

دانش خود را از مرزها تست کنید

رنگ حاشیه پیش فرض کدام است؟

black
دوباره امتحان کنید!
white
دوباره امتحان کنید!
currentColor
این مقدار ویژه CSS نشان دهنده مقدار text-color محاسبه شده است و رنگ حاشیه پیش فرض است.
historicColor
این ساخته شده است. دوباره امتحان کنید!
.my-element {
  border: solid hotpink;
}

عرض پیش فرض یک حاشیه چقدر است؟

1px
دوباره امتحان کنید!
medium
🎉
solid
این یک مقدار border-style است، نه یک مقدار border-width .

border-inline: 1px solid ...

حاشیه ها را در سمت چپ و راست قرار دهید (در طرح های لاتین).
🎉
حاشیه ها را در بالا و پایین قرار دهید (در طرح های لاتین).
در یک طرح لاتین مانند انگلیسی، border-block بالا و پایین خواهد بود.
حاشیه ها را در داخل قرار دهید
دوباره امتحان کنید!
مرزها را در خط اول قرار دهید.
دوباره امتحان کنید!