Допустимое использование -webkit-min-device-width - медиа-запрос CSS

Я получаю сообщение об ошибке проверки W3 при связывании с таблицей стилей с помощью медиа-запроса для целевых дисплеев Retina. Вот код:

<link rel='stylesheet' type='text/css' href='/css/styles-retina.css' media='only screen and (-webkit-min-device-pixel-ratio: 2)'/>

Отчет об ошибке W3C:

«Плохое значение только экрана и (-webkit-min-device-pixel-ratio: 2) для атрибута media в ссылке элемента: ожидалась буква в начале части мультимедийной функции, но вместо этого увидела».

Я искал это и начинаю думать, что для этого не существует "действительного" решения: либо игнорировать ошибку проверки, либо полностью удалить этот запрос. Я понимаю, что проверка кода не всегда полезна, но есть ли способ в этой ситуации?


person mrhigham    schedule 10.01.2012    source источник


Ответы (1)


Фильтр -webkit недействителен для W3C. Также значение media='' не соответствует стандарту W3C. Вы можете увидеть все разрешенные типы мультимедиа здесь: http://www.w3schools.com/CSS/css_mediatypes.asp

Реального решения для проверки вашего кода не существует, но вы можете использовать обходное решение, но на самом деле это не проверяет ваш код:

Временное решение PHP:

function w3c(){
if((stristr($_SERVER["HTTP_USER_AGENT"],'w3c') === FALSE))
return true;
}

Используйте обходной путь PHP, подобный этому, для каждого контента, который не должен быть видим для валидатора W3C:

<?php if(w3c()){ ?>
    <link rel='stylesheet' type='text/css' href='/css/styles-retina.css' media='only screen and (-webkit-min-device-pixel-ratio: 2)'/>
<?php } ?>

Временное решение для Javascript:

Javascript также не отображается для валидатора W3C, поэтому вы также можете использовать этот обходной путь (просто имейте в виду, что javascript можно отключить):

<script type="text/javascript"><!--
document.write('<link rel='stylesheet' type='text/css' href='/css/styles-retina.css' media='only screen and (-webkit-min-device-pixel-ratio: 2)'/>');
//--></script>
person Fabian    schedule 16.01.2012
comment
Спасибо за ваш ответ, я подумал, что это будет тот случай, когда я не смогу по-настоящему проверить. Спасибо за идеи, как это обойти! - person mrhigham; 24.01.2012