Je voudrais utiliser du texte dynamique comme arrière-plan de certains éléments de mon tag. Pour cette raison, je peux utiliser des images (texte dynamique). Comment faire avec CSS ou JavaScript?Existe-t-il un moyen d'utiliser du texte comme arrière-plan avec CSS?
Répondre
Vous pouvez avoir un élément tout à fait disposé à l'intérieur de votre élément positionné par rapport:
<div id="container">
<div id="background">
Text to have as background
</div>
Normal contents
</div>
Et puis le CSS:
#container {
position: relative;
}
#background {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
z-index: -1;
overflow: hidden;
}
est ici an example of it.
Vous pouvez faire en sorte que l'élément contenant le texte bg ait un ordre d'empilement inférieur (index-z, position) et éventuellement même une opacité définie. Donc l'élément dont vous avez besoin en haut aurait besoin d'un ordre d'empilement plus élevé (z-index: 5; position: relative; ex) et l'élément derrière aurait besoin de quelque chose de plus bas (par défaut ou juste un z-index inférieur comme 3 ;).
Il peut être possible (mais très hackish) avec seulement CSS en utilisant l': avant ou: après des éléments pseudo:
<style type="text/css">
.bgtext {
position: relative;
}
.bgtext:after {
content: "Background text";
position: absolute;
top: 0;
left: 0;
z-index: -1;
}
</style>
<div class="bgtext">
Foreground text
</div>
Cela semble fonctionner, mais vous aurez probablement besoin de ruser un peu. Notez également qu'il ne fonctionnera pas dans IE6 car il ne prend pas en charge :after
.
Mise à jour: Comme pour l'instant, tous les navigateurs modernes supportent les pseudo-éléments. Par exemple, c'est comme ça que FontAwesome fonctionne pour les icônes CSS (en utilisant: before sur les éléments en ligne). –
Que diriez-vous d'un SVG text background image?
body {
background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='50px' width='120px'><text x='0' y='15' fill='red' font-size='20'>I love SVG!</text></svg>");
}
<p>I hate SVG!</p><p>I hate SVG!</p><p>I hate SVG!</p><p>I hate SVG!</p>
<p>I hate SVG!</p><p>I hate SVG!</p><p>I hate SVG!</p><p>I hate SVG!</p>
la version indenté de CSS afin que vous puissiez mieux comprendre (cela ne pas travail, vous devez utiliser le SVG unique liner):
body {
background-image:url("data:image/svg+xml;utf8,
<svg xmlns='http://www.w3.org/2000/svg' version='1.1'
height='50px' width='120px'>
<text x='0' y='15' fill='red' font-size='20'>I love SVG!</text>
</svg>");
}
Je ne sais pas comment portable c'est (fonctionne sur Firefox 31 et Chrome 36), et c'est techniquement une image ... mais la source est en ligne et en texte brut, et elle évolue à l'infini.
@senectus a constaté que cela fonctionne mieux sur IE si vous base64 encoder: https://stackoverflow.com/a/25593531/895245
Intéressant. Je pourrais seulement obtenir ceci pour fonctionner dans Firefox 31, mais pas Chrome 36 ou Safari 7. –
@ JPRichardson Vrai, même ici. Sur Chrome 36 j'ai l'impression que le fond est là, mais sur * très * minuscules lettres. Peut-être que j'oublie de définir un paramètre de taille de fond/SVG? –
Ya, je l'expérimente en ce moment ... ressemble peut-être à "viewBox"? Je suis toujours en train de déconner avec ça. –
solution de Ciro au sujet d'un arrière-plan URI données SVG contenant le texte est très intelligent. Cependant, cela ne fonctionnera pas dans IE si vous ajoutez simplement la source SVG ordinaire à l'URI de données. Pour contourner cela et le faire fonctionner dans IE9 et plus, encoder le SVG en base64. This is a great tool.
donc ceci:
background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><text x="5%" y="5%" font-size="30" fill="red">I love SVG!</text></svg>');
Devient ceci:
background:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0ZXh0IHg9IjUlIiB5PSI1JSIgZm9udC1zaXplPSIzMCIgZmlsbD0icmVkIj5JIGxvdmUgU1ZHITwvdGV4dD48L3N2Zz4=');
et qu'il fonctionne dans IE9-10-11, WebKit (Chrome 37, Opera 23) et Gecko (Firefox 31) .
Ceci est un meilleur outil: https://jpillora.com/base64-encoder/ simpile, pas d'erreurs, remplissage automatique, aperçu de l'image. Oui, c'est mieux à pas de géant. –
@Ciro
Vous pouvez casser le code svg en ligne avec barre oblique inverse "\"
Testé avec le code ci-dessous dans Chrome 54 et Firefox 50
body {
background: transparent;
background-attachment:fixed;
background-image: url(
"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='170px' height='50px'> \
<rect x='0' y='0' width='170' height='50' style='stroke:white; fill:gray; stroke-opacity: 0.3; stroke-width: 3px; fill-opacity: 0.7; stroke-dasharray: 10 5; stroke-linecap=round; '/> \
<text x='85' y='30' style='fill:lightBlue; text-anchor: middle' font-size='16' transform='rotate(10,85,25)'>I love SVG!</text></svg>");
}
I même Testé ceci,
background-image: url("\
data:image/svg+xml;utf8, \
<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='170px' height='50px'> \
<rect x='0' y='0' width='170' height='50'\
style='stroke:white; stroke-width: 3px; stroke-opacity: 0.3; \
stroke-dasharray: 10 5; stroke-linecap=round; \
fill:gray; fill-opacity: 0.7; '/> \
<text x='85' y='30' \
style='fill:lightBlue; text-anchor: middle' font-size='16' \
transform='rotate(10,85,25)'> \
I love SVG! \
</text> \
</svg>\
");
et il fonctionne (au moins dans Chrome 54 & Firefox 50 ==> Utilisation dans NWjs & Electron guarenteed)
L'utilisation de CSS pur:
(Cependant, l'utiliser dans de rares occasions, parce que la méthode HTML est beaucoup PREFERRED WAY alors ceci).
.container{
\t position:relative;
}
.container::before{
\t content:"";
\t width: 100%; height: 100%; position: absolute; background: black; opacity: 0.3; z-index: 1; top: 0; left: 0;
\t background: black;
}
.container::after{
\t content: "Your Text"; position: absolute; top: 0; left: 0; bottom: 0; right: 0; z-index: 3; overflow: hidden; font-size: 2em; color: red; text-align: center; text-shadow: 0px 0px 5px black; background: #0a0a0a8c; padding: 5px;
\t animation-name: blinking;
\t animation-duration: 1s;
\t animation-iteration-count: infinite;
\t animation-direction: alternate;
}
@keyframes blinking {
\t 0% {opacity: 0;}
\t 100% {opacity: 1;}
}
<div class="container">here is main content, text , <br/> images and other page details</div>
- 1. texte d'emballage avec css
- 2. centre texte align avec css
- 3. CSS Hyperlien pour du texte
- 4. Texte du widget de l'onglet CSS
- 5. infobulle CSS pour un texte simple et
- 6. Comment créer un MenuItemImage avec du texte?
- 7. Comment puis-je formater le texte entré dans un champ de texte HTML comme monnaie?
- 8. Chargement du fichier externe avec css intact?
- 9. sélection de texte en CSS?
- 10. Comment créer du texte vertical en utilisant uniquement CSS?
- 11. un moyen d'afficher du texte dans le champ de texte avant que l'utilisateur entre les données
- 12. Champ de jeton Javascript/CSS. Tout comme un
- 13. CSS - Mise en forme du lien associé Amazon avec CSS
- 14. Concat Datent Comme texte
- 15. Comment puis-je faire un DIV se comporter comme un IMG pour une utilisation comme sprite CSS?
- 16. est-il possible d'analyser du texte comme XML dans GWT?
- 17. Un moyen rapide de faire correspondre un tableau de mots avec un bloc de texte?
- 18. Y at-il un moyen de remplacer un texte dans un fichier PDF avec itextsharp?
- 19. CSS: barre de liquide avec le texte ne s'étendra pas
- 20. Existe-t-il un moyen d'attacher un fichier css à un jEditorPane?
- 21. comment à clipser texte dans css comme gmail-t aux e-mails listes sujet
- 22. Héritage du style CSS
- 23. fusionner des images avec du texte
- 24. du texte html de lien avec jquery
- 25. Existe-t-il un moyen d'éviter le mode IE7 quirks lors du rendu XML + CSS?
- 26. Un bon éditeur graphique CSS avec toutes les options CSS
- 27. Existe-t-il un moyen de rechercher un élément avec plusieurs classes en CSS?
- 28. Texte html affiché comme un lien pour travailler avec un iframe
- 29. Existe-t-il un moyen de transmettre du texte arbitraire à Vim?
- 30. C# DropDownList avec un dictionnaire comme DataSource
elementName: après { contenu \t: "\ BB"; \t flotteur: droit; } – Jazzy