PDA

View Full Version : سوال: نشانگر imoprtant ! چیست؟



imanasp
چهارشنبه 09 تیر 1389, 15:36 عصر
سلام
کاربرد imoprtant ! توی قسمت value المنتهای css چیه؟
مثل این


div {background:green ! important;}

eshpilen
چهارشنبه 09 تیر 1389, 21:06 عصر
برای من و شما زیاد مهم نیست بنظرم اما اگر میخوای بدونی اینو از رفرنس css 2.1 درآوردم:

6.4.2 !important rules
CSS attempts to create a balance of power between author and user style sheets.
By default, rules in an author’s style sheet override those in a user’s style sheet (see
cascade rule 3).
However, for balance, an "!important" declaration (the delimiter token "!" and
keyword "important" follow the declaration) takes precedence over a normal declaration.
Both author and user style sheets may contain "!important" declarations, and
user "!important" rules override author "!important" rules. This CSS feature improves
91 8 Jun 2005 12:51
Assigning property values, Cascading, and Inheritance
accessibility of documents by giving users with special requirements (large fonts,
color combinations, etc.) control over presentation.
Declaring a shorthand property (e.g., ’background’) to be "!important" is equivalent
to declaring all of its sub-properties to be "!important".
Example(s):
The first rule in the user’s style sheet in the following example contains an "!important"
declaration, which overrides the corresponding declaration in the author’s style
sheet. The second declaration will also win due to being marked "!important".
However, the third rule in the user’s style sheet is not "!important" and will therefore
lose to the second rule in the author’s style sheet (which happens to set style on a
shorthand property). Also, the third author rule will lose to the second author rule
since the second rule is "!important". This shows that "!important" declarations have
a function also within author style sheets.
/* From the user’s style sheet */
p { text-indent: 1em ! important }
p { font-style: italic ! important }
p { font-size: 18pt }
/* From the author’s style sheet */
p { text-indent: 1.5em !important }
p { font: normal 12pt sans-serif !important }
p { font-size: 24pt }

emad_67
پنج شنبه 10 تیر 1389, 20:11 عصر
کاربرد imoprtant ! توی قسمت value المنتهای css چیه؟important مشخص می کنه که خصوصیت مورد نظر اولویت بیشتری نسبت به خصوصیت همنامش داره.
مثلا اگه همچین چیزی داشته باشیم:

div {background-color: green ! important;
background-color: red;
}رنگ سبز اولیت داره نسبت به قرمز. اما بیشتر به عنوان css hack استفاده میشه. مثلا یه نمونه رو در اینجا توضیح دادم:
http://barnamenevis.org/forum/showthread.php?t=128462

Vahid Faraji
جمعه 11 تیر 1389, 00:14 صبح
به صورت پیش فرض در CSS، قوانینی که در آخر تعریف می گردند نسبت به قبلی ها اولویت دارند. با این وجود اگر شما پس از یک دستور از !important استفاده کنید، این دستور اولیت خواهد داشت بدون در نظر گرفتن این که پس از آن چه خواهد آمد.


p {
color: blue;
}
p{
color: red
}


الان رنگ متن پاراگراف ها قرمز نمایش داده میشه چون رنگ قرمز تو دستور دوم که پایین تر قرار گرفته، تعیین شده. حالا اگر جلوی اولی که رنگ آبی رو مشخص کرده، important! بذارید، متن پاراگراف ها آبی میشه چون با دستور important! ارجحیت دستور اول بیشتر میشه.

eshpilen
جمعه 11 تیر 1389, 20:02 عصر
البته این موردی که دوستان گفتن درسته و در همون متنی که درج کردم در آخرش بهش اشاره شده، اما بنظرم هدف اصلی از !important همونی بوده که از رفرنس رسمی css 2.1 نقل کردم. خب قضیه چیه! قضیه اینه که در استاندارد css پیشبینی شده که کاربران بتونن خودشون استایل هایی رو تهیه و تعیین بکنن تا بر استایل هایی که طراحان صفحات (یا حتی کاربردهای دیگری که از استاندارد css استفاده میشه) اولویت داشته باشن. فرض کنید مثلا یک کاربری چشمش خیلی ضعیف هست. این کاربر میاد و یک استایل درست میکنه که توش رنگ بکگراند صفحه سیاه باشه و نوشته ها سفید و سایز فوتها هم بزرگ و Bold باشن! بعد این استایل رو توی تنظیمات مرورگر بعنوان استایل اجباری کاربر معرفی میکنه (البته اگر مرورگر چنین امکانی رو داشته باشه). در نتیجه کاربر میتونه تمام سایتها رو بدون توجه به استایلی که طراح سایت درنظر گرفته، با فرمت مورد نظر خودش ببینه.
اما دستور !important به مرورگر میگه که این استایل مهم هست و حتی اگر کاربر تعیین کرده بود که استایل دیگری باشه، از همین استایل استفاده کن. البته کاربر میتونه با تعیین !important در استایل خودش، بازهم به استایل خودش اولویت بده. یعنی !important کاربر بر !important طراح اولویت داره (که البته این با ترتیب اعمال و روش ترکیب استایل ها هم مطابقت میکنه).
پس بنظرم احتمالا کاربرد !important در مواقعی هست که میدونیم یک استایل خاص برای نمایش درست صفحه اساسی هست و اگر حذف یا override بشه صفحه خراب میشه و قابل استفاده هم نیست دیگه. در این موارد استایل کلی کاربر درمواردی که استایل طراح !important نیستن اعمال میشه و در مواردی که توسط طراح بعنوان !important معرفی شدن اعمال نمیشه. حالا اگر کاربر دید که استایل !important طراح مناسب نیست یا خواست حالت دیگری رو تست کنه میتونه استایل خودش رو هم !important معرفی کنه.

صد البته این دستور میتونه کاربردهای دیگری هم پیدا کرده باشه که دوستان بهشون اشاره کردن (کاربرد در css hack).
اصولا کاربرد اصلی خودش بنظرم خیلی کم هست و ضمنا نمیدونم فرضا چه مرورگرهایی استایل کاربر رو پشتیبانی میکنن. واسه همین گفتم این دستور برای من و شما زیاد مهم نیست (یعنی طبق کاربرد و هدف معرفی شده توسط رفرنس رسمی و نه کاربردهای جانبی و بعدا کشف و ابداع شده).

mohsen_Iran
جمعه 11 تیر 1389, 21:50 عصر
سلام
کاربردی که eshpilen نام بردند به نظر من هم درست است ولی این کاربرد در سایت هایی که کاربر می تونه تو تنظیمات کاربریش تغییرات ایجاد کنه و استایل بده استفاده میشه مثل سایت های که با ning ساخته می شوند کاربران هر شبکه می تونند صفحه خودشونو قالب بندی کنند من در این سایت دیدم که برای قالب های هر کاربر برای اولیت دادن به آنها از همین دستور استفاده میشود و حتما نباید توسط مرورگر باشد!