2009-11-20 5 views
5

мы можем переопределить встроенный css через javascript? с совместимостью с IE6.Как переопределить встроенный css через javascript?

Я нашел это чистое решение css, но не работает в IE.

http://nataliejost.com/override-inline-styles-from-the-stylesheet/

http://www.sitepoint.com/blogs/2009/05/27/override-inline-css/

<div class="block"> 
    <span style="font-weight: bold; color: red;">Hello World</span> 
</div> 

мы можем переопределить этот встроенный стиль с этим решением

.block span[style]{ 
    font-weight: normal !important; 
    color: #000 !important; 
} 

Это решение работы во всех основных браузера, за исключением IE6.

+0

удалила [решено] за титул, на SO вопросы никогда не решаются окончательно, всегда может быть лучшая альтернатива или заслуживающий внимания вариант. SO - это wiki. – markus

+0

ОК за эту информацию. Я не знал об этой штуке –

ответ

14

Конечно, вы можете с помощью CSS JQuery в() метод: http://docs.jquery.com/CSS/css#namevalue

Так что, если, например, у вас есть следующий HTML:

<p style="color:red;">A colored text</p> 

Вы можете изменить цвет, выполнив следующие действия в JQuery :

$("p").css("color","blue"); 

И он будет работать в IE6.

+0

круто! Большое спасибо –

+0

и есть ли какое-нибудь чистое решение css для этого –

+0

jQuerys css() фактически добавляет встроенный CSS в DOM. Выполнение этого наоборот, переопределение jQuerys css() с css сложнее (он работает с использованием! Важно, но не в IE6) – David

3

!important действительно работает в IE6, это просто ваш селектор span[style] не будет, поскольку атрибуты не поддерживаются там. Если вы можете найти другой селектор, который будет выбирать промежутки, которые вы хотите переопределить, это будет работать нормально. Возможно, достаточно всего .block span?

В противном случае, да, вы можете изменить его с JavaScript, если вы абсолютно необходимо (вы не имеете никакого контроля над разметкой?):

span.style.fontWeight= 'normal'; 
span.style.color= 'black'; 
Смежные вопросы