최근 공부하다가 이 문제가 발생했습니다. 향후 문의를 용이하게 하기 위해 몇 가지 정보를 검토하고 기본 JS 전용 방법을 요약했습니다. 잘못된 점이 있으면 지적해 주세요. 모두가 이 책을 읽고 뭔가를 배웠다고 느끼기를 바랍니다! 다음 글에서는 기본 자바스크립트를 사용하여 CSS 스타일을 읽고 쓰는 방법을 주로 소개합니다. 도움이 필요한 친구들이 참고할 수 있습니다.
머리말
아마도 CSS 스타일 운영에 대해 이야기할 때 많은 사람들이 jQuery의 CSS 방식인 $(selector).css(name)
을 떠올릴 것입니다. 몇 가지 생각 유사한 기능을 달성하기 위해 네이티브 js를 사용하는 방법에 대해 생각해 본 적이 있습니까?
네이티브 js에서 스타일을 조작하는 가장 친숙한 방법은 DOM의 Style 객체입니다. 그러나 이 방법은 html 문서의 인라인 스타일만 가져오고 수정할 수 있으며 인라인이 아닌 스타일(내부 스타일 및 외부 스타일 시트).
검색과 정리를 통해 네이티브 js를 사용하여 CSS 스타일을 읽고 쓰는 구현을 정리했습니다. 아래에서는 할 말이 많지 않으니, 자세한 소개를 살펴보겠습니다.
스타일 얻기
1. 돔 스타일
이 방법 인라인 스타일만 얻을 수 있습니다:
var text = document.getElementById('text'); var textColor = text.style.color; // 得到textColor的值为 '#000'
currentStyle
이 방법은 IE 브라우저에만 적용 가능합니다. element.style
과 형식이 유사합니다. 차이점은 currentStyle의 이름이 현재 스타일(CSS가 로드된 후의 스타일)이라는 것입니다. 내부 스타일 태그의 스타일과 외부에서 가져온 CSS 파일을 포함한 요소의.
사용법: element.currentStyle.attribute
예를 들어 ID가
var boxWidth = document.getElementById('box').currentStyle.width; // 得到boxWidth的值为 '200px'
3. getCompulatedStyle
var el = document.getElementById("box"); var style = window.getComputedStyle(el , ":after");
// 这个函数需要传递两个参数:元素对象和样式属性名称 function getStyle(el, styleName) { if( el.currentStyle ) { // for IE return el.currentStyle[styleName]; } else { // for peace return getComputedStyle(el, false)[styleName]; } }
var box = document.getElementById("box"); var boxWidth = getStyle(box, 'width');
getComputedStyle과 스타일의 차이점은 무엇인가요?
읽기 전용 및 쓰기 가능
getCompulatedStyle 메소드는 읽기 전용이며 스타일을 가져올 수만 있고 설정할 수는 없지만은 읽고 쓸 수 있습니다. element.style
획득한 객체 범위
getCompulatedStyle 메소드는 해당 요소에 최종적으로 적용되는 모든 CSS 속성 객체를 획득합니다(CSS 코드가 없더라도 기본 상위 8개 세대가 표시됩니다)는 요소의 스타일 속성에서만 CSS 스타일을 가져올 수 있습니다. 따라서 베어 요소
의 경우 객체의 getCompulatedStyle 메소드에 의해 반환된 길이 속성 값(있는 경우)은 190+입니다(내 테스트에 따르면 FF: 192, IE9: 195, Chrome: 253, 결과 환경에 따라 다를 수 있음), element.style
은 0입니다. element.style
설정 스타일
돔 스타일
var el = document.getElementById('box'); el.style.backgroundColor = 'red';
2. cssText 속성
document.getElementById("d1").style.cssText = "color:red; font-size:13px;";