Zastanawiam się tylko, czy można w jakiś sposób sprawić, by content
właściwość CSS wstawiała zamiast kodu HTML ciąg znaków :before
lub :after
element taki jak:
.header:before{
content: '<a href="#top">Back</a>';
}
byłoby to bardzo przydatne ... Można to zrobić za pomocą Javascript, ale użycie do tego css naprawdę ułatwiłoby życie :)
html
css
pseudo-element
css-content
zanona
źródło
źródło
Odpowiedzi:
Niestety nie jest to możliwe. Zgodnie ze specyfikacją :
Innymi słowy, w przypadku wartości ciągu oznacza to, że wartość jest zawsze traktowana dosłownie. Nigdy nie jest interpretowany jako znacznik, niezależnie od używanego języka dokumentu.
Na przykład przy użyciu podanego CSS z następującym kodem HTML:
... spowoduje następujące wyniki:
<a href="#top"> Wstecz </a> Tytuł
źródło
url
atrybutami, dodanie linku nie różni się w tej perspektywie.<img>
), po prostu są rysowane na istniejące elementy, więc stosując obrazy tła lub listy, tak naprawdę nie modyfikujesz DOM.url()
zamiast tego należy określić plik zewnętrzny , tak jak w przypadku każdego innego obrazu.Jak prawie zauważono w komentarzach do odpowiedzi @ BoltClock, we współczesnych przeglądarkach można faktycznie dodać znaczniki HTML do pseudoelementów za pomocą (
url()
) w połączeniu z<foreignObject>
elementem svg .Możesz podać adres URL wskazujący na rzeczywisty plik svg lub utworzyć go za pomocą wersji dataURI (
data:image/svg+xml; charset=utf8, + encodeURIComponent(yourSvgMarkup)
)Pamiętaj jednak, że jest to głównie hack i że istnieje wiele ograniczeń:
document.styleSheets
. w tej częściDOMParser
iXMLSerializer
może pomóc .<img>
adresach URL w tagach, nie będzie to działać w pseudoelementach (przynajmniej na dzień dzisiejszy nie wiem, czy jest określone gdziekolwiek, co nie powinno, więc może być jeszcze nie zaimplementowaną funkcją).Teraz mała demonstracja niektórych znaczników HTML w pseudo-elemencie:
źródło
url('/relativePathToMySvg/mySvg.svg')
i to nie zadziałało/root/css/yourFile.css
, a następnie względnej funcIRI jakyourFile.svg
będzie wskazując/root/css/yourFile.svg/
. Ale myślę, że pamiętam, że niektóre wcześniejsze UA miały błąd i uczyniły go względnym w stosunku do baseURI dokumentu. Tak więc najbezpieczniejszym sposobem jest użycie absolutnej ścieżki.content: url('../../images/como-funciona.svg');
i działa dobrzeW mediach stronicowanych CSS3 jest to możliwe przy użyciu
position: running()
icontent: element()
.Przykład z wersji CSS Generated Content for Paged Media Module :
.runner może być dowolnym elementem i
heading
jest dowolną nazwą dla boksu .EDYCJA: aby wyjaśnić, w zasadzie nie ma obsługi przeglądarki, więc w większości miało to być do wykorzystania w przyszłości / oprócz „praktycznych odpowiedzi” już podanych.
źródło