인라인 CSS에서 CSS : before 및 : after 유사 요소를 사용합니까?


141

나는 인라인 CSS (에 즉, CSS와 HTML 전자 메일 서명 만들고 있어요 style특성), 그리고는 그것이 사용할 수 있는지 여부에 대한 호기심 :before:after의사 요소.

그렇다면 인라인 CSS로 이와 같은 것을 어떻게 구현합니까?

td { text-align: justify; }
td:after { content: ""; display: inline-block; width: 100%; }

8
인라인 스타일을 사용하여 유사 클래스 또는 유사 요소를 대상으로 지정할 수 없습니다.
데이비드는 모니카


2
@Champ : 의사 요소와 의사 클래스는 같은 것이 아니기 때문에 같은 질문이 아닙니다. 나는 여기에 나 자신의 답변을 작성했다.
BoltClock

답변:


123

의사 요소에 인라인 스타일을 지정할 수 없습니다.

이것은 의사 클래스와 같은 의사 요소 ( 이 다른 질문에 대한 나의 대답 참조 )가 HTML에서 표현할 수없는 문서 트리의 추상화로 선택기를 사용하여 CSS에서 정의되기 때문입니다. style반면에 인라인 속성은 특정 요소에 대해 HTML 내에 지정됩니다.

인라인 스타일은 HTML에서만 발생할 수 있기 때문에 정의 된 HTML 요소에만 적용되며 생성 된 의사 요소에는 적용되지 않습니다.

여담으로,이 관점에서 유사 요소 및 가상 클래스 사이의 주된 차이는 기본적으로 유전되는 특성 인 상속 에 의해 :before:after가상 클래스 스타일은 단지 전혀 적용되지 않는 반면, 상기 발생 소자로부터. 예를 들어 요소 text-align: justify의 인라인 스타일 속성에 배치하면이 속성 td이 상속됩니다 td:after. 주의 사항은 td:after인라인 스타일 속성으로 선언 할 수 없다는 것입니다. 스타일 시트에서해야합니다.


37

위에서 언급했듯이 : CSS 의사 클래스 /-요소 인라인을 호출 할 수 없습니다. 내가 지금 한 일은 요소에 고유 식별자 f.ex를 지정하는 것입니다. ID 또는 고유 클래스 피팅 <style>요소를 작성

<style>#id29:before { content: "*";}</style>
<article id="id29">
  <!-- something -->
</article>

애매하지만, 어떤 인라인 CSS가 아닙니다 ..?


6
인라인 CSS가 아닙니다. 인라인 CSS를 사용하려면 style = ""속성이 개별 HTML 요소로 전달되어야합니다. <style> 태그의 모든 항목을 제거하는 CSS 형식의 Gmail을 Gmail로 보내는 데 일반적으로 필요합니다. 오토메이터에 대해서는 여기 ( zurb.com/ink/inliner.php )를 참조하십시오
kez

나는 이것이 의사 요소를 인라인 할 수있는 가장 가까운 것이라고 생각합니다. 더 좋은 방법은 새로운 scoped스타일과 :root유사 클래스를 사용하는 것 <article><style scoped>:root:before { content: "*";}</style><!-- something --></article>입니다.
벤 J

3
수정 : :scope의사 클래스를 사용하십시오 .<article><style scoped>:scope:before { content: "*";}</style><!-- something --></article>
Ben J

1
이 내용은 매우 새롭고 구현되지 않았으며 변경 될 수 있습니다. 현재 HTML 사양 ( scoped 스타일)CSS 사양 ( :scope)에 있습니다. 나는 더 분명 했어야했다.
벤 J

<style> ... </ style> 태그를 사용하는 것을 인라인 CSS가 아니라 내부 또는 내장 CSS라고합니다.
James Anderson Jr.

14

인라인으로 데이터를 사용할 수 있습니다

 <style>   
 td { text-align: justify; }
 td:after { content: attr(data-content); display: inline-block; width: 100%; }
</style>

<table><tr><td data-content="post"></td></tr></table>

2
의사 요소 data-content와 같은 속성을 인쇄합니다 content. 인라인 CSS로 의사 요소를 만드는 것과는 아무런 관련이 없습니다.
Nils Kaspersson

