텍스트를 CSS로 바꾸려면 어떻게해야합니까?


321

다음과 같은 방법을 사용하여 텍스트를 CSS로 바꾸려면 어떻게해야합니까?

.pvw-title img[src*="IKON.img"] { visibility:hidden; }

대신에 ( img[src*="IKON.img"] ) 대신 텍스트를 대신 할 수있는 것을 사용해야합니다.

[ ]작동 시키려면 사용해야 합니다.

<div class="pvw-title">Facts</div>

" Facts " 를 교체해야합니다 .


솔직히 이것을 위해 자바 스크립트를 사용하는 것이 가장 좋습니다.
Sir

Javascript를 사용하려면 DOM을로드해야하므로 FOUC가 있습니다. HTML 서버 측을 생성 하지 않고도 FOUC를 피하면서 텍스트를 쿼리 문자열에서 추출한 내용으로 바꾸고 싶습니다 (따라서 HTML을 적극적으로 캐시하고 CDN에서 제공 할 수있게합니다).
nemequ

32
문제는 CSS로 어떻게 하는가입니다. 내가 하고 단지 나를 내가 도착 이유 CSS, 변경할 수있는 CMS를 사용하여 대답에 대한 인터넷 검색을하는 도중, 그리고 다른 하나를. 그렇기 때문에 우리는 왜 질문자의 상황이 다른지 묻는 대신 질문에 대답했습니다.
felwithe

답변:


291

또는 <span>다음과 같이 'Facts'를 a 로 감쌀 수 있습니다.

<div class="pvw-title"><span>Facts</span></div>

그런 다음 사용하십시오.

.pvw-title span {
  display: none;
}
.pvw-title:after {
  content: 'whatever it is you want to add';
}

52
좋지만 CSS가 아닌 HTML로 변경되었습니다.
mikemaccana

22
때로는 유일한 옵션
locrizak

4
스팬 {표시 : 없음; } 의사 요소도 숨겨야합니다. 가시성을 사용해야합니다. 대신 숨겨

2
디스플레이 : 없음; 그리고 가시성 : 숨겨진; 둘 다 의사 요소를 숨기십시오
Facundo Colombier

10
@Mathew는 범위를 숨기고 있지만 의사 요소를 div에 추가하므로 의사 요소를 숨기지 않아야합니다 (가시성 또는 표시 속성을 사용하여)
dewtea

249

의무 : 이것은 해킹입니다 : CSS는이 작업을 수행하기에 적합한 장소는 아니지만 일부 상황에서-예를 들어 CSS로만 사용자 정의 할 수있는 iframe에 타사 라이브러리가 있습니다-이러한 종류의 해킹은 유일한 옵션입니다 .

CSS를 통해 텍스트를 바꿀 수 있습니다. CSS를 사용하여 녹색 버튼을 'hello'로 바꾸고 'goodbye'라고 표시된 빨간 버튼으로 바꿉니다.

전에:

여기에 이미지 설명을 입력하십시오

후:

여기에 이미지 설명을 입력하십시오

http://jsfiddle.net/ZBj2m/274/ 참조라이브 데모는 를 .

녹색 버튼은 다음과 같습니다.

<button>Hello</button>

button {
  background-color: green;
  color: black;
  padding: 5px;
}

이제 원래 요소를 숨기고 나중에 다른 블록 요소를 추가하십시오.

button {
  visibility: hidden;
}
button:after {
  content:'goodbye'; 
  visibility: visible;
  display: block;
  position: absolute;
  background-color: red;
  padding: 5px;
  top: 2px;
}

노트 :

  • 우리는 이것을 명시 적으로 블록 요소로 표시해야합니다 .'after '요소는 기본적으로 인라인입니다.
  • 의사 요소의 위치를 ​​조정하여 원래 요소를 보정해야합니다.
  • 원래 요소를 숨기고를 사용하여 의사 요소를 표시해야합니다 visibility. display: none원래 요소에 대한 참고 사항 이 작동하지 않습니다.

