Как заменить или удалить любое конкретное свойство CSS css-файлом для IE8 и ниже только с использованием javascript? - PullRequest
1 голос
/ 19 января 2012

Это код CSS, который я хочу только для IE8 и ниже

background: filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 ); / IE6-8 */

Но если пользователь включен IE9 , я либо хочу удалить это свойство из файла CSS, либо заменить на filter:none

возможно ли использовать javascript, jquery? Я знаю, что могу сделать с отдельной таблицей стилей для IE, но просто любопытно, если это возможно с javascript.

Изменить:

Возможно ли это как в javascript или jquery

// If browser is IE9 

затем заменить

filter: progid:DXImageTransform.Microsoft.gradient(values)

до filter:none

Ответы [ 5 ]

2 голосов
/ 23 января 2012

Да. "возможно" в JavaScript.Но это должно быть сделано как на стороне сервера, так и на стороне клиента.

На стороне клиента вам необходимо определить, является ли это IE9, а затем отправить запрос на сервер для сценария (JavaScript на стороне сервера), который анализирует файлы CSS и заменяет все вхождения фильтра.Свойства и установите его на filter:none, а затем подайте измененный файл CSS клиенту.

PS: Это, IMHO, будет худшим, что вы можете сделать, и я не рекомендуюЭто.Это просто ответ на ваш любопытный вопрос, если это «возможно в JavaScript».

2 голосов
/ 19 января 2012

Я думаю, что самый простой способ - это поместить класс "IE" в ваш элемент HTML, используя условный код ... Я думаю, что я получил это изначально из шаблона HTML5 http://html5boilerplate.com/

<!doctype html>

<!--[if lt IE 7 ]> <html class="no-js ie" lang="en"> <![endif]-->
<!--[if IE 7 ]>    <html class="no-js ie" lang="en"> <![endif]-->
<!--[if IE 8 ]>    <html class="no-js ie" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

.bg-gradient {background: filter: 0, #999}

.ie .bg-gradient {  
    background: filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 ); / IE6-8 */
}

Затем простоиспользуйте add и remove class для удаления класса 'element'

$(document).ready(function(){
    $('.element').addClass('bg-gradient');
})

. Фильтры не будут отображаться браузерами не IE, поэтому добавление или удаление для всех браузеров , за исключением IE 6-8будет иметь тот же эффект, что и для IE9.Также я считаю, что ie9 поддерживает несколько свойств фона, поэтому другие браузеры должны пропустить первое значение, разделенное запятыми - теоретически - я не проверял его.Если нет, просто используйте обычный синтаксис css2:

.bg-gradient {background: filter: 0}
1 голос
/ 19 января 2012
$(document).ready(function(){
    if ($.browser.msie && $.browser.version < 9) {
         $("#element").css("filter", "progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 );")
    }
})
0 голосов
/ 21 января 2012

Я вижу, что здесь есть разные ответы, но лично я посоветую следующий подход:

Есть два класса CSS - один, содержащий стили для IE9, и другой, содержащий стили для всех других браузеров.

Как упоминалось в одном из ответов выше, используйте jQuery.browser API для определения типа браузера.Я советую вам добавить эту строку, скажем "msie9" или "msie8" в качестве класса, к элементу "body" или "html".

Как только это будет сделано, ваш стиль для IE9 будет

body.msie9 .ie9specificclass {}

Для других это будет

.specificClass {}

Это будет чистый подход.

0 голосов
/ 19 января 2012

используйте условные комментарии и добавьте CSS-файл для IE8 и ниже вот учебник

РЕДАКТИРОВАТЬ: используйте проверку браузера jquery и примените CSS с JavaScriptс jQuery.browser.version вы можете получить версию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...