4
인라인 CSS에 의사 선택기를 적용하는 방법을 찾고 여기에 왔으며이 답변은 동일한 것을 달성하는 다른 방법을 보여주었습니다. 콘텐츠는 동적으로 생성 된 많은 가능한 옵션을 기반으로해야했기 때문에 가능한 모든 결과에 대해 별도의 CSS 선택기 힙을 작성하는 것은 실용적이지 않았습니다.
wunth

4
이것은 실제로 동적 콘텐츠를 사후 콘텐츠에 추가하려는 사람에게 매우 좋은 답변입니다. 이 문제와 관련이 없을 수도 있지만 Google을 통해이 솔루션을 검색 할 때이 질문이 표시됩니다.
Aleks

설명서를 참조하십시오 .
user4642212

8

David Thomas가 말한 것처럼 인라인 CSS의 의사 클래스 또는 의사 요소 를 대상으로 할 수는 없습니다 . 자세한 내용은 볼 의해 답변을 BoltClock 에 대한 의사 클래스를

아니요. style 속성은 주어진 HTML 요소에 대한 스타일 속성 만 정의합니다. 의사 클래스는 선택기 패밀리의 멤버이며 속성에서 발생하지 않습니다 .....

의사 요소에 대해서도 같은 것을 쓸 수 있습니다

아니요. style 속성은 주어진 HTML 요소에 대한 스타일 속성 만 정의합니다. 의사 클래스와 의사 요소는 선택기 패밀리의 멤버이며 속성에서 발생하지 않으므로 인라인으로 스타일을 지정할 수 없습니다.


질문에 대한 답변과 의견을 참조하십시오.
BoltClock

예, 동일하지 않습니다. 그러나 인라인으로 사용할 수없는 이유는 동일합니까?
챔피언

답은 비슷하지만 질문은 매우 다릅니다.
BoltClock

6

인라인 CSS에서는 의사 요소를 만들 수 없습니다.

그러나 스타일 시트에서 의사 요소를 만들 수있는 경우 인라인 스타일을 부모 요소로 설정 한 다음 inherit 키워드를 사용하여 의사 요소의 스타일을 지정하여 인라인 스타일을 지정하는 방법이 있습니다.

<parent style="background-image:url(path/to/file); background-size:0px;"></p>

<style> 
   parent:before{
      content:'';
      background-image:inherit;
      (other)
   }
</style>

때때로 이것은 유용 할 수 있습니다.


5

예, 가능합니다 . 이후 또는 이전에 추가 한 요소에 인라인 스타일을 추가하십시오. 예

 <style>
     .horizontalProgress:after { width: 45%; }
 </style><!-- Change Value from Here -->

 <div class="horizontalProgress"></div>

22
이것은 인라인 스타일 시트입니다. 인라인 CSS가 아닙니다.
Esger

4
이것이 실제 질문을 해결하지 못한다는 사실 외에는이 코드가 잘못 ::after되었으며 ::before의사 요소 에는 기본적으로 아무것도없는 content: value기본값이 필요합니다 content:none.
zer00ne

<style> ... </ style> 태그를 사용하는 것을 인라인 CSS가 아니라 내부 또는 내장 CSS라고합니다.
James Anderson Jr.

1

앞에서 언급했듯이 의사 클래스 스타일 지정에는 인라인 요소를 사용할 수 없습니다 . 의사 전후 클래스는 실제 요소가 아닌 요소의 상태입니다. 이를 위해 JavaScript 만 사용할 수 있습니다.


그것들은 상태가 아닌 의사 요소 입니다.
user4642212

0

HTML을 제어 할 수 있으면 유사 요소 대신 실제 요소를 추가 할 수 있습니다. : before 및 : after 유사 요소는 열린 태그 바로 뒤에 또는 닫기 태그 바로 앞에 렌더링됩니다. 이 CSS에 해당하는 인라인

td { text-align: justify; }
td:after { content: ""; display: inline-block; width: 100%; }

다음과 같이 될 것입니다 :

<table>
<tr>
<td style="text-align: justify;">
TD Content
<span class="inline_td_after" style="display: inline-block; width: 100%;"></span>
</td>
</tr>
</table>

명심하십시오; "실제"앞뒤 요소 및 인라인 CSS가있는 항목은 페이지 크기를 크게 늘리고 외부 CSS 및 유사 요소가 가능하게하는 페이지로드 최적화를 무시합니다.


0

당신이 사용할 수있는

parent.style.setProperty("--padding-top", (height*100/width).toFixed(2)+"%");

CSS로

el:after{
  ....
  padding-top:var(--padding-top, 0px);
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.