2
이것은 10에서 작동하지 않습니다. 수정하려면 어떻게해야합니까?
Solmead

49
display: none;::after누군가“호기심이 생겼을 때를 대비하여“이 요소 내부에 있지만 결국에는”을 의미 하기 때문에 작동하지 않습니다 .
Ry-

4
불행히도 "수정 된"버튼은 더 이상 버튼처럼 작동하지 않습니다. 버튼에는 적용되지 않는 좋은 예입니다.
xryl669

1
디스플레이 : 없음; 그리고 가시성 : 숨겨진; 둘 다 의사 요소를 숨기십시오
Facundo Colombier

어떻게하면 요소를 대체하지만 텍스트는 모두 대문자이며 소문자로 변경할 수 없습니까?
Jpaji Rajnish 17

159

의사 요소를 사용하고 내용을 삽입하게하려면 다음을 수행하십시오. 원래 요소에 대한 지식이 없으며 추가 마크 업이 필요하지 않습니다.

.element {
  text-indent: -9999px;
  line-height: 0; /* Collapse the original line */
}

.element::after {
  content: "New text";
  text-indent: 0;
  display: block;
  line-height: initial; /* New content takes up original line height */
}

JSFiddle 예제


1
이 답변은 <th>요소 내의 텍스트 노드와 같은 다른 많은 답변이없는 곳에서 작동합니다 .
Chris Kerekes

5
이것은 잘 작동합니다. 내 경우, line-height: 0그리고 color: transparent주요 요소와 의사에 그 값을 재설정하는 작업 (아니 손보는 할 text-indent)
dontGoPlastic

1
line-height: normal대신 해서는 안 initial됩니까?
Benjamin

1
텍스트 들여 쓰기를 사용하는 이유는 원본 텍스트가 더 길면 요소가 새 텍스트의 크기로 줄어들지 않고 기존 텍스트의 크기를 유지하기 때문입니다 (원하는 것으로 가정)
Chris Janssen

텍스트 들여 쓰기 : -9999px; IE에서 작동합니다. 가시성 : 숨겨진; IE에서는 메소드가 작동하지 않습니다.
Tom Stermitz

57

mikemaccana의 답변을 바탕으로 , 이것은 나를 위해 일했습니다.

button {
  position: absolute;
  visibility: hidden;
}

button:before {
  content: "goodbye";
  visibility: visible;
}

§ 절대 위치

절대적으로 배치 된 요소는 흐름에서 제거되므로 다른 요소를 배치 할 때 공간을 차지하지 않습니다.


2
나 에게이 대답은 같은 줄 내에서 텍스트 교체와 함께 작동하기 때문에 다른 HTML보다 우수했습니다. 즉, HTML과 CSS의 특정 조합에 대해 텍스트에서 줄 바꿈을 강요하지 않습니다.
pgr

30

이것은 간단하고 짧으며 효과적입니다. 추가 HTML이 필요하지 않습니다.

.pvw-title { color: transparent; }

.pvw-title:after {
        content: "New Text To Replace Old";
        color: black; /* set color to original text color */
        margin-left: -30px;
        /* margin-left equals length of text we're replacing */
    }

WooCommerce를 위해 집 이외의 링크 텍스트를 바꾸려면이 작업을 수행해야했습니다. 빵 부스러기를

사스 / 이하

body.woocommerce .woocommerce-breadcrumb > a[href$="/shop/"] {
    color: transparent;
    &:after {
        content: "Store";
        color: grey;
        margin-left: -30px;
    }
}

CSS

body.woocommerce .woocommerce-breadcrumb > a[href$="/shop/"] {
    color: transparent;
}

body.woocommerce .woocommerce-breadcrumb > a[href$="/shop/"]&:after {
    content: "Store";
    color: @child-color-grey;
    margin-left: -30px;
}

22

당신은 할 수 없습니다.

.pvw-title:after {
  content: "Test";
}

