다른 HTML과 함께 <body>의 <style> 태그 사용


196
<html>
  <body>
    <style type="text/css">
      p.first {color:blue}
      p.second {color:green}
    </style>

    <p class="first">Hello World</p>
    <p class="second">Hello World</p>

    <style type="text/css">
      p.first {color:green}
      p.second {color:blue}
    </style>

    <p class="first">Hello World</p>
    <p class="second">Hello World</p>
  </body>
</html>

브라우저는 연속적이지 않은 CSS를 어떻게 렌더링해야합니까? 페이지의 모든 CSS 스타일을 사용하여 일부 데이터 구조를 생성하고 렌더링에 사용합니까?

아니면 보이는 순서대로 스타일 정보를 사용하여 렌더링합니까?


2
유효한 HTML이 아니기 때문에 정의되지 않은 동작이라고 말하고 싶습니다. : 요소가 없습니다 유효하며 자세한 내용은 en.wikipedia.org/wiki/HTML_element
펠릭스 클링

2
이 문제를 제외하고 CSS와 를 섞는 것은 나쁜 습관 HTML입니다.
0x2D9A3

1
@ 0x2D9A3 반드시 그런 것은 아닙니다. 그것은에 정의 된 CSS보다 외부 CSS 페이지 요청이 오래 걸립니다 <head>태그
계산법 캐년

@KolobCanyon 동의하지만 일반적으로 CSS는 별도의 파일에 있어야합니다. CSS가 많으면 관리 (유지 관리, (사후 처리), 축소, 분판)가 쉬우 며 별도의 파일로 제공되며 콘텐츠 (HTML) 도 더 빨리로드되어 UX가 향상 될 수 있습니다 . 그러나 항상 개발과 마찬가지로 모든 것이 상황에 따라 달라 지므로 YMMW :)
0x2D9A3

3
@KolobCanyon, 이것은 CSS가 별도의 파일에 있어야하는지의 문제가 아닙니다. 이 경우의 질문은에서 <body>보다는 CSS에 관한 것 <head>입니다.
Ray Butterworth

답변:


312

다른 사람들이 이미 언급했듯이 HTML 4를 사용하려면 <style>태그를<head> 섹션 (대부분의 브라우저에서 <style>태그를 허용하더라도 body).

그러나 HTML 5에는 scoped속성이 포함되어 있으며 (아래 업데이트 참조) <style>태그 의 부모 요소 내에있는 스타일 시트를 만들 수 있습니다 . 또한 <style>태그를<body> 요소 .

<!DOCTYPE html>
<html>
<head></head>
<body>

<div id="scoped-content">
    <style type="text/css" scoped>
        h1 { color: red; } 
    </style>

    <h1>Hello</h1>
</div>

    <h1>
      World
    </h1>

</body>
</html>

위의 코드를 지원하는 HTML-5 지원 브라우저에서 렌더링하는 경우 scoped 하면 스타일 시트의 범위가 제한적으로 나타납니다.

하나만있어 중요한 경고가 있습니다 ...

이 답변을 작성하는 시점 (2013 년 5 월)은 현재 거의 모든 주류 브라우저가 scoped 속성을 . ( Chromium의 개발자 빌드는 분명히 지원합니다.)

그러나이 scoped질문과 관련된 속성에 대한 흥미로운 의미가 있습니다. 그것은 미래의 브라우저에서 허용하는 표준을 통해 위임하는 것을 의미 <style>내에서 요소 <body>(긴만큼 <style>요소가 범위가됩니다.)

따라서,

  • 거의 모든 기존 브라우저는 현재 scoped속성을 무시 합니다
  • 거의 모든 기존의 브라우저는 현재 수 <style>내 태그<body>
  • 향후 구현에서는 <style>태그 내에서 (범위) 태그 를 허용해야 합니다.<body>

