محتوای بافت بصری

ویژگی‌های وب: ماسک‌ها

نمای کلی

برای اعمال الگوهای بافت یا هوازدگی واقع‌گرایانه (مانند گرانج، نوفه، یا بافت کاغذی) به یک عنصر، از «پوشاندن CSS» (mask-image) با تصویر بافت تکرارشونده استفاده کنید. این گزینه به شما امکان می‌دهد با نیمه‌شفاف کردن بخش‌هایی از محتوا، به‌جای اینکه فقط بافتی را روی آن قرار دهید، خود محتوا را بافت‌دار نشان دهید. این کار باعث می‌شود ظاهر فیزیکی مواد واقعی‌تر به‌نظر برسد.

پیاده‌سازی

برای اعمال کردن الگوی بافت:

این رایج‌ترین روش برای بافت‌های واقع‌گرایانه است.

.weathered-element {
  /* MANDATORY: Use vendor prefix for wider support in older browsers */
  -webkit-mask-image: url('grunge-pattern.png');
  -webkit-mask-repeat: repeat; /* Repeat the pattern to fill the area */
  -webkit-mask-size: 300px; /* Control the scale of the texture */

  /* Standard property for modern browsers */
  mask-image: url('grunge-pattern.png');
  mask-repeat: repeat;
  mask-size: 300px;
}

روش ۲: استفاده از گرادیان‌های CSS برای الگوهای هندسی

می‌توانید بااستفاده از گرادیان‌های CSS الگو تولید کنید. این فایل مستقل است و به فایل‌های تصویری خارجی نیاز ندارد.

.patterned-element {
  --checkerboard-gradient: 
    linear-gradient(45deg, #000 25%, transparent 25%), 
    linear-gradient(-45deg, #000 25%, transparent 25%), 
    linear-gradient(45deg, transparent 75%, #000 75%), 
    linear-gradient(-45deg, transparent 75%, #000 75%);

  /* Apply a checkerboard pattern as a mask */
  -webkit-mask-image: var(--checkerboard-gradient);
  -webkit-mask-size: 20px 20px;
  -webkit-mask-position: 0 0, 0 10px, 10px -10px, -10px 0px;
  
  mask-image: var(--checkerboard-gradient);
  mask-size: 20px 20px;
  mask-position: 0 0, 0 10px, 10px -10px, -10px 0px;
}

حالت‌های پوشاندن آلفا درمقابل درخشندگی

به‌طور پیش‌فرض، ماسک‌های CSS از mask-mode: match-source استفاده می‌کنند. این یعنی مرورگر به‌طور خودکار تصمیم می‌گیرد که از کانال آلفا (شفافیت) یا درخشندگی (روشنایی) ماسک براساس نوع منبعی که ارائه می‌دهید استفاده کند:

نوع منبع ماسک حالت ماسک پیش‌فرض رفتار پوشاندن
عنصر <mask> SVG درون‌خطی luminance ماتی با روشنایی رنگ‌ها تعیین می‌شود. سفید محتوا را آشکار می‌کند، سیاه آن را پنهان می‌کند، و خاکستری نیمه‌شفافیت ایجاد می‌کند.
فایل تصویری مستقیم (مثلاً فایل PNG،‏ SVG) alpha ماتی با شفافیت تعیین می‌شود. بخش‌های مات محتوا را آشکار می‌کنند و بخش‌های شفاف آن را پنهان می‌کنند.
CSS Gradient alpha ماتی با شفافیت تعیین می‌شود. رنگ‌های مات (مانند black) محتوا را آشکار می‌کنند و رنگ‌های شفاف آن را پنهان می‌کنند.

راهبردهای جایگزین

اگر مرورگری از mask-image یا نسخه پیشوندی پشتیبانی نکند:

  • عنصر بدون بافت (پرشده با رنگ یکدست و تمیز) نمایش داده خواهد شد.
  • مطمئن شوید که محتوا بدون بافت همچنان خوانا باشد (ارتقای پیش‌رو).
  • می‌توانید از تصویر پس‌زمینه یا هم‌پوشانی به‌عنوان جایگزین برای شبیه‌سازی بافت استفاده کنید، هرچند این کار بر شفافیت خود محتوا تأثیری نخواهد داشت.
/* Fallback: Use a background image for browsers without mask support */
@supports (not (mask-image: url(x))) and (not (-webkit-mask-image: url(x))) {
  .weathered-element {
    /* Fallback adds texture on top or behind, depending on implementation */
    background-image: url('grunge-pattern.svg');
    background-color: #fff; /* Ensure background is solid if needed */
  }
}