요소의 현재 내용 뒤에 내용이 삽입됩니다 . 실제로 그것을 대체하지는 않지만 빈 div를 선택하고 CSS를 사용하여 모든 내용을 추가 할 수 있습니다.

그러나 당신이 어느 정도 할 수는 있지만 그렇게해서는 안됩니다. 실제 내용은 문서에 넣어야합니다. content 속성은 주로 따옴표로 묶어야하는 텍스트 주위의 따옴표와 같은 작은 태그를위한 것입니다.


텍스트를 해당 방법으로 대체하는 코드를 사용했다고 확신합니다. '<div class = "pvw-title"> 사실 </ div> <div class = "pvw-title"> 사실 </ div> '사용할 수 없습니다 : 나중에 같은 이름을 가진 div 클래스가 두 개 이상 있습니다. (
MokiTa

브라우저와 얼마나 호환이됩니까? 그리고 나는 자바 스크립트가 이러한 종류의 유연성을 위해 장기적으로 더 나은 선택이 될 것이라고 생각합니다.
Sir

최신 브라우저가이를 지원합니다. 이전 IE 버전에 대해서는 잘 모르겠지만 quirksmode.com에서 찾을 수 있습니다. -edit- 그것은 할 수 있습니다 : quirksmode.org/css/user-interface/content.html
GolezTrol

15

사용 시도 :before:after . 하나는 HTML 렌더링 후 텍스트를 삽입하고 다른 하나는 HTML 렌더링 전에 텍스트를 삽입합니다. 텍스트를 바꾸려면 버튼 내용을 비워 두십시오.

이 예에서는 화면 너비의 크기에 따라 단추 텍스트를 설정합니다.

<meta name="viewport" content="width=device-width, initial-scale=1">

<style>
  button:before {
    content: 'small screen';
  }
  @media screen and (min-width: 480px) {
    button:before {
      content: 'big screen';
    }
  }
</style>
<body>
  <button type="button">xxx</button>
  <button type="button"></button>
</body>

버튼 텍스트 :

  1. :before

    큰 screenxxx

    큰 화면

  2. :after

    xxx 큰 화면

    큰 화면


11

당신은 단지 다른 텍스트 나 이미지를 표시 할 경우, 태그가 비어 여러 데이터 속성의 콘텐츠 쓰기 계속 그런를 <span data-text1="Hello" data-text2="Bye"></span>. 의사 클래스 중 하나를 사용하여 표시:before {content: attr(data-text1)}

이제 여러 가지 방법으로 전환 할 수 있습니다. 내 탐색 이름을 아이콘으로 변경하기 위해 반응 형 디자인 방식을 위해 미디어 쿼리와 함께 사용했습니다.

jsfiddle 데모 및 예제

그것은 질문에 완벽하게 대답하지 못할 수도 있지만 내 요구와 다른 사람들도 만족시킬 것입니다.


10

나는 설정을 더 행운이 있었다 font-size: 0외부 요소를, 그리고 font-size:after선택 내가 필요로 무엇이든합니다.


1
이것은 잘 작동합니다. 여기 데모가 있습니다.
Arthur

9

이것은 인라인 텍스트로 저에게 효과적이었습니다. Firefox, Safari, Chrome 및 Opera에서 테스트되었습니다.

<p>Lorem ipsum dolor sit amet, consectetur <span>Some Text</span> adipiscing elit.</p>

span {
    visibility: hidden;
    word-spacing: -999px;
    letter-spacing: -999px;
}

span:after {
    content: "goodbye";
    visibility: visible;
    word-spacing: normal;
    letter-spacing: normal;
}

2
(11)를 통해 적어도 IE 9 나에게하지 작업으로 인해 그것이 무시합니까 "가시성 : 볼"에 : 요소 다음 stackoverflow.com/questions/17530947/...
thenickdude

8

이 트릭을 사용합니다.

.pvw-title {
    text-indent: -999px;
}
.pvw-title:after {
    text-indent: 0px;
    float: left;
    content: 'My New Content';
}

심지어 기본 클래스를 변경하여 페이지 국제화를 처리하기 위해 이것을 사용했습니다 ...

.translate-es .welcome {
    text-indent: -999px;
}
.translate-es .welcome:after {
    text-indent: 0px;
    float: left;
    content: '¡Bienvenidos!';
}

3
스크린 리더가있는 사용자에게는 문제가됩니다. 요소의 disaply / visibility를 변경하지 않고 아리아 힌트를 제공하지 않아도 화면 판독기가 "보이지 않는"텍스트를 읽을 수 있습니다.
눈에 띄는 컴파일러

8

의사 요소 및 CSS 가시성으로 텍스트 대체

HTML

<p class="replaced">Original Text</p>

CSS

.replaced {
    visibility: hidden;
    position: relative;
}

.replaced:after {
    visibility: visible;
    position: absolute;
    top: 0;
    left: 0;
    content: "This text replaces the original.";
}

3

의사 요소를 사용하는이 방법은 원래 요소에 대한 지식이 필요하지 않으며 추가 마크 업이 필요하지 않습니다.

#someElement{
    color: transparent; /* You may need to change this color */
    position: relative;
}
#someElement:after { /* Or use :before if that tickles your fancy */
    content: "New text";
    color: initial;
    position: absolute;
    top: 0;
    left: 0;
}

