CSS 내용을 사용하여 HTML 엔터티 추가


1013

CSS content 속성을 사용하여 HTML 엔터티를 어떻게 추가 합니까?

이와 같은 것을 사용  하면 비 공백 공간 대신 ​​화면에 인쇄 됩니다.

.breadcrumbs a:before {
    content: ' ';
}

5
다른 의미로, CSS를 사용하여 컨텐츠를 추가하면 우려의 분리를 위반하는 반면 CSS는 스타일 정의만을위한 것입니다. CSS를 비활성화하면 전체 마크 업이 망가지기 때문에 접근성 관점에서 피하는 것이 좋습니다. 그러나이 기술을 사용하여 이미지를 추가하는 것이 좋습니다.
Questzen

95
때에 따라 다르지. 이 경우에는 프레젠테이션 용입니다. html에 ">"를 넣는 것은 SoC를 "위반"합니다.
mathieu

2
그냥 질문, 당신은 순서 목록으로 더 나을 것이라고 생각하십니까? 내 말은, 그것은 주문 목록이 아닌가?
alex

3
@questzen-CSS :after를 사용 하여 정렬 된 열의 asc / desc 정렬 표시기를 설정 하는 것이 완벽하게 수용 가능하고 좋은 형식이라고 생각합니다 .
Josh M.

9
사람들이 SoC 원칙에 열광하는 것을 보았습니다. 하늘, 어떤 종류의 컨텐츠가 ">"표시입니까?! 자비를 베푸소서! 이 맥락에서 단지 아이콘, 위젯, 글 머리 기호입니다. 나에게 콘텐츠는 검색 할 수있는 것입니다.
user776686

답변:


1063

이스케이프 된 유니 코드를 사용해야합니다.

처럼

.breadcrumbs a:before {
    content: '\0000a0';
}

자세한 정보 : http://www.evotech.net/blog/2007/04/named-html-entities-in-numeric-order/


57
선행 0은 불필요합니다 ( CSS 2.1 : 4.3.7 문자열 참조) . '>\a0'충분하다.
PointedEars

18
@dlamblin 또한 문자가 이스케이프 시퀀스의 일부로 안정적 으로 해석되지 않도록하려면 표준 공백을 추가하십시오 : '>\a0 bc'가 표시됩니다 > bc.
PointedEars

18
내 도구 amp-what.com/#q=%3E 는 "CSS"모드를 제공합니다. 페이지 하단에서 "css"를 선택하십시오. 위의 CSS 참조에 따라 모호 할 때 공백으로 구분해야합니다.
ndp

@mathieu 'content'를 사용하여 이미지를 대신 추가 할 수 있습니까? 그냥 궁금해
weia design

1
@Adam, 아니오, 이미지를 추가하려면 "background-image"를 사용하고 display : inline-block; 너비 : 123px; 높이 : 123px; (정확한 너비 / 높이 사용)
Nathan JB

177

CSS는 HTML이 아닙니다. HTML에서  명명 된 문자 참조 입니다. 십진수 숫자 참조와 같습니다  . 160은 유니 코드 (또는 UCS-2 ; HTML 4.01 사양 참조)의 문자 의 십진 코드 포인트 입니다 . 해당 코드 포인트의 16 진 표현은 U + 00A0 (160 = 10 × 16 1 + 0 × 16 0 )입니다. 유니 코드 코드 차트NO-BREAK SPACE 문자 데이터베이스 있습니다.

CSS에서는 문자 코드 포인트의 16 진수 값을 기반으로하는 문자에 유니 코드 이스케이프 시퀀스를 사용해야합니다. 그래서 당신은 작성해야합니다

.breadcrumbs a:before {
  content: '\a0';
}

이스케이프 시퀀스가 ​​문자열 값에서 마지막에 오는 한 작동합니다. 문자가 뒤 따르면 오해를 피하는 두 가지 방법이 있습니다.

a) (다른 사람들이 언급) 이스케이프 시퀀스에는 정확히 6 자리 16 진수를 사용하십시오.

.breadcrumbs a:before {
  content: '\0000a0foo';
}

b) 이스케이프 시퀀스 뒤에 공백 문자 (예 : 공백)를 추가하십시오.

.breadcrumbs a:before {
  content: '\a0 foo';
}

