text-align

با استفاده از ویژگی text-align می توان تصمیم گرفت که چیدمان محتوای خطی (مثل متن یا تصویر) داخل یک عنصر بلاک به چه صورت باشد.

همانطور که در نرم افزارهای ویرایش متن مثل ورد می توان بر روی چیدمان نوشته کنترل داشت در سی اس اس نیز این امکان وجود دارد که با مقادیری مثل left، right، center و یا justify عناصر خطی را تراز کنیم.

تنظیم متن در ویرایشگر متن

به عنوان مثال در دموی زیر متن بصورت وسط چین می باشد و این کار توسط ویژگی text-align و مقدار center انجام شده است:

 


p {
  text-align: center;  
}

 

See the Pen text-align by Mojtaba Seyedi (@seyedi) on CodePen.


 

هرچند که نام ویژگی به متن اشاره دارد اما این ویژگی بر روی عناصر inline و inline-block تاثیر می گذارد.

text-align فقط بر روی محتوای عنصر تاثیر می گذارد و نه خود عنصر. مثلا برای وسط آوردن خود عنصر می توان از ویژگی margin استفاده کرد.

مقدار ویژگی text-align بر روی فرزندان عنصر نیز تاثیر خواهد گذاشت و محتوای فرزندانی که از نوع بلاک هستند نیز تحت تاثیر مقدار text-align پدرانشان قرار خواهد گرفت.

 

مقادیر text-align

تمام مقادیری که این ویژگی می تواند داشته باشد به شرح زیر هستند:

 


text-align: start | end | left | right | center | justify | match-parent 

 

تصویر زیر چهار مقدار اصلی این ویژگی را وصف می کند:

text-align

نکته مهم در مورد ویژگی text-align این است که این ویژگی مستقیما با direction یا همان جهت عنصر در ارتباط است. یعنی رفتار پیشفرض عنصر وابسته به جهت آن می باشد و می توان این رفتار را با استفاده از ویژگی text-align تغییر داد.

 

left

محتوای خطی عنصر با لبه سمت چپ آن تراز می شود.

 

محتوای خطی عنصر با لبه سمت راست آن تراز می شود.

 

start

اگر جهت عنصر rtl (راست به چپ) باشد، رفتار این مقدار با right یکسان خواهد بود. و اگر جهت عنصر ltr باشد رفتارش مشابه رفتار مقدار left می شود.

 

end

اگر جهت عنصر rtl (راست به چپ) باشد، رفتار این مقدار با left یکسان خواهد بود. و اگر جهت عنصر ltr باشد رفتارش مشابه رفتار مقدار right می شود.

 

center

عناصر خطی عنصر در جهت افق وسط چین خواهند شد و در مرکز قرار می گیرند.

 

justify

این مقدار باعث می شود تا برای تمام خطوط به جز خط آخر هرچه فضای خالی بین لبه سمت راست و چپ عنصر وجود دارد طوری بین کلمات توزیع شود تا محتوا سراسر خط را از لبه سمت راست تا چپ پر کند.

 

inherit

این مقدار باعث می شود تا text-align پدر عنصر هر مقداری داشته باشد به عنصر به ارث برسد اما در نهایت برای مقادیری مثل start و end که از پدر به ارث می رسد با توجه به جهت خودش تصمیم می گیرد.

 


.dad {
  direction: rtl;
  text-align: end; /* == left */
}

.dad p {
  direction: ltr;
  text-align: inherit; /* == end ==> right */
}

 

 

match-parent

این مقدار شبیه به inherit عمل می کند با این تفاوت که اگر مقدار پدر start یا end باشد text-align عنصر به جای اینکه بر مبنای جهت خودش محاسبه شود با توجه به جهت عنصر پدرش محاسبه می شود.

همان مثال بالا را برای این مقدار می نویسیم:

 


.dad {
  direction: rtl;
  text-align: end;          /* == left */
}

.dad p {
  direction: ltr;
  text-align: inherit;      /* == end ==> right */ /* محاسبه شده با توجه به جهت خود عنصر */
  text-align: match-parent; /* == end ==> left */  /* محاسبه شده با توجه به جهت پدر عنصر */
}

 

برای تست این مقدار فعلا به مرورگر فایرفاکس پناه ببرید :)

 

initial

گاهی نیاز داریم تا مقدار text-align را ریست کنیم و به مقدار اولیه آن بازگردانی کنیم. مثلا نمی خواهیم تا عنصر رفتار پدرش را داشته باشد یا اینکه مقدار قبلی که به خود عنصر در جای دیگری از کد داده شده است را باز نویسی کنیم.

برای این کار می توان از مقدار initial استفاده کرد اما باید توجه داشته باشیم که در مرورگر IE این مقدار پشتیبانی نمی شود.

 


.dad {
  text-align: center;
}

.dad p {
  /* text-align: center */
  text-align: initial; /* با توجه به جهت عنصر عمل می کند */
}

 

 

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

مقادیر پایه ای این ویژگی در تمام مرورگرها پشتیبانی می شود. اما مقدار start و end و همینطور initial در مرورگرهای اینترنت اکسپلورر و اپراهای قدیمی کار نمی کنند.

همینطور مقدار match-parent فعلا در فایرفاکس فقط پشتیبانی می شود.

توجه داشته باشید که مقادیر start، end و match-parent فعلا مقادیر آزمایشی هستند.

6 دیدگاه برای “text-align

  1. توی این مثال خوب چه کارییه چرا همون اول تکس دومی ننویسم 0_o

    
    .dad p {
      direction: ltr;
      text-align: inherit;      
      text-align: match-parent;  
    }
    
    

    و فرق

    
    direction: ltr;
    text-align: start;
    
    direction: rtl;
    text-align: end;
    direction: rtl;
    text-align: left;
    
    

    اینا سه تایی یکی شدند .چه قاطی شد :/

    1. روشهای مختلفی برای انجام یک کار وجود دارد که در برخی موارد کاملا یکسان هستند
      اما تفاوت استفاده از left و end یا start در این است که end یا start مقادیری نسبی هستند بنابراین به محض تغییر direction جهت آنها تغییر میکند اما left همواره ثابت است.
      از طرفی وقتی
      direction: ltr
      text-align: start
      خود عناصر اصلی که دارای این ویژگی هستند چپ‎چین می شوند و متن یا عناصر block فرزند آن هم در سمت چپ (سمت شروع) قرار می‎گیرند اما در حالت
      direction: rtl
      text-align: end
      خود عناصر اصلی راست‎چین می شوند اما فقط متن یا عناصر block فرزند آن در سمت راست(سمت پایان) قرار می‎گیرند.
      بنابراین هرکسی که سیبیل دارد گردو نیست D;

  2. سلام آقای سیدی خسته نباشید ببخشید یک سوال ازتون داشتم ویژگی text-align با direction چه تفاوتی داره؟؟؟ هر دو برای تراز متن هستن منتها text-align مقادیر بیشتری داره؟

    1. سلام، وقت شما هم بخیر
      این ویژگی تاثیرش زمانی هست که “محتوای داخل عنصر” از نوع inline باشند.
      در مورد تصویر، محتوایی داخل این عنصر وجود نداره.
      اگر میخواین تاثیرش رو ببینید باید برای عنصر img یک عنصر پدر قرار بدید، مثلا یک div، و حالا این ویژگی رو به پدر بدید.
      که در اینجا چون “محتوای داخل div” از نوع inline هست، این اتفاق خواهد افتاد.

      موفق باشید.

سوال داری؟ برو به پنل پرسش و پاسخ

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