최근 DOM에서 클래스를 전환하는 것이 아니라 CSS 클래스 또는 선택기의 실제 규칙 집합을 변경하여 요소 스타일을 편집하는 방법에 대해 궁금해했습니다. 그래서 그 대신css : 선택기를 사용하여 규칙 집합을 변경하고 클래스를 전환/스타일 적용
$('.some').hide()
또는
$('.some').addClass('hidden')
같은의 왜 직접 document.styleSheets
과 물건과 함께 규칙을 변경하지? 브라우저가 규칙 집합 변경을 기본적으로 처리하도록하기 때문에이 방법이 일반적으로 더 많은 성능을 발휘하지 않을까요?
display: none;
과 같이 .some
에 스타일을 추가 할 수 있으며 모든 .some
요소를 직접 숨길 수 있습니다. js의 모든 요소를 반복하여 수동으로 숨길 필요는 없습니다 (위의 예와 같이).
규칙 집합을 직접 변경하면 모든 #persons > .item
또는 무엇인가를 숨길 수 있기 때문에 상황에 맞는 클래스 (예 : this ...를 호출 할 가능성이 높습니다.)를 직접 설정하는 것이 좋습니다. 나는 보통 규칙의 두 가지 유형을 필요로하는
나는 여전히 .hidden
.left
.green
처럼 하나의 기능 클래스 대 .calendar
.ticket
.item
같은 예를 들어 컨트롤 이름처럼, 마음에 문맥에 이름을 지정하는 클래스에 관한 모범 사례를 알지 못한다.
나는 당신이 이것에 대해 어떻게 생각하는지 물어보고 있는데, 스타일 시트 접근법 수정의 이점과 단점과 jquery와 같은 라이브러리가 스타일을 변경하는 것과 어떻게 다른가요?
또한 우수 사례가 무엇이라고 생각합니까? 더 많은 부분을 해킹으로 간주합니까?
기침 자바 스크립트와 document.styleSheets
조작 기침을
글쎄요. 하지만 코드로 스타일 시트를 추가하면, 모든 참조가있는 곳에서 마지막/최신 스타일 시트 인 경우 기본적으로 다른 스타일보다 우선합니다. 따라서 iterating 부분을 없애고, js가 자체 스타일 시트에서 자체 규칙을 작성한다고 말하면 어떨까요? 모두 멋진 API로 싸여 있습니까? –
@sharpjohnny : 그럴 가치가 없습니다. 그렇게하려고한다면 스타일을 각 요소에 직접 추가하여 계단식으로 싸우지 않을 수 있습니다. 클래스는 요소의'className' 속성을 조작함으로써 추가/삭제 될 수 있습니다 - 일단 브라우저가 인계를 받으면, JavaScript가 할 수있는 것보다 ** 빨리 ** 수행 할 수 있습니다. –