2016-04-15 2 views
0

Я делаю простой скрипт greasemonkey для школы, который добавляет уродливую желтую коробку с некоторыми ссылками на все веб-сайты. В настоящее время я просто делаю это:Javascript: создать элемент, который не наследует css?

var guesses_div = document.createElement("div"); 
guesses_div.style.position = "fixed"; 
guesses_div.style.right = "0"; 
guesses_div.style.bottom = "0"; 
guesses_div.style.backgroundColor = "rgb(255, 255, 0)" 
// here I add some links to the "guesses_div" 

Этот код отлично работает. Однако он наследует стиль от веб-страницы, на которой он включен. Есть ли способ предотвратить это? Помимо переопределения всех элементов стиля один за другим?

Спасибо!

+0

Если ваш css написан для включения всех элементов, то либо перезапишите css, чтобы он был менее включенным, либо переопределил все стили. Вот так – ne1410s

+0

Дело в том, что я не писал css. Он добавлен ко всем веб-сайтам, а не только к моим. Поэтому я не могу изменить css. –

+1

Похоже, что его вариант №2, тогда я боюсь: вручную распиливать/рестайлинг унаследованных вещей. Я не знаю много о 'iframes', но я знаю, что они не собирают родительский css, так что, возможно, это вариант. Как я уже сказал, я мало что знаю – ne1410s

ответ

2

Короткий ответ: Нет. Невозможно предотвратить наследование css.

Длинный ответ: Да. Вы должны вручную переопределить наследованные правила css.

1

Не уверен, что это самый лучший способ когда-либо делать что-либо, но в html5 вы можете использовать близко ко всему как имя тега - чтобы не позволить вашему div наследовать правила css для сайта div, просто не создавайте div, но myDiv, например

var guesses_div = document.createElement("myDiv"); 
guesses_div.style.position = "fixed"; 
guesses_div.style.right = "0"; 
guesses_div.style.bottom = "0"; 
guesses_div.style.backgroundColor = "rgb(255, 255, 0)" 

FIDDLE

0

Как насчет вставки iframe вместо div? iframe не наследует стиль от своего родителя.

Если у вас возникли сомнения, как это сделать, обратитесь к вопросу this.

0

Вы можете посмотреть в all собственности, и сделать что-то вроде:

var guesses_div = document.createElement("div"); 
guesses_div.style.all = "unset"; 
guesses_div.style.position = "fixed"; 
guesses_div.style.right = "0"; 
guesses_div.style.bottom = "0"; 
guesses_div.style.backgroundColor = "rgb(255, 255, 0)"; 

К сожалению, это не работает в IE или Safari пока нет, но, как вы используете Greasemonkey (доступно только для Firefox, я считаю,), вы должны быть в порядке.

Смежные вопросы