성능과 구조의 분리 원칙에 따라 새로운 스타일 시트를 직접 가져오는 것이 최선의 선택이라는 것은 의심의 여지가 없지만, 예를 들어 드래그 가능한 DIV를 만드는 경우의 관점에서 작동하지 않을 수도 있습니다. 스타일을 설정하면 원본 문서 흐름에 영향을 주지 않도록 절대 위치를 지정하고 위쪽 및 왼쪽 값을 조금씩 변경하여 이동 효과를 얻습니다. 드래그에는 초당 24프레임이라는 시간 개념이 있으므로 스타일 시트에 모든 내용을 포함하는 것은 불가능합니다. 따라서 스타일 규칙을 동적으로 생성하고 스타일 규칙을 신속하게 수정하는 것이 매우 필요합니다. W3C는 이를 위해 많은 작업을 수행했습니다. DOM2.0에서는 많은 인터페이스가 확장되었습니다.
한발 물러서서 성능과 구조의 분리는 스타일 시트 가져오기에만 국한되지 않습니다. 스타일에는 외부 스타일, 내부 스타일, 인라인 스타일의 세 가지 유형이 있습니다.
* 위에서 언급한 외부 스타일은 별도의 CSS 파일로 작성됩니다.
* 내부 스타일은 스타일 태그에 독립적으로 작성되며 일반적으로 제가 제공한 마지막 함수에 의해 생성된 스타일이 내부 스타일입니다.
* 인라인 스타일은 요소의 스타일 속성에 작성하는 스타일입니다.
새로 추가된 인터페이스는 주로 외부 스타일에 집중되어 있습니다. IE6과 같은 오만한 사람들은 인터페이스의 존재를 결코 무시하지 않습니다.
W3C 모델에서 "text/css" 유형의 링크 태그와 스타일 태그는 모두 document.styleSheets를 통해 현재 페이지의 모든 CSSStyleSheet 개체를 얻을 수 있지만 이는 A 컬렉션입니다. , 단순한 배열이 아닙니다. 각 CSSStyleSheet 객체에는 다음과 같은 속성이 있습니다.
* 유형: 항상 "text/css" 문자열을 반환합니다.
* 비활성화됨: 입력 비활성화와 동일한 효과가 있으며 기본값은 false입니다.
* href: 스타일 태그가 null인 경우 URL을 반환합니다.
* 제목: 제목의 값을 반환합니다. 제목은 일반 요소의 제목과 동일합니다. 원하는 대로 작성할 수 있습니다.
* 미디어: IE와 Firefox에서 반환되는 내용이 일관되지 않아 말씀드리기 어렵습니다. media는 자신이 소유한 스타일 규칙이 유효한 장치를 지정하는 데 사용됩니다. 기본값은 all입니다.
* ownerRule: 스타일 시트가 @import로 도입된 경우 읽기 전용 CSSRule 객체를 반환합니다.
* cssRules: 읽기 전용 스타일 규칙 개체(CSSStyleRule 개체) 컬렉션을 반환합니다.
W3C에서는 스타일을 좀 더 세부적으로 설정하기 위해 CSSStyleRule 개체를 만듭니다. 예를 들어 다음은 스타일 규칙 개체에 해당합니다.
button[type] {
padding:4px 10px 4px 7px
line-height:17px; ;
}
스타일 규칙 객체에는 type, cssText, parentStyleSheet, parentRule과 같은 주요 속성이 있습니다.
type은 스타일 규칙을 세분화하는 nodeType과 다소 유사합니다. 정수를 사용하여 해당 유형을 나타냅니다. 구체적인 상황은 다음과 같습니다.
* 0: CSSRule.UNKNOWN_RULE
* 1: CSSRule.STYLE_RULE(CSSStyleRule 개체 정의)
* 2: CSSRule.CHARSET_RULE(설정을 위한 CSSCharsetRule 개체 정의) 현재 스타일 시트의 문자 집합은 기본적으로 현재 웹 페이지와 동일합니다.
* 3: CSSRule.IMPORT_RULE(다른 스타일 시트를 도입하기 위해 @import를 사용하는 CSSImportRule 객체 정의)
* 4: CSSRule.MEDIA_RULE(이 스타일이 모니터, 프린터, 프로젝터 등에 사용되는지 여부를 설정하는 데 사용되는 CSSMediaRule 객체 정의)
* 5: CSSRule.FONT_FACE_RULE(CSSFontFaceRule 객체 정의, CSS3의 @font-face )
* 6: CSSRule.PAGE_RULE (CSSPageRule 객체 정의)
물론 cssText는 브라우저마다 스타일 속성의 차이를 무시하고 문자열을 스타일 규칙으로 직접 변환하는 매우 유용한 속성입니다. cssFloat 및 styleFloat와 같은 것입니다.
parentStyleSheet와 parentRule은 모두 @import용입니다. 하지만 @import는 IE에서는 문제가 있어서 기본적으로 사용하지 않습니다.
몇 가지 예상치 못한 방법이 있습니다.
* nsertRule(rule,index): 스타일 규칙을 추가합니다.
* deleteRule(index): 스타일 규칙을 제거합니다.
* getPropertyValue(propertyName) 요소의 해당 스타일 속성 값을 가져옵니다. 스타일 규칙 객체를 얻으면 CSSStyleRuleObject.getPropertyValue("color")를 사용하여 글꼴 색상 설정을 얻을 수 있습니다. 일반적인 el.style.color 메소드와 비교하면 el.style.color는 인라인 스타일을 가져오기 때문에 효율성이 상당히 높습니다. IE와 같은 괴물은 요소가 스타일 속성을 설정하지 않으면 전혀 가져올 수 없습니다. 비어 있으면 상속될 수 있습니다... 호환성 문제가 있을 수 있으며 이 인라인 속성은 반드시 요소에 궁극적으로 적용되는 스타일이 아닐 수도 있습니다. IE는 덜 쓸모 있는 el.currentStyle[prop]만 호출할 수 있으며, 다른 브라우저는 프로세서를 호출합니다. document.defaultView.getCompulatedStyle(el, "")[prop] 꽤 인상적이지만 약간 번거롭습니다.
* RemoveProperty(propertyName)는 요소의 해당 스타일 속성을 제거합니다.
* setProperty(propertyName, value, Priority)는 스타일을 추가할 요소를 설정하고 우선순위도 지정합니다.
스타일을 설정하는 함수를 얻을 수 있습니다:
var Hyphenize =function(name){
return name.replace( /([A-Z])/g, "-$1" ).toLowerCase()
}
var camelize = function(name){
return name.replace(/-(w)/g, function(all, letter){
return letter.toUpperCase();
});
}
var setStyle = function(el, styles) {
for(스타일의 var 속성) {
if(!styles.hasOwnProperty(property))
if(el. style.setProperty ) {
//하이픈 스타일이어야 합니다. el.style.setProperty('Background-color','red',null)
el.style.setProperty(hyphenize(property),styles [property] ,null);
} else {
//el.style.paddingLeft = "2em"
el.style[camelize(property)] = styles[와 같은 카멜 케이스 스타일이어야 합니다. 속성]
}
}
return true;
}
사용법:
setStyle(div,{
'left':0,
'top':0,
'line -height':'2em' ,
'padding-right':'4px'
});
하지만 저는 이 방법이 인라인 스타일을 생성하는 것을 별로 좋아하지 않습니다. , 부동 및 불투명도를 처리해야 합니다. IE7의 인라인 스타일에는 필터에 버그가 있습니다. hasLayout을 가져오도록 해야 합니다. 그렇지 않으면 필터가 적용되지 않습니다(el.currentStyle.hasLayout을 통해 상태를 확인할 수 있습니다). 따라서 하나씩 설정하는 것보다 cssText를 사용하여 모두 잡아내는 것이 좋습니다.
마지막으로 addSheet 메서드의 향상된 버전을 첨부합니다. 자동으로 불투명도를 처리하는 기능을 추가합니다. 즉, 표준에 따라 cssText만 설정하면 자동으로 해당 필터가 생성됩니다. 이를 통해 최소한 Firefox와 같은 브라우저는 W3C 검사를 통과할 수 있습니다.
var addSheet = function(){
var doc,cssCode;
if(arguments.length == 1){
doc = document;
cssCode = 인수[0]
}else if(arguments.length == 2){
doc = 인수[0];
cssCode = 인수[1]
}else{
alert("addSheet 함수에는 themost 두 개의 매개변수 허용!");
}
if(! "v1"){//새 기능, 사용자는 W3C 투명 스타일만 입력하면 자동으로 IE의 투명 필터로 변환됩니다
var t = cssCode.match(/opacity:(d?.d );/);
if(t!= null){
cssCode = cssCode.replace(t[0], "filter:alpha (opacity="parseFloat(t[1]) * 100 ");");
}
}
cssCode = cssCode "n";//방화범 확인을 용이하게 하기 위해 끝에 개행 문자를 추가합니다. .
var headElement = doc.getElementsByTagName("head")[0];
var styleElements = headElement.getElementsByTagName("style")
if(styleElements.length == 0){//if not 스타일 요소가 존재하는 경우
if(doc.createStyleSheet){ //ie
doc.createStyleSheet()
}else{
var tempStyleElement = doc.createElement('style'); // w3c
tempStyleElement.setAttribute("type", "text/css");
headElement.appendChild(tempStyleElement)
}
}
var styleElements[0];
var media = styleElement.getAttribute("media");
if(media != null && !/screen/.test(media.toLowerCase()) ){
styleElement.setAttribute("media" ," screen");
}
if(styleElement.styleSheet){ //ie
styleElement.styleSheet.cssText = cssCode;//새 내부 스타일 추가
}else if(doc.getBoxObjectFor ) {
styleElement.innerHTML = cssCode;//Firefox는 innerHTML에 직접 스타일 시트 문자열 추가를 지원합니다.
}else{
styleElement.appendChild(doc.createTextNode(cssCode))
}
}

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

뜨거운 주제



