2017-01-09 6 views
-4

ВНИМАНИЕ: Я не рекомендую это делать. Это уродливый хак.Как изменить содержимое с помощью CSS?

У меня есть код (свернутый для примера)

<div id="somecontent"> 
    <a name="content"></a> 
    Content to be changed 
</div> 

JSFiddle: https://jsfiddle.net/zalun/o733uyvs/

я хотел бы изменить "Содержание быть изменены" с помощью CSS. Возможно ли это (все уродливые хаки включены)? Это легко, когда HTML изменен (<span> добавлен), как во втором блоке в упомянутой скрипке.

+0

И где ваша проблема? – Troyer

+0

Почему бы не использовать JS, его сборку для такого рода манипуляций? –

+0

@SamKool Поскольку на странице есть много таких элементов, которые уже JS тяжелые. – zalun

ответ

2

Примечание: То, что вы пытаетесь сделать, не рекомендуется. Я предоставляю вам решение, потому что я думаю, что у вас нет доступа к исходному HTML или ваш контент генерируется динамически. Я бы по-прежнему предлагал вам слишком либо изменить исходный файл, либо изменить узел DOM с помощью JavaScript.

Я бы сказал «Нет» и «Да».

Почему нет?

Это текстовый узел. Вы не можете манипулировать узлами DOM с помощью CSS. Для этого вам нужно использовать JavaScript.

Почему да? (Использование уродливых хаков), как?

Используя content свойство, как вы уже используете, но вы не можете изменить DOM, так что вы можете сделать его супер некрасиво как

Demo

#somecontent { 
    color: transparent; 
    position: relative; 
} 

#somecontent a:before { 
    content: "My new content"; 
    color: #000; 
    position: absolute; 
} 

JavaScript Решение:

Demo

// You'll see text flicker 
var t = document.getElementById('somecontent'); 
t.textContent = 'New Text'; 
+0

Ницца! Я не думал об изменении цвета для скрытия вещей. Конечно, я знаю, что изменение содержимого с помощью CSS вызывает проблемы, но это не проблема в этом конкретном исполнении. – zalun

Смежные вопросы