( f16 진 숫자 이므로 여기에서 \a0f의미 GURMUKHI LETTER EE하거나 적절한 글꼴이있는 경우 ਏ입니다.)

구분 공백은 무시되고  foo여기에 표시된 공백은 NO-BREAK SPACE문자가됩니다.

공백 접근 ( '\a0 foo')은 6 자리 접근 ( '\0000a0foo')에 비해 다음과 같은 장점이 있습니다 .

  • 앞에 오는 0이 필요하지 않고 숫자를 세지 않아도되기 때문에 입력 하기가 더 쉽습니다 .
  • 그것은 쉽게 읽을 수이스케이프 시퀀스와 다음 텍스트 사이에 공백이 있고 숫자를 세지 않아도되기 때문에 .
  • 그것 더 적은 공간을 필요로 앞에 0이 필요하지 않기 때문에;
  • 그것은이다 위쪽으로 호환 미래의 U + 10FFFF 넘어 유니 코드 지원 코드 포인트가 CSS 사양의 수정을 필요로하기 때문에.

따라서 이스케이프 문자 뒤에 공백을 표시하려면 스타일 시트에서 공백을 사용 하십시오.

.breadcrumbs a:before {
  content: '\a0  foo';
}

또는 명시 적으로 작성하십시오.

.breadcrumbs a:before {
  content: '\a0\20 foo';
}

자세한 내용은 CSS 2.1, "4.1.3 문자 및 대소 문자"섹션 을 참조하십시오.


트릭 "이스케이프 문자 뒤에 공백을 표시하는"만 언급해야 +1 있다는 NBSP하고 패배 NBSP의 목적의 공간 종류 추가)
TWiStErRob

@TWiStErRob 아니, 줄 바꿈하지 않는 공백 문자의 조합 파괴 공백 문자 다음에 (또는 그는 반대)의 폭에 대한 간격이 표시됩니다 두 개 이상의하면서, 공백 문자를 그대로 공백 문자 만의 간격을 표시합니다 CSS 속성이 달리 선언 하지 않는 한 레이아웃 엔진의 파서 인 공백 문자 의 너비는 줄 바꿈을 포함하여 연속적인 공백 을 공백 문자로 축소 합니다. white-space
PointedEars

그렇습니다, 나는 붕괴에 대해 알고 있지만 nbsp의 요점은 그것이 깨지지 않는 것입니다. 단어 문자도 기본적으로 깨지지 않습니다. 따라서 깨지지 않는 공간 옆에 나누기 공간을 추가하면 의미가 없습니다. 최종 결과는 파괴. 에 대해 이야기하고 white-space: normal있습니다.
TWiStErRob

@TWiStErRob 내 답변을 더 자세히 읽으십시오. “이스케이프 된 문자 다음에 공백을 표시” 의 입니다. 원래 코드에는 NO-BREAK SPACE문자가 있으므로 이스케이프 시퀀스를 사용했습니다. 다른 이스케이프 시퀀스를 선택할 수 있습니다. 필요한 경우을 선언 할 수도 white-space: nowrap있습니다.
PointedEars

81

업데이트 : PointedEars는  모든 CSS 상황에서 올바른 스탠드
'\a0 '는 공간이 16 진수 문자열의 종결 자이며 이스케이프 된 시퀀스에 흡수된다는 것을 암시한다고 언급합니다. 그는 아래에서 설명하고 고친 문제에 대한 좋은 해결책처럼 들리는 이 권위있는 설명 을 지적했다 .

당신이해야 할 일은 이스케이프 된 유니 코드를 사용하는 것입니다. 당신이 말한 것에도 불구하고 CSS 내 \00a0에서 완벽한 스탠드 인은 아닙니다  . 그래서 시도하십시오 :

content:'>\a0 ';          /* or */
content:'>\0000a0';       /* because you'll find: */
content:'No\a0 Break';    /* and */
content:'No\0000a0Break'; /* becomes No Break as opposed to below */

구체적 \0000a0으로 as를 사용 합니다  . mathieu와 millikin이 제안한대로 시도하면 :

content:'No\00a0Break'   /* becomes No਋reak */

B를 16 진수 이스케이프 문자로 가져갑니다. 0-9a-fA-F에서도 마찬가지입니다.


