J'ai un li
dont le style est le suivant:
li{
display:inline-block;
padding:5px;
border:1px solid none;
}
li:hover{
border:1px solid #FC0;
}
Lorsque je survole le li
, la bordure apparaît sans que le li
se décale. Est-il possible d'avoir une "frontière" qui n'est pas visible?
Vous pouvez utiliser "transparent" comme couleur. Dans certaines versions d'IE, cela apparaît en noir, mais je ne l'ai pas testé depuis IE6.
http://www.researchkitchen.de/blog/archives/css-bordercolor-transparent.php
Beaucoup d'entre vous doivent atterrir ici pour trouver une solution de bordure opaque au lieu d'une solution transparente. Dans ce cas, vous pouvez utiliser rgba
, où a
signifie alpha
.
.your_class {
height: 100px;
width: 100px;
margin: 100px;
border: 10px solid rgba(255,255,255,.5);
}
Ici, vous pouvez changer le opacity
du border
de 0-1
Si vous voulez simplement une bordure transparente complète, la meilleure chose à utiliser est transparent
, comme border: 1px solid transparent;
Vous pouvez supprimer la bordure et augmenter le rembourrage:
li{
display:inline-block;
padding:6px;
border-width:0px;
}
li:hover{
border:1px solid #FC0;
padding:5px;
}
<ul>
<li>Hovering is great</li>
</ul>
hé c'est la meilleure solution que j'ai jamais expérimentée .. c'est CSS3
utilisé la propriété suivante à votre div ou partout où vous voulez mettre frontière transparente
par exemple.
div_class {
border: 10px solid #999;
background-clip: padding-box; /* Firefox 4+, Opera, for IE9+, Chrome */
}
cela fonctionnera ..
Oui, vous pouvez utiliser border: 1px solid transparent
Une autre solution consiste à utiliser outline
en survol (et à définir la bordure sur 0), ce qui n’affecte pas le flux de documents:
li{
display:inline-block;
padding:5px;
border:0;
}
li:hover{
outline:1px solid #FC0;
}
NB Vous pouvez uniquement définir le contour en tant que propriété sharthand, pas pour des côtés individuels. Il est uniquement destiné à être utilisé pour le débogage, mais cela fonctionne bien.
Comme vous avez dit dans un commentaire que plus vous avez d'options, mieux c'est, voici une autre.
En CSS3, il existe deux "modèles de boîte" différents. L'un ajoute la bordure et le remplissage à la largeur d'un élément de bloc, l'autre pas. Vous pouvez utiliser ce dernier en spécifiant
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
Ensuite, dans les navigateurs modernes, l'élément aura toujours la même largeur. Par exemple, si vous lui appliquez une bordure en survol, sa largeur n’ajoutera rien à la largeur totale de l’élément; la bordure sera ajoutée "à l'intérieur" de l'élément, pour ainsi dire. Cependant, si je me souviens bien, vous devez spécifier explicitement le width
pour que cela fonctionne. Ce qui n'est probablement pas une option pour vous dans ce cas particulier, mais vous pouvez le garder à l'esprit pour des situations futures.
Cette entrée de blog a un moyen d'émuler border-color: transparent
dans IE6. L'exemple ci-dessous inclut le correctif "hasLayout" qui apparaît dans les commentaires de l'entrée de blog:
/* transparent border */
.testDiv {
width: 200px;
height: 200px;
border: solid 10px transparent;
}
/* IE6 fix */
*html .testDiv {
zoom: 1;
border-color: #FEFEFE;
filter: chroma(color=#FEFEFE);
}
Assurez-vous que le border-color
utilisé dans le correctif IE6 n’est utilisé nulle part dans le .testDiv
élément. J'ai changé l'exemple de pink
en #FEFEFE
parce que cela semble encore moins susceptible d’être utilisé.
La solution la plus simple consiste à utiliser rgba
comme couleur: border-color: rgba(0,0,0,0);
, couleur de bordure totalement transparente.