... 따라서 나중에 속성 으로 태그를 증명하는 한 본문 내에 태그 를 배치하는 데 실제로 아무런 해없습니다 . 유일한 문제는 현재 브라우저가 실제로 스타일 시트 의 범위제한 하지 않으며 전체 문서에 적용한다는 것입니다. 그러나 요점은 모든 실질적인 목적을 위해 제공된 범위 내에 태그 포함 할 있다는 것입니다.<style>scoped<style><body>

  • scoped속성 을 포함하여 HTML을 미래에 대비
  • 현재 <body>주류 브라우저 지원이 없기 때문에 의 스타일 시트 는 실제로 범위가 지정되지 않습니다.


* 물론 HTML 유효성 검사기를 열람하는 경우를 제외하고 ...


마지막으로, HTML 내에 CSS를 포함시키는 것은 좋지 않은 일반적인 (주관적인) 주장에 관해서는 , 속성의 요점scoped개발자가 HTML 덩어리를 모듈 또는 신디케이트 된 컨텐츠로 가져올 수있게하는 전형적인 최신 개발 프레임 워크를 수용 하는 것입니다. . 포함 된 CSS 있는 것이 매우 편리 합니다.특정 스타일을 가진 캡슐화 된 모듈 식 구성 요소를 개발하기 위해 특정 HTML 청크 적용되는 .


에 따라 2 월 2019로 업데이트 모질라 문서scoped속성은 지원되지 않습니다. Chrome은 버전 36 (2014) 및 Firefox 버전 62 (2018)에서 지원을 중단했습니다. 두 경우 모두, 브라우저 설정에서 사용자가이 기능을 명시 적으로 활성화해야했습니다. 다른 주요 브라우저는 그것을 지원하지 않았습니다.


3
@RobertMcKee : 실제로 테스트 했습니까? 나는 일반적으로 전체 HTML 페이지 (모든 인라인 스타일 포함)가 렌더링 전에 파싱 될 것으로 예상합니다. 일반적으로 크지 않으며 브라우저는 스타일이없는 플래시 컨텐츠를 피하기 위해 정확하게 렌더링하기 전에 (매우 짧음) 기다립니다. 에 연결된 CSS로 인해 head. 경우 이 유일한 CSS, 그리고 경우 페이지가 크고 경우 네트워크 연결이 매우 빠른없는, 어쩌면 당신은 스타일이 적용되지 않은 내용의 플래시를 볼 수 있지만, 대부분의 실제 상황에 나를 놀라게 것입니다.
Eamon Nerbonne

4
현재 Firefox에서만 범위가 지정된 스타일 요소를 지원합니다 ( caniuse.com/#feat=style-scoped 에 따라 ). 그리고 일반적인 브라우저는 BODY 내부의 STYLE 요소를 지원하기 때문에 필요한 경우 사용합니다. CSS를 범위에 적용해야하는 경우 CSS 소스의 모든 선택기 앞에 래퍼의 ID / 클래스를 붙일 수 있습니다. 실제로 HTML 보고서를 서버 측에로드하고 AJAX를 통해 렌더링하는 웹 응용 프로그램 에서이 작업을 수행했습니다. 그런 다음 JavaScript에서 CSS에 간단한 정규식을 접두어로 붙일 수 있습니다. cssString.replace (/ (^ | \}) ([^ {] +) (\ {) / g, '$ 1'+ prefix + '$ 2 $ 3')
Adam Hošek

5
에 대한 지원 @scoped또는 scoped죽어가는 것 같습니다 : 여기여기
Kiran Subbaraman

51
@KiranSubbaraman 지원 : mozilla dev에 대해 (2016 년 7 월) 읽었습니다. " 범위 속성은 Chrome 및 Firefox에서 제한적이고 실험적인 채택 후에 만 사양에서 제거되었습니다 . 거의 확실하게 사용되므로 사용하지 마십시오 . 이 브라우저에서 곧 제거되었습니다. " >> developer.mozilla.org/en-US/docs/Web/HTML/Element/…
jave.web

9
scoped속성은 현재 HTML5 사양에서 제거되었습니다.
Albert Wiersch

61

BREAKING BAD NEWS 에 대한 애호가 "몸에 스타일"W3C는 최근 한 는 HTML 전쟁 손실 버전없는 HTML "생활 수준"WHATWG, 대한 지금이되었다 , 슬프 도다 공식 하나, 않습니다 하지 STYLE 에를 BODY. 수명이 다한 행복한 하루는 끝났습니다. ;) W3C 유효성 검사기 는 WHATWG 사양에서도 작동합니다. (@FrankConijn에게 감사합니다!)

