Png в ИЕ6, полупрозрачный фон и полупрозрачные картинки
Давайте посмотрим, как на сайте сделать кроссбраузерно полурозрачные фоны, текст, картинки.
Как задать полупрозрачный фоновый цвет
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-type" content="text/html; charset=windows-1251" /> <title>Полупрозрачный фон</title> <style type="text/css"> .fon{ opacity: 0.50; /*задаем прозрачность слоя 50%*/ filter:alpha(opacity=50); /*задаем прозрачность слоя в ИЕ*/ position:absolute;/*позиционируем слой, чтобы увидеть полупрозрачность*/ top:0px; left:0px; width:100%; height:100px; background:red; } </style> </head> <body> <div class="fon"></div> <h1>Привет, я ноахожусь под полупрозрачным слоем! Это так классно =)</h1> </body> </html> |
Замечание. При использовании opacity сам слой и всё что находится внутри его, становится полупрозрачным. Т.е. если вы хотите фон сделать полупрозрачным, а то, что находится внутри его, например, текст, картинки не прозрачным, то в качестве фона лучше использовать полупрозрачный png рисунок.
Как задать полупрозрачную фоновую картинку
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-type" content="text/html; charset=windows-1251" /> <title>Полупрозрачный фон</title> <style type="text/css"> .fon{ position:absolute;/*просто задаем позиционирование, чтобы див налез на текст и была видна полупрозрачность*/ top:0px; left:0px; width:100%; height:100px; background:url(24.png); _background:none;/*Убираем фон в ИЕ6 с помощью хака*/ _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='24.png',sizingMethod='scale'); /*применяем в ИЕ6 с помощью хака фильтр*/ } </style> </head> <body> <h1>Этот текст находится под дивом с полупрозрачным фоном</h1> <div class="fon"></div> </body> </html> |
Замечание. В ие6 фоновый полупрозрачный рисунок растягивается на весь размер дива, т.е. сам рисунок надо вставлять равный размеру дива.
Еще одно важное замечание. В фильтре надо указывать путь к картинке относительно корня сайта, а не относительно css файла.
Использование полупрозрачных PNG-рисунков в ИЕ6
Рассмотрим последнюю ситуацию, как задать полупрозрачный рисунок в html коде, т.е. в теге img. Для этого будем использовать ява-скрипт.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-type" content="text/html; charset=windows-1251" /> <title>Полупрозрачный фон</title> <style type="text/css"> .fon{ position:absolute;/*просто задаем позиционирование, чтобы див налез на текст и была видна полупрозрачность*/ top:0px; left:0px; width:100%; height:100px; } </style> <script> function correctPNG() { for (var i=0; i<document.images.length; i++) { var img = document.images[i]; var imgName = img.src.toUpperCase(); if (imgName.substring(imgName.length-3, imgName.length) == "PNG") { var imgID = (img.id) ? "id=\"" + img.id + "\" " : ""; var imgClass = (img.className) ? "class=\""+img.className+"\" " : ""; var imgTitle = (img.title) ? "title=\""+img.title+"\" " : "title=\"" + img.alt + "\" "; var imgStyle = "display:inline-block;"+img.style.cssText; if (img.align == "left") imgStyle = "float:left;" + imgStyle; if (img.align == "right") imgStyle = "float:right;" + imgStyle; if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle; var strNewHTML = "<span "+imgID+imgClass+imgTitle+" style=\"width: "+img.width+"px; height: "+img.height+"px;"+imgStyle+";" + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+img.src+"\', sizingMethod='scale');\"><img src=\"images\/blank.gif\" width=\"1\" height=\"1\" /></span>"; img.outerHTML = strNewHTML; i = i-1; } } } if (window.attachEvent && navigator.userAgent.indexOf("Opera")==-1) window.attachEvent("onload", correctPNG); </script> </head> <body> <h1>Этот текст находится под дивом с полупрозрачным фоном</h1> <div class="fon"><img src="24.png" alt="" /></div> </body> </html> |
Замечание. При использовании скрипта, при некоторых вариантов верстки сайта, могут быть незначительные изменения в ие6 в области картинок, но это происходит редко, будьте внимательней
UPD: Новый способ решения проблемы! Фиксить полупрозрачные png в ие6 лучше как тут (поддержка background-position): html-css.info/2009/09/png-fix-ie6/.
Комментарии (8) на “Png в ИЕ6, полупрозрачный фон и полупрозрачные картинки”
Оставить комментарий
Для вставки кода используйте <code> ... </code>.
Спасибо за скриптик.
Очень давно хотелось сделать полупрозрачность фона, но не знала как! Я сама бы скрипт написать не смогла. Спасибо огромное! Все очень понятно:)
Спасибо за примеры. Еще для устранения бага прозрачностью PNG, можно подключать скриптик, который исправляет эту болезнь.
А как сделать картинку полупрозрачной для любых браузеров?
Алексей, можно в фотошопе сделать ее полупрозрачной и сохранить в png24, либо к картинке применить opacity:0.50; filter:alpha(opacity=50);
В ИЕ 8 эти коды не работаеть
трава красный корень
Почему png картинки(закругленные углы с прозрачностью)накрывает основной фон дива? ( если задать jpeg то все в порядке, только мне нужны именно png так как фон сайта может поменяться.