2

'체크 된'상태에 따라 예 또는 아니오를 표시하는 버튼으로 확인란을 구현합니다. 따라서 코드를 작성하지 않고도 CSS를 사용하여 텍스트를 바꾸는 한 가지 방법을 보여줍니다.

POST 값을 반환 (또는 반환하지 않는 한) 여전히 확인란처럼 작동하지만 표시 관점에서는 토글 버튼처럼 보입니다.

원하는 색상이 아닐 수도 있습니다.

HTML은 다음과 같습니다

<input type="checkbox" class="yesno" id="testcb" /><label for="testcb"><span></span></label>

... 그리고 CSS는 :

/* --------------------------------- */
/* Make the checkbox non-displayable */
/* --------------------------------- */
input[type="checkbox"].yesno {
    display:none;
}
/* --------------------------------- */
/* Set the associated label <span>   */
/* the way you want it to look.      */
/* --------------------------------- */
input[type="checkbox"].yesno+label span {
    display:inline-block;
    width:80px;
    height:30px;
    text-align:center;
    vertical-align:middle;
    color:#800000;
    background-color:white;
    border-style:solid;
    border-width:1px;
    border-color:black;
    cursor:pointer;
}
/* --------------------------------- */
/* By default the content after the  */
/* the label <span> is "No"          */
/* --------------------------------- */
input[type="checkbox"].yesno+label span:after {
    content:"No";
}
/* --------------------------------- */
/* When the box is checked the       */
/* content after the label <span>    */
/* is "Yes" (which replaces any      */
/* existing content).                */
/* When the box becomes unchecked the*/
/* content reverts to the way it was.*/
/* --------------------------------- */
input[type="checkbox"].yesno:checked+label span:after {
    content:"Yes";
}
/* --------------------------------- */
/* When the box is checked the       */
/* label <span> looks like this      */
/* (which replaces any existing)     */
/* When the box becomes unchecked the*/
/* layout reverts to the way it was. */
/* --------------------------------- */
input[type="checkbox"].yesno:checked+label span {
    color:green;
    background-color:#C8C8C8;
}

Firefox에서만 시도했지만 표준 CSS이므로 다른 곳에서 작동해야합니다.


2

다른 모든 답변에서 볼 수있는 것과 달리 태그의 내용을 이미지로 바꾸기 위해 의사 요소를 사용할 필요가 없습니다.

<div class="pvw-title">Facts</div>

    div.pvw-title { /* No :after or :before required */
        content: url("your URL here");
    }

2
CSS2 content부터 :beforeand 에만 적용됩니다 :after. CSS3은이를 모든 것으로 확장하지만 생성 된 컨텐츠 모듈은 여전히 ​​초안 상태이므로 모든 사용은 브라우저에 따라 다를 가능성 높습니다.
mrec