(참고 : 이것은 "오늘 현재"의 경우이지만 버전 관리가 없으므로 링크는 예고 나 통제없이 언제든지 무효화 될 수 있습니다. GitHub에서 개별 소스 커밋에 연결하려는 경우가 아니면 기본적으로 더 이상 새로운 공식 HTML 표준 인 AFAIK 를 안정적으로 참조 하십시오.이 작업을 올바르게 수행 할 수있는 올바른 방법이 있으면 수정 해주세요.)

폐허가 된 뉴스 :

Yay 는 HTML5.2부터 STYLE최종적으로 유효합니다 BODY! (과scoped 사라졌다.)

에서 W3C의 사양 ( 마지막 줄을 맛보세요! )

4.2.6. 스타일 요소

...

이 요소를 사용할 수있는 컨텍스트 :

메타 데이터 컨텐츠가 예상되는 위치

헤드 요소의 자식 인 noscript 요소.

흐름 내용이 예상되는 본문에서.


메타 사이드 참고 :

"브라우저 전쟁"의 피해에도 불구하고 우리는 여전히 엄청나게 경쟁하는 두 가지 "공식"HTML "표준"(인용 1 standard + 1 standard < 1 standard) 에 대해 계속 개발해야 한다는 사실은 웹 개발은 실제로 중단되지 않았습니다.

이제는 결국 변경 될 수 있지만 웹 제작자 / 개발자 및 이에 따라 브라우저는 이미 수행 된 작업에 대한 정당한 이유가 없을 때 궁극적으로 사양에 포함되어야하는 것과 그렇지 않아야하는 것을 결정해야합니다. 현실. 그리고 대부분의 브라우저는 오랫동안 지원 한 STYLE에서 BODY(어느 방식 으로든하며 예를 참조 scoped. ATTR을 ()하는 고유의 성능 (및 기타) 처벌에도 불구하고 우리가 . 급여 여부가 아니라 사양을 결정해야한다). 그래서, 나는 그들에게 계속 베팅하고 희망을 포기하지 않을 것입니다. ;) WHATWG가 현실 / 저자에 대해 동일한 주장을한다면 W3C가 한 일을 끝낼 수 있습니다.


3
사양을 읽었지만 이해하지 못합니다. 유효성을 검사 하는 style블록 의 예제 코드를 제공 할 수 있습니까 body?
Frank Conijn

3
@ FrankConijn : 좋은 점, 상황이 바뀌고 대답이 업데이트되었습니다! 정말 혼란 스럽습니다. 5.2 W 5.3 W3C 스펙은 모두 STYLE메타 데이터 및 플로우 컨텐츠로 취급 되지만 최신 WHATWG "living"스펙은 오래되고 지루한 "메타 데이터 만"스토리를 알려줍니다 (HEAD에서만 가능). 그리고 부상에 대한 모욕을 더하기 위해 W3C 검사기는 WHATWG 맛을 따르는 것 같습니다. 나는 웃거나 울지 않을지는 아직 결정하지 않았지만, 개인적으로 "브라우저 + W3C-유효성 검사기"사례로 "오류"하고 BODY에서 스타일을 허용하기로 결정했습니다. (BTW, 잊지 마십시오 : 우리는 실제로 표준의 궁극적 인 근원이어야합니다 .)
Sz.

나는 그들이이 쓰레기로 상어를 뛰어 넘었다 고 생각합니다. 템플릿 시스템에서 배경 이미지 속성을 동적으로 설정하려면 기본적으로 선 스타일로 사용하는 것 외에는 선택의 여지가 없습니다. 프로그래밍 방식으로 생성 된 스타일 블록을 html 출력 바로 위에 놓는 것이 훨씬 덜 침습적이었습니다.
GovCoder

