[css] 인라인 CSS의 나쁜 점은 무엇입니까?

웹 사이트 시작 코드와 예제를 볼 때 CSS는 항상 “main.css”, “default.css”또는 “Site.css”와 같은 별도의 파일에 있습니다. 그러나 페이지를 코딩 할 때 이미지에 “float : right”를 설정하는 것과 같이 DOM 요소와 함께 CSS를 인라인하는 경향이 종종 있습니다. 나는 이것이 예에서 거의 이루어지지 않기 때문에 이것이 “나쁜 코딩”이라는 느낌을 받는다.

스타일이 여러 객체에 적용되는 경우 “Dry’t Repeat Yourself”(DRY)를 따르고 각 요소에서 참조 할 CSS 클래스에 지정하는 것이 좋습니다. 그러나 다른 요소에서 CSS를 반복하지 않는다면 HTML을 작성할 때 CSS를 인라인하지 않는 이유는 무엇입니까?

질문 : 인라인 CSS를 사용하는 것이 해당 요소에서만 사용될지라도 나쁜 것으로 간주됩니까? 그렇다면 왜 그렇습니까?

예 (이것이 나쁜가요?)

<img src="myimage.gif" style="float:right" />



답변

사이트를 다르게 보이게하려면 100 줄의 코드를 변경해야합니다. 귀하의 예에는 적용되지 않을 수도 있지만 인라인 CSS를 사용하는 경우

<div style ="font-size:larger; text-align:center; font-weight:bold">

페이지 헤더를 나타 내기 위해 각 페이지에서 다음과 같이 유지하는 것이 훨씬 쉽습니다.

<div class="pageheader">  

페이지 헤더가 단일 스타일 시트에 정의되어있어 전체 사이트에서 페이지 헤더의 모양을 변경하려는 경우 CSS를 한 곳에서 변경합니다.

그러나 나는 이단자가되어 당신의 모범에서 아무런 문제가 없다고 말할 것입니다. 단일 이미지의 동작을 대상으로하고 있는데, 아마도 단일 페이지에서 올바르게보아야하므로 실제 CSS를 스타일 시트에 배치하는 것은 너무 과도 할 수 있습니다.


답변

다른 CSS 파일을 갖는 장점은

  1. HTML 페이지를 쉽게 관리
  2. 모양과 느낌으로 쉽게 변경할 수 있으며 페이지에서 많은 테마를 지원할 수 있습니다.
  3. CSS 파일은 브라우저쪽에 캐시됩니다. 따라서 페이지를 새로 고치거나 사용자가 사이트를 탐색 할 때마다 일부 KB 데이터를로드하지 않음으로써 인터넷 트래픽에 약간의 기여를합니다.

답변

빠른 CSS 프로토 타이핑에 대한 html5 접근

또는 : <style>더 이상 태그가 더 이상 머리만을위한 것이 아닙니다!

CSS 해킹

디버깅 중이고 page-css를 수정하고 특정 섹션 만보기 좋게 만들고 싶다고 가정 해 보겠습니다. 빠르고 더럽고 유지 관리 할 수없는 스타일을 인라인으로 만드는 대신 요즘 내가하는 일을 수행하고 단계적으로 접근 할 수 있습니다.

인라인 스타일 속성이 없습니다.

CSS를 인라인으로 만들지 마십시오. <element style='color:red'>즉, 심지어 <img style='float:right'>매우 편리하지만 나중에 실제 CSS 파일에 실제 선택기 특이성을 반영하지 않으며 나중에 유지하면 나중에 유지 관리 부하를 후회하게됩니다.

<style>대신 프로토 타입

인라인 CSS를 사용했을 경우 대신 인 페이지 <style> 요소 를 사용하십시오 . 사용해보십시오! 모든 브라우저에서 잘 작동하므로 테스트하기에 적합하지만 원할 때 / 필요할 때마다 이러한 CSS를 전역 CSS 파일로 우아하게 이동할 수 있습니다! (* 셀렉터는 사이트 수준의 특이성 대신 페이지 수준의 특이성 만 가지므로 너무 일반적 임에주의하십시오) CSS 파일에서와 같이 깨끗합니다.

<style>
.avatar-image{
    float:right
}
.faq .warning{
    color:crimson;
}
p{
    border-left:thin medium blue;
    // this general of a selector would be very bad, though.
    // so be aware of what'll happen to general selectors if they go
    // global
}
</style>

다른 사람의 인라인 CSS 리팩토링

때로는 문제조차 발생하지 않으며 다른 사람의 인라인 CSS를 다루고 있으므로 리팩터링해야합니다. 이것은 또 다른 위대한 사용입니다<style> 페이지 하므로 리팩토링하는 동안 인라인 CSS를 직접 제거하고 클래스 또는 ID 또는 선택기에서 바로 페이지에 배치 할 수 있습니다. 선택기에주의를 기울이면 복사 및 붙여 넣기만으로 최종 결과를 전역 CSS 파일로 이동할 수 있습니다.

CSS의 모든 비트를 즉시 전역 CSS 파일 로 전송하는 것은 약간 어렵지만 인 페이지 <style>요소를 사용하면 대안이 있습니다.


답변

다른 답변들 외에 … 국제화 .

내용의 언어에 따라 요소의 스타일을 조정해야하는 경우가 종종 있습니다.

한 가지 분명한 예는 오른쪽에서 왼쪽으로 쓰는 언어입니다.

코드를 사용했다고 가정 해 봅시다.

<img src="myimage.gif" style="float:right" />

이제 웹 사이트에서 rtl 언어를 지원하기를 원한다고 가정 해보십시오.

<img src="myimage.gif" style="float:left" />

따라서 두 언어를 모두 지원하려면 인라인 스타일을 사용하여 부동 소수점 값을 할당 할 수 없습니다.

CSS를 사용하면 lang 속성으로 쉽게 처리됩니다.

따라서 다음과 같이 할 수 있습니다.

img {
  float:right;
}
html[lang="he"] img { /* Hebrew. or.. lang="ar" for Arabic etc */
  float:left;
}

데모


답변

인라인 CSS는 항상 연결된 스타일 시트 CSS보다 항상 우선합니다. 적절한 계단식 스타일 시트를 작성하고 작성하면 속성이 제대로 적용되지 않는 경우 이로 인해 엄청난 두통이 발생할 수 있습니다.

CSS는 표현을 마크 업에서 분리하는 것에 관한 것입니다. 둘을 함께 얽 으면 상황을 이해하고 유지하기가 훨씬 더 어려워집니다. 서버 측 컨트롤러 코드에서 데이터베이스 코드를 분리하는 것과 유사한 원리입니다.

마지막으로 20 개의 이미지 태그가 있다고 가정하십시오. 떠 다니도록 결정하면 어떻게됩니까?


답변

CSS의 핵심은 내용과 내용을 분리하는 것입니다. 따라서 귀하의 예에서 콘텐츠와 프레젠테이션을 혼합하고 있으며 이는 “유해한 것으로 간주 될 수 있습니다”.


답변

인라인 CSS를 사용하면 유지 관리가 훨씬 어렵습니다.

변경하려는 모든 속성에 대해 인라인 CSS를 사용하려면 명확하게 정의되고 잘 구성된 CSS 파일을 찾는 대신 해당 HTML 코드를 찾아야합니다.