CSS를 사용하여 텍스트 삽입


207

저는 CSS를 처음 접했고 텍스트의 스타일과 서식을 변경하는 데 사용했습니다.

이제 아래와 같이 텍스트를 삽입하는 데 사용하고 싶습니다.

<span class="OwnerJoe">reconcile all entries</span>

다음과 같이 표시 할 수 있기를 바랍니다.

Joe의 작업 : 모든 항목 조정

즉, 단순히 "Owner Joe"클래스이기 때문에 텍스트 Joe's Task:를 표시 하고 싶습니다 .

나는 다음과 같은 코드로 그것을 할 수있다 :

<span class="OwnerJoe">Joe's Task:</span> reconcile all entries.

그러나 그것은 클래스와 텍스트를 지정하는 데 끔찍하게 중복되는 것처럼 보입니다.

내가 원하는 것을 할 수 있습니까?

편집 한 아이디어는 <li>"글 머리 기호"가 "Joe 's Task"텍스트 인 ListItem으로 설정하는 것 입니다. 다양한 글 머리 기호 스타일과 글 머리 기호 이미지를 설정하는 방법에 대한 예를 봅니다. 목록 글 머리 기호에 작은 텍스트 블록을 사용할 수 있습니까?


1
<li> 아이디어는 좋은 습관이 아닙니다. 정말로 이것을 원한다면 대신 템플릿 언어를 살펴보십시오.
Gary

1
CSS3를 사용하여 같은 사운드 : 이전에 : (당신이 OwnerJoe, OwnerJane 등의 CSS 문을 추가해야하기 때문에) 의사 요소 후 정말 그냥 CSS 토지에 중복 이동됩니다
매트 베크

2
@Matt Beckman : 저도 괜찮습니다. 각 사용자마다 CSS 블록을 쉽게 정의 할 수 있습니다. HTML에서 반복해서 반복하는 것은 필자의 경우 과도하게 보입니다.
abelenky

1
더 넓은 청중을 위해 이것을 실제로 사용하는 것은 label.required:before {content: "* ";}아마도 필수 필드 앞에 별표를 추가하는 것 같습니다.
Patrick

답변:


317

CSS2 가능 브라우저 (모든 주요 브라우저, IE8 +)가 필요합니다.

.OwnerJoe:before {
  content: "Joe's Task:";
}

그러나 나는 이것을 위해 자바 스크립트를 사용하는 것이 좋습니다. jQuery로 :

$('.OwnerJoe').each(function() {
  $(this).before($('<span>').text("Joe's Task: "));
});

4
콜론 뒤에 공백이 있어야합니다.
시스템 일시

7
초기 테스트는 내용 속성이 잘 작동 함을 나타냅니다. 다른 사람이 할 수 없다고 대답 할 때 답을 찾은 것을 축하합니다. :)
abelenky

8
이전 IE를 포괄하기 위해 모든 브라우저에서 CSS를 동일하게 유지할 수 있도록 code.google.com/p/ie7-js 를 조건부로 포함 할 수 있습니다. 표준에 더 가까운 jQuery의 대안입니다.
시스템 일시 중지

15
왜 자바 스크립트를 사용하는 것이 좋을까요?
Rikki

재미있는 : 하나 또는 두 개의 콜론, 예와 함께 작동하도록 보인다 .OwnerJoe:before.OwnerJoe::before
미스터 케네디

40

모든 사람이 좋아하는 jQuery를 사용한 대답에는 중대한 결함이 있습니다. Martin Hansen은 HTML5 data-*속성 을 사용하는 올바른 아이디어를 가지고 있다고 생각 합니다. 아포스트로피를 올바르게 사용할 수도 있습니다.

html :

<div class="task" data-task-owner="Joe">mop kitchen</div>
<div class="task" data-task-owner="Charles" data-apos="1">vacuum hallway</div>

CSS :

div.task:before { content: attr(data-task-owner)"'s task - " ; }
div.task[data-apos]:before { content: attr(data-task-owner)"' task - " ; }

산출:

Joe's task - mop kitchen
Charles' task - vacuum hallway

19
jQuery와 대조적으로 CSS 컨텐츠를 사용하는 것에 대한 흥미로운 부작용은 content 속성이 제공하는 텍스트를 선택할 수 없기 때문에 바람직하지 않을 수도 있다는 것입니다 ....
Jeff

텍스트가 페이지 레이아웃의 일부이고 컨텐츠의 일부가 아닌 경우 CSS가 올바른 위치 일 수 있습니다. 예를 들어 모든 페이지에서 페이지 제목이 연두색 바탕에 자주색으로 "Hello World"라는 단어가되도록하려면 의미가 있습니다. 페이지 제목을 변경하는 데 필요한 것은 단일 CSS 파일을 편집하는 것입니다. HTML로 텍스트를 가지고 있다면 사이트의 모든 단일 페이지를 편집하고 웹 응용 프로그램도 변경해야합니다.
casgage

28

CSS content 속성의 attr () 함수도 확인하십시오. 요소의 주어진 속성을 텍스트 노드로 출력합니다. 다음과 같이 사용하십시오.

<div class="Owner Joe" />

div:before {
  content: attr(class);
}

또는 새로운 HTML5 사용자 정의 데이터 속성으로도 :

<div data-employeename="Owner Joe" />

div:before {
  content: attr(data-employeename);
}

2
그것은 더 나은 아이디어입니다-콘텐츠를 표시하기 위해 CSS 클래스를 만드는 아이디어가 싫어요. 결국 SQL 쿼리를 기반으로 CSS를 동적으로 생성 할 수 있습니다. 선택기를로 교체합니다 div[data-employeename]:before.
Johnny5

6

다음과 같이 코딩하십시오.

.OwnerJoe {
  //other things here
  &:before{
    content: "Joe's Task: ";
  }
}

18
이것은 유효한 CSS는 아니지만 Sass 구문입니다.
Asfand Qazi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.