32

큰 사이트 컨텐트 관리 시스템이 일부 클래스에 의존하는 컨텐트에 <style> 요소 (일부는 아님)를 일상적으로 두는 것을 보면 말이 헛간이라고 결론을 내립니다.

cnn.com, nytimes.com, huffingtonpost.com, 가장 가까운 대도시 신문 등의 페이지 소스를보십시오.

본문에 어딘가에 <style> 섹션을 추가해야 할 충분한 이유가있는 경우 (예 : 다양하고 독립적 인 페이지 요소를 실시간으로 포함 ()하는 데 각각 고유 한 <style>이 있고) 조직은 더 깨끗하고 모듈화되고 이해 가능하며 유지 관리가 쉬워 질 것입니다. 지역 변수와 같이 범위가 제한된 "로컬"스타일을 가질 수 있다면 더 좋을 것이지만 나중에 원하거나 원할 HTML이 아닌 HTML로 작업 할 수 있습니다.

물론 다른 사람들이 정교하게 설명했듯이 정통성을 따르는 좋은 단점과 항상 좋은 이유가 있습니다. 그러나 <body>에서 <style>을 신중하게 사용하는 것이 이미 주류가 된 것처럼 보입니다.


1
실용주의 FTW!
Waruyama

1
네 말이 맞아. 예를 들어 플러그인 내 <body>에서 <style> 태그를 사용합니다. 세련된 플러그인 콘텐츠를 만드는 가장 쉬운 방법이기 때문입니다. 그러나 한 순간, 모든 CSS 클래스는 플러그인 데이터에 고유합니다.
Avirtum

7

유효한 HTML이 아니므로 어쨌든 모든 브라우저는 두 번째 인스턴스 만 고려하는 것 같습니다.

Fedora에서는 FF 및 Chrome의 최신 버전, XP에서는 FF, Opera, IE 및 Chrome에서 테스트했습니다.


6

브라우저마다 브라우저가 다를 것 같습니다. 브라우저가 코드를 거치면서 전역 표시 규칙이 업데이트 될 것입니다.

외부 스타일 시트가 지연되어로드 될 때 전체 표시 규칙에서 이러한 변경 사항을 볼 수 있습니다. 여기서 비슷한 것이 일어날 수 있지만 짧은 연속으로 실제로 렌더링되지는 않습니다.

어쨌든 유효한 HTML이 아니므로 생각하기에 쓸모없는 것이라고 말하고 싶습니다. <style>태그 head는 페이지 의 섹션에 속합니다 .


5

다른 사람들이 말했듯이 스타일 태그가 헤드에 속하기 때문에 이것은 유효한 HTML이 아닙니다.

그러나 대부분의 브라우저는 실제로 해당 유효성 검사를 시행하지 않습니다. 대신, 문서가로드되면 스타일이 병합되고 적용됩니다. 이 경우 두 번째 스타일 세트는 마지막 정의이므로 항상 첫 번째 스타일을 대체합니다.


5

<style>태그는에 속하는<head> 부분, 모든 콘텐츠에서 분리합니다.

참고 문헌 : W3C 사양W3Schools


52
질문을 다루지 않습니다. 그리고 이러한 엄격한 지침은 현실적으로 압도됩니다. 저자가 html 헤드에서 스타일을 정의 / 포함 할 수없는 경우가 많습니다.
Javier

3
이것은 2010 년에 맞았을 수도 있지만 오늘날에는 받아 들일만한 대답과는 거리가 멀다.
Isaac Lubow

3

귀하의 예에서, 브라우저는 아무것도하지 않기 위해 "추정"되지 않았습니다. HTML이 유효하지 않습니다. 오류 복구가 트리거되거나 구문 분석기가 원하는대로 작성합니다.

유효한 인스턴스에서 여러 스타일 시트는 차례대로 나타나는 것으로 취급되며 캐스케이드 는 정상적으로 계산됩니다.


2

