제목은 그것을 거의 요약합니다.
외부 스타일 시트에는 다음 코드가 있습니다.
td.EvenRow a {
display: none !important;
}
나는 사용을 시도했다 :
element.style.display = "inline";
과
element.style.display = "inline !important";
그러나 둘 다 작동하지 않습니다. javascript를 사용하여! important 스타일을 재정의 할 수 있습니까?
차이가 있다면 이것은 greasemonkey 확장을위한 것입니다.
답변
이 작업을 수행하는 유일한 방법은 ‘! important’접미사가있는 새 CSS 선언으로 스타일을 추가하는 것입니다. 이를 수행하는 가장 쉬운 방법은 문서 헤드에 새 <style> 요소를 추가하는 것입니다.
function addNewStyle(newStyle) {
var styleElement = document.getElementById('styles_js');
if (!styleElement) {
styleElement = document.createElement('style');
styleElement.type = 'text/css';
styleElement.id = 'styles_js';
document.getElementsByTagName('head')[0].appendChild(styleElement);
}
styleElement.appendChild(document.createTextNode(newStyle));
}
addNewStyle('td.EvenRow a {display:inline !important;}')
위의 방법으로 추가 된 규칙은 (! important 접미사를 사용하는 경우) 이전에 설정된 다른 스타일을 재정의합니다. 접미사를 사용하지 않는 경우 ‘ 특이성 ‘ 과 같은 개념 을 고려해야합니다.
답변
이 작업을 수행하는 데 사용할 수있는 몇 가지 간단한 한 줄짜리가 있습니다.
1) 요소에 “스타일” 속성 을 설정합니다 .
element.setAttribute('style', 'display:inline !important');
또는…
2) 개체 의 cssText
속성을 수정 style
합니다.
element.style.cssText = 'display:inline !important';
어느 쪽이든 일을 할 것입니다.
===
BTW- !important
요소에서 규칙 을 조작하는 데 유용한 도구를 원한다면 “important”라는 jQuery 플러그인을 작성했습니다. http://github.com/premasagar/important
답변
element.style
setProperty
세 번째 매개 변수로 우선 순위를 가질 수 있는 메소드가 있습니다.
element.style.setProperty("display", "inline", "important")
그것은 기존의 IE에서 작동하지 않았다 하지만 현재 브라우저에서 잘해야한다.
답변
@Premasagar의 탁월한 답변을 기반으로 구축되었습니다. 다른 모든 인라인 스타일을 제거하지 않으려면 이것을 사용하십시오.
//accepts the hyphenated versions (i.e. not 'cssFloat')
addStyle(element, property, value, important) {
//remove previously defined property
if (element.style.setProperty)
element.style.setProperty(property, '');
else
element.style.setAttribute(property, '');
//insert the new style with all the old rules
element.setAttribute('style', element.style.cssText +
property + ':' + value + ((important) ? ' !important' : '') + ';');
}
Chrome에서 규칙을 removeProperty()
제거
하지 않으므로 사용할 수 없습니다 !important
. FireFox에서 camelCase 만 허용하므로
사용할 수 없습니다 element.style[property] = ''
.
답변
방금 발견 한 더 나은 방법 : 선택기를 사용하여 페이지 CSS보다 더 구체적으로 지정하십시오. 오늘만하면됐는데 매력처럼 작동 해요! W3C 사이트에 대한 추가 정보 : http://www.w3.org/TR/CSS2/cascade.html#specificity
답변
DOM 요소 스타일 속성에서 단일 스타일을 업데이트 / 추가하려면이 함수를 사용할 수 있습니다.
function setCssTextStyle(el, style, value) {
var result = el.style.cssText.match(new RegExp("(?:[;\\s]|^)(" +
style.replace("-", "\\-") + "\\s*:(.*?)(;|$))")),
idx;
if (result) {
idx = result.index + result[0].indexOf(result[1]);
el.style.cssText = el.style.cssText.substring(0, idx) +
style + ": " + value + ";" +
el.style.cssText.substring(idx + result[1].length);
} else {
el.style.cssText += " " + style + ": " + value + ";";
}
}
style.cssText는 모든 주요 브라우저에서 지원됩니다 .
사용 사례 :
var elem = document.getElementById("elementId");
setCssTextStyle(elem, "margin-top", "10px !important");
답변
페이지에 CSS를 추가하는 것뿐이라면 스타일리시 애드온을 사용하고 사용자 스크립트 대신 사용자 스타일을 작성하는 것이 좋습니다. 사용자 스타일이 더 효율적이고 적절하기 때문입니다.
사용자 스타일을 만드는 방법에 대한 정보는이 페이지를 참조하십시오.