Le client veut deux bordures de couleur pour un aspect en relief. Puis-je faire cela sur un élément? J'espérais éviter d'empiler deux éléments DOM avec des bordures individuelles.
Oui: utilisez la propriété outline
; il agit comme une seconde frontière en dehors de votre frontière. Attention, bien qu'elle puisse interagir de manière insignifiante avec les marges, les rembourrages et les ombres portées. Dans certains navigateurs, vous devrez peut-être également utiliser un préfixe spécifique au navigateur; afin de s’assurer qu’il enregistre: -webkit-outline
et similaires (bien que WebKit en particulier n’exige pas cela).
Cela peut également être utile dans le cas où vous souhaitez supprimer le contour de certains navigateurs (par exemple, si vous souhaitez associer le contour à une ombre portée; dans WebKit, le contour se trouve à l'intérieur de l'ombre; dans FireFox, dehors, donc -moz-outline: 0
est utile pour vous assurer que vous n’obtenez pas une ligne épineuse autour de votre belle ombre portée CSS).
.someclass {
border: 1px solid blue;
outline: 1px solid darkblue;
}
Edit: Certaines personnes ont remarqué que outline
ne fonctionnait pas bien avec IE <8. Bien que cela soit vrai; soutenir IE <8 n’est vraiment pas quelque chose que vous devriez faire.
C'est très possible. Cela prend juste un peu de ruse CSS!
<div class="border">
Hi I have two border colors<br />
I am also Fluid
</div>
div.border {
border: 1px solid #000;
position: relative;
}
div.border:before {
position: absolute; display: block; content: '';
border: 1px solid red;
height: 100%; width: 100%;
box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box;
}
Est-ce ce que vous cherchez?
Une autre façon consiste à utiliser box-shadow
:
#mybox {
box-shadow:
0 0 0 1px #CCC,
0 0 0 2px #888,
0 0 0 3px #444,
0 0 0 4px #000;
-moz-box-shadow:
0 0 0 1px #CCC,
0 0 0 2px #888,
0 0 0 3px #444,
0 0 0 4px #000;
-webkit-shadow:
0 0 0 1px #CCC,
0 0 0 2px #888,
0 0 0 3px #444,
0 0 0 4px #000;
}
<div id="mybox">ABC</div>
Voir exemple ici.
Avez-vous essayé les différents styles de bordure disponibles dans les spécifications CSS? Deux styles de bordure peuvent déjà répondre à vos besoins:
border-style: ridge;
Ou
border-style: groove;
Le contour est bon, mais seulement quand vous voulez la bordure tout autour.
Disons que si vous voulez le faire uniquement en bas ou en haut, vous pouvez utiliser
<style>
#border-top {
border-top: 1px solid #ccc;
box-shadow: inset 0 1px 0 #fff;
}
</style>
<p id="border-top">This is my content</p>
Et pour le bas:
<style>
#border-bottom {
border-top: 1px solid #ccc;
box-shadow: 0 1px 0 #fff;
}
</style>
<p id="border-bottom">This is my content</p>
J'espère que cela aide.
Au lieu d'utiliser un plan non pris en charge et problématique, il suffit d'utiliser
Exemple:
HTML:
<img src="http://cdn3.thumbs.common.smcloud.net/common/8/6/s/863444wpPN.jpg/r-0,500-n-863444wpPN.jpg" alt="malkovich" />
CSS:
img {
padding: 1px;
background: yellow;
border:1px solid black;
}
TEST (JSFiddle):http://jsfiddle.net/68gb7/
Si par "gaufrage" vous entendez deux bordures entourées de deux couleurs différentes, il y a la propriété outline
(outline-left
, outline-right
....) mais il est mal supporté dans la famille IE (IE6 et 7 ne le supportent pas du tout)). Si vous avez besoin de deux bordures, un deuxième élément wrapper serait en effet le meilleur.
Si vous voulez dire utiliser deux couleurs dans la même bordure. Utilisez par exemple.
border-right: 1px white solid;
border-left: 1px black solid;
border-top: 1px black solid;
border-bottom: 1px white solid;
il y a des spéciaux border-styles
pour cela aussi (ridge
, outset
et inset
) mais ils ont tendance à varier d’un navigateur à l’autre.