Как уже отмечалось в комментариях к ответу @ BoltClock, в современных браузерах вы можете добавить некоторую html-разметку к псевдоэлементам, используя (url()
) в сочетании с * 1005 svg.* element.
Вы можете либо указать URL-адрес, указывающий на фактический SVG-файл, либо создать его с версией dataURI (data:image/svg+xml; charset=utf8, + encodeURIComponent(yourSvgMarkup)
)
Но обратите внимание, что это в основномвзломать и что много ограничений:
- Вы не можете загрузить любые внешние ресурсы из этой разметки (без CSS, без изображений, без медиаи т. д.).
- Вы не можете выполнить скрипт.
- Поскольку это не будет частью DOM, единственный способ изменить его - передать разметку как dataURI, иотредактируйте эти dataURI в
document.styleSheets
.для этой части DOMParser
и XMLSerializer
могут помочь . - В то время как одна и та же операция позволяет загружать носители с кодировкой URLв тегах
<img>
это не будет работать в псевдоэлементах (по крайней мере, на сегодняшний день, я не знаю, указано ли это где-либо, чего не следует, так что это может быть еще не реализованная функция).
Теперь небольшая демонстрация некоторой HTML-разметки в псевдоэлементе:
/*
** original svg code :
*
*
*
*
*
* I am HTML
* * * * * /
#log::after {
content: url('data:image/svg+xml;%20charset=utf8,%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2260%22%20width%3D%22200%22%3E%0A%0A%20%20%3CforeignObject%20y%3D%220%22%20x%3D%220%22%20height%3D%22100%25%22%20width%3D%22100%25%22%3E%0A%09%3Cdiv%20style%3D%22color%3A%20blue%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%3E%0A%09%09I%20am%20%3Cpre%3EHTML%3C%2Fpre%3E%0A%09%3C%2Fdiv%3E%0A%20%20%3C%2FforeignObject%3E%0A%3C%2Fsvg%3E');
}
<p id="log">hi</p>