프로그래머아닌 사용자가 사용하는 웹 시스템의 WYIWYG 편집기와 같은 제한된 컨텍스트에 대해서는 이것이 표준을 따르는 가능성을 제한하는 문제 일 수 있습니다. 때로는 TinyMCE와 같이 콘텐츠 / 코드를 textarea태그 안에 넣는 라이브러리이므로 편집기에서 큰 div태그 로 렌더링합니다 . 때로는 이러한 편집기의 이전 버전 일 수도 있습니다.

나는 그것을 추측하고있다 :

  1. 이러한 하지 프로그래머 사용자는 시스템의에서 일부 CSS 규칙 등을 요청, 시스템 관리자 (또는 기관의 webdevs)와 오픈 채널이없는stylesheets . 실제로 관리자 (또는 웹 개발자)에게는 요청의 수를 고려할 때 비실용적입니다.
  2. 이 시스템은 기존 시스템이며 여전히 최신 버전의 HTML을 지원하지 않습니다.

경우에 따라 사용 style규칙이 없으면 설계 경험이 매우 좋지 않을 수 있습니다. 예, 이러한 사용자는 사용자 정의가 필요합니다. 좋습니다.하지만이 시나리오에서 어떤 해결책이 있습니까? html페이지에 CSS를 삽입하는 다른 방법을 고려할 때 다음 솔루션이 있다고 가정합니다.


첫 번째 옵션 : sysadm 요청

시스템에서 일부 CSS 규칙을 포함 시키려면 시스템 adm에 문의하십시오 stylesheets. 이것은있을 것입니다 외부 또는 내부 CSS의 솔루션입니다. 이미 말했듯이 불가능할 수도 있습니다.


두 번째 옵션 : <link>켜기<body>

사용하여 외부 스타일 시트 상의 body즉, 태그,의 사용 link태그 안에 당신이 액세스 할 수있는 영역 (즉 것, 사이트에, 내부 body태그가 아니라에서 head태그). 일부 소식통은 이것이 괜찮지 만 MDN 과 같은 "좋은 습관은 아닙니다"라고 말합니다 .

<link>요소는 하나의 발생 <head>또는 <body>그것이 링크 유형이 있는지 여부에 따라, 요소 바디 확인 . 예를 들어, stylesheet링크 유형은 body-ok이므로 <link rel="stylesheet">본문에서 허용됩니다. 그러나 이것은 따르는 것이 좋지 않습니다. <link>요소를 신체 콘텐츠와 분리하여에 배치 하는 것이 더 합리적 <head>입니다.

다른 일부 <head>w3schools 와 같이 섹션으로 제한합니다 .

참고 : 이 요소는 헤드 섹션에만 적용되지만 여러 번 나타날 수 있습니다.

테스팅

여기서 테스트했습니다 (바탕 화면 환경, 브라우저). 그리고 그것은 나를 위해 작동합니다. 파일을 작성하십시오 foo.html.

<!DOCTYPE html>
<html>
<head></head>
<body>
    <link href="bar.css" type="text/css" rel="stylesheet">
    <h1 class="test1">Hello</h1>
    <h1 class="test2">World</h1>
</body>
</html>

그런 다음 동일한 디렉토리에있는 CSS 파일 bar.css:

.test1 { 
    color: green;
};

기관 시스템 어딘가에 CSS 파일을 업로드하는 방법이 있다면 가능할 것입니다. 아마도 이런 경우 일 것입니다.


세 번째 옵션 : <style>켜기<body>

인터넷 스타일 시트body태그 에 사용하십시오 . 즉, style액세스 할 수있는 영역 내부 (즉, 사이트가 body아닌 태그 내부가 아닌 태그 내부)에서 태그를 사용하십시오 head. 이것이 Charles SalviaSz 의 대답입니다. 이 옵션을 선택하면 우려 사항을 고려하십시오.


4 번째, 5 번째 및 6 번째 옵션 : JS 방법

