Дополнительные соображения по оптимизации

 

Одним из возможных выходов из сложившейся ситуации будет использование характерных для IE CSS‑хаков, чтобы только для него подключить фоновые изображения. В итоге вышеприведенный пример будет выглядеть примерно так:

ul {

list‑style: none;

}

ul li {

margin: 0 0 1px;

background: url(data:image/gif;base64,<?php

echo base64_encode(file_get_contents("../images/flag.png "))

?>) top left no‑repeat;

height: 14px;

text‑indent: 10px;

}

* html ul li {

background‑image: url(/images/flag.png);

}

*+html ul li {

background‑image: url(/images/flag.png);

}

Также возможно кодирование изображений, которые выводятся в base64, автоматически при изменении этих изображений (для этого потребуется простой скрипт, который проверяет, обновились ли соответствующие файлы; если обновились, то перезаписывает их представление в CSS‑файле, заодно и меняет хэш‑строку для подключения этого файла в HTML, чтобы избежать кэширования).

Для включения небольших графиков прямо в HTML‑код прекрасно подойдут условные комментарии, когда для ряда браузеров изображение выводится в base64, а для остальных (например, для IE) подключается через условные комментарии. Например, так:

<!‑‑[if !IE]>‑‑>

<img src="data:image/png;base64,..." alt="График" title="График"/>

<!‑‑<![endif]‑‑>

<!‑‑[if IE]>

<img src="chart.png" alt="График" title="График"/>

<![endif]‑‑>

Если использовать связку «относительное позиционирование родителя – абсолютное позиционирование дочернего элемента», то IE будет просто выводить картинку из внешнего файла поверх непонятного (для него) объекта.

 

Кроссбраузерное использование data:URI

 

IE (до версии 7 включительно) не поддерживает протокол data:URI, а вместе с ним base64‑кодирование внешних файлов и включение их прямо в тело необходимого документа (будь то HTML или CSS/JavaScript‑файл). Однако если рассмотреть использование протокола mhtml (который, конечно же, аккуратно поддерживается только в IE), многое становится более ясным, и base64‑кодирование удается применять в полной мере.

 

О, этот странный Microsoft!

 

В IE существует альтернативное решение для вставки изображений прямо в текстовый документ в виде mhtml‑включений. Давайте остановимся на его практической реализации для CSS‑файлов (в данном случае это файл main.css):

/*

Content‑Type: multipart/related; boundary="_"

 

‑‑_

Content‑Location: 1

Content‑Transfer‑Encoding: base64

 

iVBOR..

*/

Далее в CSS‑файле нужно лишь вызвать эту картинку следующим образом:

ul li {

background‑image:url(mhtml:http://site.ru/main.css?20080531!1);

}

Здесь в адресе картинки идет протокол mhtml (который поддерживается исключительно в IE, но это не так важно), далее полный URL до CSS‑файла (который содержит эту картинку), в данном случае этот URL еще и содержит GET‑параметр для соответствующего кэширования. И небольшая тонкость применения данного формата: необходимо в URL использовать ту же строку, что и в HTML‑файле, в котором подключается данный CSS, иначе IE запросит CSS‑файл дважды: первый раз как таблицу стилей, второй раз – как хранилище картинки. Далее после восклицательного знака (!) идет тот идентификатор, который мы назначили картинке в Content‑Location. И все.

 








Дата добавления: 2015-05-19; просмотров: 769;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.