Comment puis-je ajouter dynamiquement un arrière-plan vert derrière le texte, pas toute la largeur de la page, mais uniquement le texte.
Le vert s'étend à la page entière avec mon code actuel. Je ne suis pas en mesure de modifier le code HTML ou Javascript, uniquement le fichier CSS.
<h1>The Last Will and Testament of Eric Jones</h1>
h1 {
text-align: center;
background-color: green;
}
Placez le texte dans un élément inline , tel que <span>
.
<h1><span>The Last Will and Testament of Eric Jones</span></h1>
Et appliquez ensuite la couleur d'arrière-plan sur l'élément en ligne.
h1 {
text-align: center;
}
h1 span {
background-color: green;
}
Un élément en ligne est aussi gros que son contenu, il devrait donc le faire pour vous.
Un peu tard pour le jeu mais j'ai pensé ajouter mes 2 centimes ...
Pour éviter d'ajouter le balisage supplémentaire d'une étendue interne, vous pouvez modifier la propriété d'affichage <h1>
de block
à inline
(vous devez vous assurer que les éléments après le <h1>
sont des éléments de bloc.
HTML
<h1>
The Last Will and Testament of
Eric Jones</h1>
<p>Some other text</p>
CSS
h1{
display:inline;
background-color:green;
color:#fff;
}
Résultat
JSFIDDLE http://jsfiddle.net/J7VBV/
display: table;
h1 {
display: table; /* keep the background color wrapped tight */
margin: 0px auto 0px auto; /* keep the table centered */
padding:5px;font-size:20px;background-color:green;color:#ffffff;
}
<h1>The Last Will and Testament of Eric Jones</h1>
violon
http://jsfiddle.net/J7VBV/293/
plus
display: table
indique à l'élément de se comporter comme un tableau HTML normal.
Plus à ce sujet à w3schools , astuces CSS et ici
display: inline-flex;
text-align: center;
sur le parent.container {
text-align: center; /* center the child */
}
h1 {
display: inline-flex; /* keep the background color wrapped tight */
padding:5px;font-size:20px;background-color:green;color:#ffffff;
}
<div class="container">
<h1>The Last Will and Testament of Eric Jones</h1>
</div>
display: flex;
.container {
display: flex;
justify-content: center; /* center the child */
}
h1 {
display: flex;
/* margin: 0 auto; or use auto left/right margin instead of justify-content center */
padding:5px;font-size:20px;background-color:green;color:#ffffff;
}
<div class="container">
<h1>The Last Will and Testament of Eric Jones</h1>
</div>
sur
Le guide le plus populaire de Flexbox, auquel je fais constamment référence, est le suivant: astuces CSS
display: block;
.container {
display: flex;
justify-content: center; /* centers child */
}
h1 {
display: block;
padding:5px;font-size:20px;background-color:green;color:#ffffff;
}
<div class="container">
<h1>The Last Will and Testament of Eric Jones</h1>
</div>
::before
h1 {
display: flex; /* set a flex box */
justify-content: center; /* so you can center the content like this */
}
h1::before {
content:'The Last Will and Testament of Eric Jones'; /* the content */
padding: 5px;font-size: 20px;background-color: green;color: #ffffff;
}
<h1></h1>
violon
http://jsfiddle.net/J7VBV/457/
sur
En savoir plus sur les pseudo-éléments css :: before et :: after at CSS Astuces et des pseudo-éléments en général sur w3schools
display: inline-block;
centrer avec position: absolute
et translateX
nécessite un parent position: relative
.container {
position: relative; /* required for absolute positioned child */
}
h1 {
display: inline-block; /* keeps container wrapped tight to content */
position: absolute; /* to absolutely position element */
top: 0;
left: 50%; /* part1 of centering with translateX/Y */
transform: translateX(-50%); /* part2 of centering with translateX/Y */
white-space: nowrap; /* text lines will collapse without this */
padding:5px;font-size:20px;background-color:green;color:#ffffff;
}
<h1>The Last Will and Testament of Eric Jones</h1>
sur
Plus d'informations sur le centrage avec transform: translate();
(et le centrage en général) dans cet article sur les astuces CSS
text-shadow:
ET box-shadow:
h1, h2, h3, h4, h5 {display: table;margin: 10px auto;padding: 5px;font-size: 20px;color: #ffffff;overflow:hidden;}
h1 {
text-shadow: 0 0 5px green,0 0 5px green,
0 0 5px green,0 0 5px green,
0 0 5px green,0 0 5px green,
0 0 5px green,0 0 5px green;
}
h2 {
text-shadow: -5px -5px 5px green,-5px 5px 5px green,
5px -5px 5px green,5px 5px 5px green;
}
h3 {
color: hsla(0, 0%, 100%, 0.8);
text-shadow: 0 0 10px hsla(120, 100%, 25%, 0.5),
0 0 10px hsla(120, 100%, 25%, 0.5),
0 0 10px hsla(120, 100%, 25%, 0.5),
0 0 5px hsla(120, 100%, 25%, 1),
0 0 5px hsla(120, 100%, 25%, 1),
0 0 5px hsla(120, 100%, 25%, 1);
}
h4 { /* overflow:hidden is the key to this one */
text-shadow: 0px 0px 35px green,0px 0px 35px green,
0px 0px 35px green,0px 0px 35px green;
}
h5 { /* set the spread value to something larger than you'll need to use as I don't believe percentage values are accepted */
box-shadow: inset 0px 0px 0px 1000px green;
}
<h1>The First Will and Testament of Eric Jones</h1>
<h2>The 2nd Will and Testament of Eric Jones</h2>
<h3>The 3rd Will and Testament of Eric Jones</h3>
<h4>The Last Will and Testament of Eric Jones</h4>
<h5>The Last Box and Shadow of Eric Jones</h5>
violon
https://jsfiddle.net/Hastig/t8L9Ly8o/
Il existe quelques autres moyens d’agir en combinant les différentes options d’affichage et méthodes de centrage ci-dessus.
Une astuce très simple consiste à ajouter une balise <span>
et à y ajouter une couleur de fond. Cela ressemblera à ce que vous voulez.
<h1>
<span>The Last Will and Testament of Eric Jones</span>
</h1>
Et CSS
h1 { text-align: center; }
h1 span { background-color: green; }
La balise <span>
dans une balise d'élément en ligne, elle ne s'étend donc que sur le contenu simulant l'effet.
h1 est un élément de niveau bloc. Vous devrez utiliser quelque chose comme span, car il s'agit d'un élément de niveau en ligne (c'est-à-dire qu'il ne s'étend pas sur toute la ligne).
Dans votre cas, je suggérerais ce qui suit:
style.css
.highlight
{
background-color: green;
}
html
<span class="highlight">only the text will be highlighted</span>
La principale considération que les autres négligent est que OP a déclaré qu’ils ne pouvaient pas modifier le code HTML.
Vous pouvez cibler ce dont vous avez besoin dans le DOM, puis ajouter des classes de manière dynamique avec javascript. Puis coiffez selon vos besoins.
Dans un exemple que j'ai créé, j'ai ciblé tous les éléments <p>
avec jQuery et je l'ai enveloppé d'un div avec une classe de "couleur"
$( "p" ).wrap( "<div class='colored'></div>" );
Ensuite, dans mon CSS, j'ai ciblé le <p>
et lui ai donné la couleur de fond et changé en display: inline
.colored p {
display: inline;
background: green;
}
En réglant l’affichage en ligne, vous perdez une partie du style dont elle hériterait normalement. Veillez donc à cibler l'élément le plus spécifique et à styler le conteneur afin qu'il s'adapte au reste de votre conception. Ceci est juste conçu comme un point de départ de travail. Utilisez avec précaution. Démo de travail sur CodePen
Vous pouvez utiliser la balise HTML5 <mark>
.
HTML:
<h1><mark>The Last Will and Testament of Eric Jones</mark></h1>
CSS:
mark
{
background-color: green;
}
Essayez de supprimer le centre d'alignement de texte et centrez le <h1>
ou le <div>
dans lequel le texte réside.
h1 {
background-color:green;
margin: 0 auto;
width: 200px;
}
HTML
<h1>
<span>
inline text<br>
background padding<br>
with box-shadow
</span>
</h1>
Css
h1{
font-size: 50px;
padding: 13px; //Padding on the sides so as not to stick.
span {
background: #111; // background color
color: #fff;
line-height: 1.3; //The height of indents between lines.
box-shadow: 13px 0 0 #111, -13px 0 0 #111; // Indents for each line on the sides.
}
}
Vous devez mentionner la largeur de la balise h1.
votre css sera comme ça
h1 {
text-align: center;
background-color: green;
width: 600px;
}
Essaye celui-là:
h1 {
text-align: center;
background-color: green;
visibility: hidden;
}
h1:after {
content:'The Last Will and Testament of Eric Jones';
visibility: visible;
display: block;
position: absolute;
background-color: inherit;
padding: 5px;
top: 10px;
left: calc(30% - 5px);
}
Veuillez noter que calc n'est pas compatible avec tous les navigateurs :) Je veux juste être cohérent avec l'alignement du message d'origine.