경고이 <head>요소는 페이지 요소 수정과 관련이 있습니다 . 어쩌면 이것은 그렇지 않을 것입니다 기관의 시스템 관리자에 의해 허용 될 수있다. 따라서 먼저 허가를받는 것이 좋습니다.

좋아, 권한이 부여되면 전략은 <head> 있습니다. 어떻게? 자바 스크립트 메소드.

4 옵션 : 새 <link><head>

이것은 두 번째 옵션의 다른 버전입니다. 태그 에 외부 스타일 시트 를 사용하십시오 <head>. 즉, 액세스 할 수있는 영역 외부<link>요소를 사용하십시오 (즉, 사이트 내부, 태그 내부가 아니라 태그 내부 ). 이 솔루션은 위에서 언급 한대로 2 차 옵션 솔루션에 대한 MDNw3schools 권장 사항을 준수합니다 . 새로운 객체 가 생성됩니다.bodyheadLink

JS를 통해 문제를 해결하기 위해 여러 가지 방법이 있지만 다음 코드 라인에서 간단한 것을 보여줍니다.

테스팅

여기서 테스트했습니다 (바탕 화면 환경, 브라우저). 그리고 그것은 나를 위해 작동합니다. 파일을 작성하십시오 f.html.

<!DOCTYPE html>
<html>
<head></head>
<body>
    <h1 class="test1">Hello</h1>
    <h1 class="test2">World</h1>
    <script>
        // JS code here
    </script>
</body>
</html>

script태그 내부 :

var newLink = document.createElement("link");
newLink.href = "bar.css";
newLink.rel = "stylesheet";
newLink.type = "text/css";
document.getElementsByTagName("head")[0].appendChild(newLink);

그런 다음 CSS 파일의 동일한 디렉토리에서 bar.css(두 번째 옵션에서와 같이) :

.test1 { 
    color: green;
};

내가 이미 말했듯이 : 기관 시스템 어딘가에 CSS 파일을 업로드하는 방법이 있다면 가능할 것입니다.

5 옵션 : 새 <style><head>

태그 에 새로운 내부 스타일 시트 를 사용하십시오 <head>. 즉, 액세스 할 수있는 영역 외부 (즉, 태그가 아닌 사이트 와 태그 내부 에있는 새 <style>요소 )를 사용하십시오. 새로운 객체 가 생성됩니다.bodyheadStyle

이것은 JS를 통해 해결됩니다. 다음은 간단한 방법 중 하나입니다.

테스팅

여기서 테스트했습니다 (바탕 화면 환경, 브라우저). 그리고 그것은 나를 위해 작동합니다. 파일을 작성하십시오 foobar.html.

<!DOCTYPE html>
<html>
<head></head>
<body>
    <h1 class="test1">Hello</h1>
    <h1 class="test2">World</h1>
    <script>
        // JS code here
    </script>
</body>
</html>

script태그 내부 :

var newStyle = document.createElement("style");
newStyle.innerHTML = 
    "h1.test1 {"+
        "color: green;"+
    "}";
document.getElementsByTagName("head")[0].appendChild(newStyle);

여섯 번째 옵션 : 기존 사용 <style> 에를<head>

태그 에 기존 내부 스타일 시트 를 사용하십시오. <head>즉, 액세스 할 수있는 영역 외부 에있는 <style>요소 ( 즉, 태그 가 아닌 사이트 와 태그 내부에 있음 )를 사용하십시오. 새 객체가 생성되거나 객체 가 사용됩니다 (여기에서 채택한 솔루션 코드에서).bodyheadStyleCSSStyleSheet

이것은 어느 시점에서 위험합니다. 첫째 , 일부 <style> 객체 가 없을 수 있기 때문 입니다. 이 솔루션을 구현하는 방식에 따라 undefined반품 이 발생할 수 있습니다 (시스템은 외부 스타일 시트를 사용할 수 있음 ). 둘째 , 시스템 디자인 작성자의 작업 (저작권 문제)을 편집하기 때문입니다. 셋째 , 기관의 IT 안전 정책에서는 허용되지 않을 수 있습니다. 따라서 다른 JS 솔루션에서와 같이이 작업을 수행 할 수있는 권한을 요청하십시오. .

