دعوا نکنین!
تو می تونی همون PNG رو هم استفاده بکنی و مشکل IE رو هم حل کنی!
اگر زمینه پشت عکست یک رنگه که من هم پیشنهاد می کنم GiF استفاده کنی
اما اگر نقش داری از PNG استفاده کن.
اما چه جوری میشه مشکل IE رو حل کرد؟
اینجوری:
این رو ببین، من برای وب سایت خودم و برای عنوان اون از یک فایل PNG استفاده کردم.
البته اون رو به صورت عکس توی متن وب سایت نگذاشتم.
بلکه به عنوان Background یک DIV در آوردم.
یعنی چی؟
1) یعنی اینکه یک DIV به اندازه ( سایز ) عکسم درست کردم.
2) توی اون DIV هیچ محتوایی نگذاشتم
3) پشت زمینه ( Background ) اون رو با یک فایل PNG پر کردم.
خوب، حالا بیایم کد رو ببینیم:
این کد XHTML داخل صفحه هست. حالا بریم سر CSS اون:
HTML:
#logo {
background-image: url(../images/ravelandlogo.png);
background-repeat: no-repeat;
width: 583px;
height: 78px;
}
همون طور که می بینی در CSS من تعریف کردم که اولاً سایز اون DIV باید به مقدار عکس PNG من باشه. ضمناً تصویر PNG رو به عنوان پس زمینه انتخاب کردم. تا اینجاش همه چیز خوبه. توی FireFox ، Opera یا مرورگرهای جدید دیگه که نگاه کنی هیچ مشکلی نیست. اما اگر توی IE نسخه 6 به پایین نگاه کنی همون مشکل پس زمینه طوسی ( یا بنفش ) هست.
حالا این مشکل رو چطور حل کنیم؟
دوباره میریم سر CSS و این کد رو هم وارد می کنیم:
HTML:
/* IE Fix */
* html #logo {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="images/ravelandlogo.png", sizingMethod="crop");
}
خوب اگر امتحان کنی می بینی که مشکل Internet Explorer هم حل شده و تصویر PNG به زیبایی و با سایه پشتش دیده میشه.
حالا بریم سراق ( با غ هست یا ق ؟ ) توضیح کد FIX :
1) اولین کار اینه که یک ستاره * جلوی استایل می گذاریم. با این کار فقط IE قادر به خوندن اون استایل هست.
2) رنگ پس زمینه رو به transparent یا شفاف تبدیل می کنیم که اون رنگ کذایی طوسی یا بنفش از بین بره.
3) بعد میگیم که این استایل ما اصلاً پس زمینه یا Background نداره ( حرص نخور، برو خط بعدی می فهمی چرا )
4) خوب حالا توی این خط از فیلترهای مخصوص IE استفاده می کنیم که اکثراً کاربردی ندارن اما اینجا کلی به درد می خورن. در این فیلتر تعریف می کنیم که این DIV ما دارای یک پس زمینه PNG است.
اگر هم خواستی بعداً بپرس که توضیح بدم این فیلتر چطور کار می کنه. فعلاً تا همین جا برای حل مشکلت کافیه.
پس دوباره مرور کنیم:
- به جای وارد کردن مستقیم تصویر در متن صفحه، اون رو به صورت پس زمینه یک DIV و از طریق استایل CSS وارد می کنیم.
- به طور معمول استایل رو برای تمام مرورگرهای جدید به جز IE می نویسیم.
- یک استایل مخصوص هم برای IE درست می کنیم و با گذاشتن ستاره جلوی اون باعث میشیم که تنها و تنها IE اون رو بخونه.
- در این استایل مخصوص، به جای نمایش مستقیم تصویر PNG به عنوان پس زمینه، اون رو با استفاده از فیلتر مایکروسافت نشون میدیم.
ضمناً اگر در طراحی وب سایتت از Table ها به جای DIV ها استفاده می کنی، پیشنهاد می کنم دوباره فکر کن!
در آخر هم دو تا موضوع:
1) راه های دیگه ای هم برای نشون دادن PNG حتی به صورت تصویر در داخل متن صفحه XHTML هست. مثل یک سری FIX که به زبان JavaScript نوشته شده و در حقیقت کارشون همین اضافه کردن فیلتر به خود تصویر PNG هست. اما من پشنهاد می کنم از این کدها استفاده نکن چون یادت باشه همه روی سیستمشون JavaScript رو فعال نمی کنن!
2) در هنگام نوشتن مسیر عکس هات خیلی توجه کن. یادت باشه وقتی داری عکس رو می خونی، آیا مسیر اون رو درست وارد کردی یا نه. این نکته خیلی مهمیه که خودش کلی جای بحث داره.
موفق باشی.