Comment faire une bordure double ligne en CSS, chaque ligne dans une couleur différente sans utiliser background-image
?
Par exemple, comme ceci:
Code:
<h2> heading 2 </h2>
<p> paragraph text </p>
<h2> heading 2 </h2>
<p> paragraph text </p>
Remarque: Je ne considère pas IE 8, 7, 6
Je viens de trouver le chemin sur Google Recherche et ça marche bien pour moi.
h2 {
border-bottom: 1px solid blue;
box-shadow: 0 1px 0 red;}
Source: http://www.cvwdesign.com/txp/article/425/useful-tip-for-creating-double-borders-with-css3
Edit: J'ai trouvé un autre moyen de réaliser plusieurs bordures à l'aide de pseudo-éléments CSS 2.1.
Assistance: Firefox 3.5+, Safari 4+, Chrome 4+, Opera 10+, IE8 +
http://nicolasgallagher.com/multiple-backgrounds-and-borders-with-css2/
Vous pouvez le faire avec le pseudo élément: after:
h2 {
padding: 5px 0;
border-bottom: solid 3px pink;
font-weight: bold;
position: relative;
margin-bottom: 8px;
}
h2:after {
content: '';
border-bottom: solid 3px blue;
width: 100%;
position: absolute;
bottom: -6px;
left: 0;
}
Cela se dégrade gracieusement en une seule ligne si le sélecteur: after n'est pas disponible.
c'est possible en CSS3 très facilement. essayez avec le code suivant
h2
{
border-bottom: 2px solid blue;
-moz-box-shadow: 0px 2px 0px #ff0000; /* Firefox 3.6 and earlier */
-webkit-box-shadow: 0px 2px 0px #ff0000; /* Safari and Chrome */
box-shadow: 0px 2px 0px #ff0000;
}
border-bottom: 1px solid blue;
box-shadow: 0 1px 0 red;
Je ne pense pas qu'il y ait moyen de le faire sans un élément supplémentaire.
Il existe outline
, mais elle ne permet pas une règle outline-bottom
: un contour ne peut être identique que sur les quatre côtés.
La pseudo-classe :after
permettra l'ajout de contenu texte uniquement, pas d'éléments.
Voici comment le faire avec une hr
supplémentaire.
Avez-vous essayé d'ajouter un <span>
entre <h2>
et <p>
avec le css suivant:
span {
height:0;
border-top:blue;
border-bottom:#ff0000;
line-height:0;
}
Semblable à ce qu'ADW a dit, en fait je vais éditer son violon pour aider à expliquer la différence.
Dans votre description, vous décrivez explicitement que h2 _ suivi dep devrait avoir une double bordure entre les deux.
La solution d'ADW est assez bonne, seulement lorsqu'il n'y a qu'un p après le h2, mais s'il y en a un autre, il y aura une ligne rouge étrange entre les paragraphes. C'est pourquoi nous ne devrions sélectionner que le p qui suit immédiatement un h2.
Le sélecteur CSS pour p suivant immédiatement h2 est h2 + p
Essayez ceci: http://jsfiddle.net/gR4qy/42/
h2 { border-bottom: solid pink;}
h2 + p { border-top: solid blue; }
Ce n'est pas nouveau. C'est CSS 2.1! http://www.w3.org/TR/CSS2/selector.html
Malheureusement, rien ne me permet de supprimer la bordure bleue si le p manque. Vous êtes seul: S
Désolé, je dois obtenir 50 points avant de pouvoir commenter et je ne sais pas comment obtenir des points, alors j'ai posté ceci comme une nouvelle réponse: S
h2 { border-bottom: solid blue;}
p { border-top: solid red; }
Vous rapprochez de vous, puis jouez avec les marges et le rembourrage jusqu'à ce que tout soit aligné.
Supprimez simplement les marges entre les éléments pour que leurs bordures s’adaptent parfaitement les unes aux autres. Voici un exemple complet: la taille des bordures est grande pour que vous puissiez la voir facilement.
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<style type="text/css">
h2 { border-bottom: 10px solid blue; margin-bottom: 0; }
p { border-top: 10px solid green; margin-top: 0; }
</style>
</head>
<body>
<h2>Hiya</h2>
<p>La la la</p>
<h2>Hiya</h2>
<p>La la la</p>
</body>
</html>
Vous pouvez le faire comme ceci:
voir aussi FIDDLE
h2 {
border-bottom: 3px solid red;
}
p {
border-top: 3px solid blue;
margin-top: -20px;
padding-top: 20px;
}
De Wystarczyło à zrobić, wdrażamy dwubarwny cień w naszej aplikacji. Będąc aplikacją mobilną, której chcemy uniknąćbox-shadow(wydajność), więc jeszcze prostsze rozwiąanie:after, je suis membre de la communauté politique de Bosnie-Herzégovine:
:after{
content: '';
display: block;
height:0;
border-top: 1px solid rgba(0, 0, 0, .1);
border-bottom: 2px solid rgba(0, 0, 0, .05);
position: absolute;
bottom: -3px;
left: 0;
width: 100%;
}