다시 권한이 부여되었다고 가정합니다.

이 방법으로 사용할 수있는 방법의 일부 제한 사항을 고려해야 insertRule()합니다.. 제안 된 솔루션은 기본 시나리오와 첫 번째 작업을 사용합니다.stylesheet 일부 합니다.

테스팅

여기서 테스트했습니다 (바탕 화면 환경, 브라우저). 그리고 그것은 나를 위해 작동합니다. 파일을 작성하십시오 foo_bar.html.

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <h1 class="test1">Hello</h1>
    <h1 class="test2">World</h1>
    <script>
      // JS code here
    </script>
  </body>
</html>

script태그 내부 :

function demoLoop(){ // remove this line
    var elmnt = document.getElementsByTagName("style");
    if (elmnt.length === 0) {
        // there isn't style objects, so it's more interesting create one
        var newStyle = document.createElement("style");
        newStyle.innerHTML =
            "h1.test1 {" +
                "color: green;" +
            "}";
        document.getElementsByTagName("head")[0].appendChild(newStyle);
    } else {
        // Using CSSStyleSheet interface
        var firstCSS = document.styleSheets[0];
        firstCSS.insertRule("h1.test2{color:blue;}"); // at this way (without index specified), will be like an Array unshift() method
    }
} // remove this too
demoLoop(); // remove this too
demoLoop(); // remove this too

이 솔루션에 대한 또 다른 접근법은 CSSStyleDeclaration객체 ( w3schoolsMDN 문서 )를 사용하고 있습니다. 그러나 시스템 CSS의 기존 규칙을 무시할 위험을 고려하면 흥미롭지 않을 수 있습니다.


일곱 번째 옵션 : 인라인 CSS

인라인 CSS 사용 . 코드 크기로 페이지 크기에 따라 (작성자 또는 다른 할당 된 사람이) 코드를 유지 관리하는 것이 매우 어려울 수 있지만 문제가 해결됩니다.

그러나 기관에서의 역할 컨텍스트 또는 웹 시스템 보안 정책에 따라이 솔루션은 사용 가능한 고유 한 솔루션 일 수 있습니다.

테스팅

파일을 작성하십시오 _foobar.html.

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <h1 style="color: green;">Hello</h1>
    <h1 style="color: blue;">World</h1>    
  </body>
</html>

Gagan의 질문에 엄격히 대답

브라우저는 연속적이지 않은 CSS를 어떻게 렌더링해야합니까?

  1. 페이지의 모든 CSS 스타일을 사용하여 일부 데이터 구조를 생성하고 렌더링에 사용합니까?
  2. 아니면 보이는 순서대로 스타일 정보를 사용하여 렌더링합니까?

(견적 조정)

보다 정확한 답변을 위해 다음 기사를 Google에 제안합니다.

  • 브라우저 작동 방식 : 최신 웹 브라우저의 비하인드 스토리
  • 렌더 트리 구성, 레이아웃 및 페인트
  • 웹 페이지를 "렌더링"한다는 것은 무엇을 의미합니까?
  • 뒤에서 브라우저 렌더링 작동 방식
  • 렌더링-HTML 표준
  • 10 렌더링 — HTML5

+1 스크립트 태그를 포함하고 자바 스크립트를 사용하여 바보 같은 WYSIWYG CMS 편집기를위한 완벽한 법적 HTML을 추가하는 것이 좋습니다
djolf

1

이것은 HTML이 유효하지 않기 때문에 결과에 영향을 미치지 않습니다 ... 단순히 HTML이 표준을 준수한다는 것을 의미합니다 (단순히 조직 목적으로). 유효하기 위해 다음과 같이 작성했을 수 있습니다.

<html>
<head>
<style type="text/css">
  p.first {color:blue}
  p.second {color:green}
</style>
</head>
<body>
<p class="first" style="color:green;">Hello World</p>
<p class="second" style="color:blue;">Hello World</p>

브라우저가 마지막 스타일을 적용한다고 생각합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.