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 outlinepropriété; il agit comme une deuxième frontière à l'extérieur de votre frontière. Attention, bien qu'il puisse interagir de manière bancale avec des marges, des rembourrages et des 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 le capte: -webkit-outlineet autres (bien que WebKit en particulier ne l'exige pas).
Cela peut également être utile dans le cas où vous souhaitez abandonner le contour pour certains navigateurs (comme c'est le cas si vous souhaitez combiner le contour avec une ombre portée; dans WebKit, le contour est à l'intérieur de l'ombre; dans FireFox, c'est à l'extérieur, il -moz-outline: 0est donc utile de s'assurer que vous n'obtenez pas une ligne noueuse autour de votre belle ombre portée CSS).
Edit: Certaines personnes ont remarqué que outlinecela ne va pas bien avec IE <8. Bien que cela soit vrai; soutenir IE <8 n'est vraiment pas quelque chose que vous devriez faire.
-1 pour "supporter IE <8 n'est vraiment pas quelque chose que vous devriez faire". Ne pas prendre en charge IE6 peut être bien. Mais ne pas supporter IE7 est ridicule, aucun site avec un public non technique ne peut se le permettre
Pekka
6
outlineexiste depuis CSS2.
BoltClock
156
+1 pour ne pas prendre en charge IE 7, alors que votre site devrait toujours fonctionner et avoir une apparence raisonnablement bonne dans IE 7, une prise en charge complète n'est pas nécessaire. surtout s'il ne s'agit que d'une bordure bicolore. J'utilise personnellement box-shadow et d'autres fonctionnalités «avancées». IE7 ne peut pas voir une boîte-ombre, ... gros problème. il n'y a aucune raison d'utiliser une solution moins adaptée, trop compliquée ou même obsolète, juste pour contourner les bizarreries d'IE7.
Marian Theisen
2
Aussi, consultez cette référence pour de bonnes raisons d'accessibilité pour NE PAS pirater la propriété de contour à des fins de conception: outlinenone.com
Joel Glovier
11
Un mot d'avertissement, outlineest moins polyvalent que border. En particulier, le W3C dit : "Remarque. Le contour est le même de tous les côtés. Contrairement aux bordures, il n'y a pas de propriété 'contour-top' ou 'contour-gauche' ." (Je souligne.)
Bob Stein
68
C'est très possible. Cela prend juste une petite supercherie CSS!
En effet, c'est délicat, mais il se dégrade gracieusement et fonctionne même sur le navigateur d'origine de mon HTC (Android)! Si vous utilisez border-radius, essayez de réduire le rayon de la bordure intérieure d'un pixel, cela rendra l'écart entre les deux bordures arrondies presque imperceptible.
grippe
C'est sympa. Utiliser bottom:1pxplutôt que height:100%fonctionner mieux pour moi pour juste une bordure inférieure :)
Nick
si vous avez un rembourrage pour le div.border, j'ai trouvé que l'ajout d'une marge négative avec les mêmes dimensions pour le div.border:before, aidait à tout garder en ligne. Peut-être qu'il y a une meilleure façon de le faire? jsFiddle
NW Tech
+1 pour l'utilisation de pseudo-éléments. Je pense que cette réponse est meilleure que celle de Williham Totland
Je préfère cela car cela fonctionne avec border-radius contrairement à la méthode de contour
Johan
18
Avez-vous essayé les différents styles de bordure disponibles dans la spécification CSS? Il existe déjà deux styles de bordure qui pourraient répondre à vos besoins:
Fonctionne bien, mais seulement si vous avez du contenu avec l'arrière-plan.
Culme
4
Si par "gaufrage" vous entendez deux bordures l'une autour de l'autre avec deux couleurs différentes, il y a la outlinepropriété ( outline-left, outline-right....) mais elle est mal supportée dans la famille IE (à savoir, IE6 et 7 ne la 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-stylespour cela aussi ( ridge, outsetet inset) mais ils ont tendance à varier selon les navigateurs selon mon expérience.
Je crois que ce qu'il demande, c'est quelque chose comme border : black white; cela signifie définir deux couleurs différentes pour une bordure qui ressemble séquentiellement en même temps.
Tarik
1
@Braveyard ah, je vois. Ce serait théoriquement possible en utilisant outlinemais cela ne fonctionnera pas bien dans IE <8
Pekka
3
Notez qu'il n'y a que contour ... il n'y a malheureusement pas de contour-gauche, contour-droite, contour-haut ou contour-bas.
David Sherret
-1
Pas possible, mais vous devriez vérifier pour voir si des border-stylevaleurs comme inset, outsetou une autre, ont produit l'effet que vous voulez .. ( j'en doute cependant .. )
Réponses:
Oui: utilisez la
outline
propriété; il agit comme une deuxième frontière à l'extérieur de votre frontière. Attention, bien qu'il puisse interagir de manière bancale avec des marges, des rembourrages et des 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 le capte:-webkit-outline
et autres (bien que WebKit en particulier ne l'exige pas).Cela peut également être utile dans le cas où vous souhaitez abandonner le contour pour certains navigateurs (comme c'est le cas si vous souhaitez combiner le contour avec une ombre portée; dans WebKit, le contour est à l'intérieur de l'ombre; dans FireFox, c'est à l'extérieur, il
-moz-outline: 0
est donc utile de s'assurer que vous n'obtenez pas une ligne noueuse autour de votre belle ombre portée CSS).Edit: Certaines personnes ont remarqué que
outline
cela ne va pas bien avec IE <8. Bien que cela soit vrai; soutenir IE <8 n'est vraiment pas quelque chose que vous devriez faire.la source
outline
existe depuis CSS2.outline
est moins polyvalent queborder
. En particulier, le W3C dit : "Remarque. Le contour est le même de tous les côtés. Contrairement aux bordures, il n'y a pas de propriété 'contour-top' ou 'contour-gauche' ." (Je souligne.)C'est très possible. Cela prend juste une petite supercherie CSS!
Est-ce ce que vous recherchez?
la source
border-radius
, essayez de réduire le rayon de la bordure intérieure d'un pixel, cela rendra l'écart entre les deux bordures arrondies presque imperceptible.bottom:1px
plutôt queheight:100%
fonctionner mieux pour moi pour juste une bordure inférieure :)div.border
, j'ai trouvé que l'ajout d'une marge négative avec les mêmes dimensions pour lediv.border:before
, aidait à tout garder en ligne. Peut-être qu'il y a une meilleure façon de le faire? jsFiddleUne autre façon est d'utiliser
box-shadow
:Voir l' exemple ici.
la source
Avez-vous essayé les différents styles de bordure disponibles dans la spécification CSS? Il existe déjà deux styles de bordure qui pourraient répondre à vos besoins:
Ou
la source
Le contour est bon, mais seulement lorsque vous voulez la bordure tout autour.
Disons que si vous voulez le faire uniquement en bas ou en haut, vous pouvez utiliser
Et pour le bas:
J'espère que cela aide.
la source
Au lieu d'utiliser un contour non pris en charge et problématique, utilisez simplement
Exemple:
HTML:
CSS:
TEST (JSFiddle) :
Afficher l'extrait de code
la source
Si par "gaufrage" vous entendez deux bordures l'une autour de l'autre avec deux couleurs différentes, il y a la
outline
propriété (outline-left
,outline-right
....) mais elle est mal supportée dans la famille IE (à savoir, IE6 et 7 ne la 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
il y a des spéciaux
border-styles
pour cela aussi (ridge
,outset
etinset
) mais ils ont tendance à varier selon les navigateurs selon mon expérience.la source
border : black white;
cela signifie définir deux couleurs différentes pour une bordure qui ressemble séquentiellement en même temps.outline
mais cela ne fonctionnera pas bien dans IE <8Pas possible, mais vous devriez vérifier pour voir si des
border-style
valeurs commeinset
,outset
ou une autre, ont produit l'effet que vous voulez .. ( j'en doute cependant .. )CSS3 a les propriétés d' image de bordure , mais je ne connais pas encore la prise en charge des navigateurs (plus d'informations sur http://www.css3.info/preview/border-image/ ).
la source
Écrivez simplement
style="border:medium double;"
pour la balise html
la source
Vous pourriez utiliser
la source
Cela produit un bel effet.
la source