6
다음과 같이 이스케이프 시퀀스 뒤에 공백을 넣어야합니다 '\a0 Break'. '\0000a0Break'입니다 하지 신뢰할.
PointedEars

@PointedEars 흥미 롭기 때문에이 공간은 종결 자이며 문자열에 포함되지 않습니까?
dlamblin

2
CSS 2.1, "4.1.3 문자 및 대소 문자"섹션을 참조하십시오 . 또한 CSS 2.1에 따라 접근 방식이 안정적이어야 함을 보여줍니다. 그러나 공백 접근 방식이 더 깨끗하고 (상위 호환 가능) 발자국이 더 작습니다.
PointedEars

47

CSS에서는 HTML 엔터티 대신 유니 코드 이스케이프 시퀀스를 사용해야합니다. 이것은 문자의 16 진수 값을 기반으로합니다.

기호를 16 진수로 변환하는 가장 쉬운 방법은 ▾ ( ▾) \25BE에서 Microsoft calculator =)를 사용하는 것입니다.

예. 프로그래머 모드 활성화, 십진법 켜기, 입력9662 을 켜고을 한 다음 16 진수로 전환하면 얻을 수 25BE있습니다. 그런 다음 \시작 부분에 백 슬래시 를 추가하십시오 .


4
완전히 유용하지만 실제로 질문에 대답하지 않으므로 질문에 대한 주석으로 더 좋습니다.
dlamblin

1
오른쪽을 가리키는 검은 색 작은 화살표 (▸ \25B8 ▸ ▸) ftw. 자세한 내용은 en.wikipedia.org/wiki/Geometric_Shapes 를 참조하십시오 .
Joel Purra

2Joel Purra, 더 많은 시간에 Wiki를 읽으십시오. 당신은 기호를 착각했습니다.
netgoblin

@netgoblin : 어떻게 그렇게? 나는 검은 색의 오른쪽 작은 화살표를 좋아합니다.
Joel Purra

1
나는이 graphemica.com을 사용 하여 십진법, 16 진법 등을 얻을 수 있습니다
Mike

34

비 공백 공간에는 16 진 코드를 사용하십시오. 이 같은:

.breadcrumbs a:before {
    content: '>\00a0';
}

17

nbsp열린 CharMap 을 붙여 넣고 문자 160을 복사 하는 방법이 있습니다 . 그러나이 경우에는 다음과 같이 패딩으로 간격을 둡니다.

.breadcrumbs a:before { content: '>'; padding-right: .5em; }

display:inline-block그러나 빵 부스러기 또는 무언가 를 설정해야 할 수도 있습니다 .


4
nbsp를 붙여 넣는 대신 엔터티를 사용하여 미래의 관리자에게 공간과 다르다는 것이 분명합니다.
nickf December

2
반면에, 빵 부스러기는 예상대로 즉, 시각적 기호가 아닌 빵 부스러기와 인라인이어야합니다. 적어도 구글이 사이트 이동 경로를보고 검색 엔진의 업체 정보 아래에 나열하도록하려면
Dementic

10

예를 들어 :

http://character-code.com/arrows-html-codes.php

예 : 캐릭터를 선택하려면 "& # 8620" "& # x21ac"를 선택했습니다 ( HEX 값 사용 )

.breadcrumbs a:before {
    content: '\0021ac';
}

결과 : ↬

그게 다야 :)


내용을 사용했습니다 : '\ 10095'; . 그러나 출력이 표시되지 않습니다. 아이콘 대신 사각형이 표시됩니다.
kapil December

0

나는 이것이 꽤 오래된 게시물이라는 것을 알고 있지만 간격이 모두 끝난 후에는 왜 간단하지 않습니까?

.breadcrumbs a::before {
    content: '>';
    margin-left: 8px;
    margin-right: 8px;
}

나는이 방법을 전에 사용했다. 내 테스트에서 ">"를 사용하여 다른 줄에 완벽하게 줄 바꿈됩니다.


-2

두 가지 방법이 있습니다.

  • HTML에서 :

    <div class="ics">&#9969;</div>

이로 인해 result

  • CSS에서 :

    .ics::before {content: "\9969;"}

HTML 코드로 <div class="ics"></div>

이로 인해 in


정답은 .ics :: before {content : '\ 9969';}
Marco Scarnatto
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.