1
"balise" 는 무엇입니까 ? 안 " 1. (유럽 열차 제어 시스템)을 railw의 레일 사이에 전자 표지 또는 트랜스 폰더 " 나는 가정. ( 여기에 의견이 아닌 질문편집하여 응답 하십시오.)
Peter Mortensen

1

트릭 없이는 실제로 불가능합니다. 다음은 텍스트를 텍스트 이미지로 바꾸어 작동하는 방법입니다.

.pvw-title{
    text-indent: -9999px;
    background-image: url(text_image.png)
}

이러한 유형의 작업은 일반적으로 JavaScript로 수행됩니다. 다음은 jQuery로 수행 할 수있는 방법입니다.

$('.pvw-title').text('new text');

3
Javascript도 사용할 수 없습니다 : /
MokiTa

1
이것이 내가 생각할 수있는 유일한 방법입니다 : .pvw-title span [style * = "color : # 000, font-size : 14px;"] {visible : hidden; } .pvw-title span [style * = "color : # 000; font-size : 14px;"] : after {가시성 : 보이는; 색상 : # 000; 글꼴 크기 : 14px; 내용 : "테스트"; } 그러나 둘 다 같은 스타일을 사용하기 때문에 할 수 없습니다 .. : /
MokiTa

왜 색상 / 글꼴을 기준으로 선택 하시겠습니까?
Nathan Manousos

전체 스타일을 기준으로 선택하므로 둘 다 동일한 "div"이름을 가지기 때문에 특정 제목 만 편집 할 수 있습니다.
MokiTa

1

링크 텍스트를 바꿔야하는 문제가 있었지만 JavaScript를 사용할 수 없었거나 하이퍼 링크의 텍스트를 XML에서 컴파일하여 직접 변경할 수 없었습니다. 또한 의사 요소를 사용할 수 없거나 시도했을 때 작동하지 않는 것 같습니다.

기본적으로 원하는 텍스트를 범위에 넣고 앵커 태그를 그 아래에 놓고 둘 다 div로 감쌌습니다. 기본적으로 CSS를 통해 앵커 태그를 위로 이동 한 다음 글꼴을 투명하게 만들었습니다. 이제 스팬 위로 마우스를 가져 가면 링크처럼 "작동"합니다. 이 작업을 수행하는 정말 해킹 된 방법이지만 다른 텍스트와 링크를 가질 수있는 방법입니다 ...

이것은이 문제를 해결하는 방법의 바이올린입니다.

내 HTML

<div class="field">
    <span>This is your link text</span><br/>
    <a href="//www.google.com" target="_blank">This is your actual link</a>
</div>

내 CSS

 div.field a {
     color: transparent;
     position: absolute;
     top:1%;
 }
 div.field span {
     display: inline-block;
 }

CSS는 요구 사항에 따라 변경해야하지만 이것은 요청하는 것을 수행하는 일반적인 방법입니다.


1
@Almight이 솔루션이 마크 업을 수정해야하기 때문에 다운 투표 된 것으로 의심되고 OP가 마크 업을 수정할 수 있는지 의심되면 텍스트를 직접 변경했을 것입니다. 다시 말해, OP에는 CSS 전용 솔루션이 필요했습니다
dannie.f

1

작은 화면 너비에서 "Dark"라는 단어가 "D"로 단축되는 솔루션을 찾았습니다. 기본적으로 원본 콘텐츠의 글꼴 크기를 0으로 만들고 의사 요소로 단축 된 형식을 갖습니다.

이 예에서는 변경이 호버에서 대신 발생합니다.

span {
  font-size: 12px;
}

span:after {
  display: none;
  font-size: 12px;
  content: 'D';
  color: red;
}

span:hover {
  font-size: 0px;
}

span:hover:after {
  display: inline;
}
<span>Dark</span>


1

8 년이 지난 지금, 스타일리쉬 를 사용하려고 할 때도 같은 도전에 직면했습니다 브라우저 확장 프로그램을 웹 사이트 (내가 아닌)에서 무언가를 변경 . 이번에는 "inspect element"를 사용하여 소스 코드를 살펴보고이를 기반으로 CSS 코드를 만들었습니다.

이것이 이전처럼 보였습니다.

<table>
  <tbody>
    <tr>
      <td role="gridcell">
        <span title="In progress" style="background-color: #e2047a;color:White;margin:2px;border-radius:2px;padding-left: 2px; padding-right: 2px;text-align: center;width: 45px; display: block;overflow: hidden;text-overflow: ellipsis;">In progress</span>
      </td>
    </tr>
  </tbody>
</table>

이것은 스타일을 수정하는 데 사용한 HTML 및 CSS와 동일합니다.

td span[style="background-color: #e2047a;color:White;margin:2px;border-radius:2px;padding-left: 2px; padding-right: 2px;text-align: center;width: 45px; display: block;overflow: hidden;text-overflow: ellipsis;"] {
  width: 100px!important;
}
<table>
  <tbody>
    <tr>
      <td role="gridcell">
        <span title="In progress" style="background-color: #e2047a;color:White;margin:2px;border-radius:2px;padding-left: 2px; padding-right: 2px;text-align: center;width: 45px; display: block;overflow: hidden;text-overflow: ellipsis;">In progress</span>
      </td>
    </tr>
  </tbody>
</table>

위의 코드를 실행할 수 있으며 작동하는지 확인할 수 있습니다 (Chrome에서 테스트).


이것은 내가이 질문을했던 시절에 내가 원했던 것입니다.

나는 일종의 커뮤니티 블로그 / Myspace 와 비슷한 것들을 사용하고 있었고 프로파일을 스타일링 할 때 가지고있는 유일한 것은 CSS 편집기 였기 때문에 스타일을 기반으로 선택하고 싶었습니다.

나는 여기서 답을 찾았습니다.


0

이 작업을 수행하는 방법은 CSS 내용에 줄 높이를 추가하는 것입니다. 이렇게하면 숨겨진 블록 위에 블록이 표시되므로 변경된 텍스트를 숨기지 않습니다.

이전 에 사용한 예제 :

.pvw-title span {
  display: none;
}

.pvw-title:before {
  content: 'Whatever it is you want to add';
  line-height: 1.5em
}

0

글쎄, 많은 사람들이 말했듯이 이것은 핵입니다. 그러나, 나는의 장점 소요 더 최신의 해킹, 추가 할 flexbox하고 rem, 즉

  • 이 텍스트를 수동으로 변경하여 변경하지 않으려면 다음과 같은 이점을 활용하십시오. flexbox
  • 을 사용 하여 텍스트를 명시 적으로 사용 padding하고 싶지 않거나 다른 장치 및 브라우저의 화면 크기가 다르면 출력이 다를 수 있습니다.marginpx

여기에 해결책이 있습니다. 즉, flexbox자동으로 완벽하게 배치되고rem 픽셀에 대한보다 표준화 된 (및 자동화 된) 대안입니다.

아래 코드가 있고 스크린 샷 형식으로 출력 된 CodeSandbox 는 코드 아래를 읽으십시오 note!

h1 {
  background-color: green;
  color: black;
  text-align: center;
  visibility: hidden;
}
h1:after {
  background-color: silver;
  color: yellow;
  content: "This is my great text AFTER";
  display: flex;
  justify-content: center;
  margin-top: -2.3rem;
  visibility: visible;
}
h1:before {
  color: blue;
  content: "However, this is a longer text to show this example BEFORE";
  display: flex;
  justify-content: center;
  margin-bottom: -2.3rem;
  visibility: visible;
}

참고 : 다른 태그의 경우 다른 값이 필요할 수 있습니다 rem.이 값은 h1큰 화면에서만 사용할 수 있습니다. 그러나 @media이를 통해 모바일 장치로 쉽게 확장 할 수 있습니다.

CSS를 사용하여 HTML 텍스트를 바꾸는 방법

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