Différence de hauteur de ligne de 1 pixel entre Firefox et Chrome

travailler sur un nouveau design de site en asp.net avec des pages maîtresses. L'en-tête de la page est un 35px haut "barre de menu", qui contient un asp menu de contrôle de rendu comme une liste non-ordonnée.

l'élément de menu sélectionné est stylé avec un fond de couleur différente et 2px bordure autour du dessus gauche et les côtés droits. La partie inférieure de l'élément de menu sélectionné doit être aligné avec le bas de la barre de menu sélectionné "onglet" regarde comme si elle s'écoule dans le contenu sous. Regarde bien dans firefox et IE mais dans chrome "l'onglet" semble être 1 pixel plus haut que le bas de la barre de menu.

je me demande juste s'il y a une sorte de bogue dont je ne suis pas au courant.

je me rends compte que vous aurez très probablement besoin de code pour aider avec ce problème si ill afficher la css dès que possible.

EDIT:

voici la css pour le menu...

div.hideSkiplink
{     
    width:40%;
    float:right;
    height:35px;
}

div.menu
{
    padding: 0px 0px 0px 0px;
    display:inline;
}

div.menu ul
{
    list-style: none;
}

div.menu ul li
{
    margin:0px 4px 0px 0px;
}

div.menu ul li a, div.menu ul li a:visited
{
  color: #ffffff;
  display: block;
  margin-top:0px;
  line-height: 17px;
  padding: 1px 20px;
  text-decoration: none;
  white-space: nowrap;
}

div.menu ul li a:hover
{
  color: #ffffff;
  text-decoration: none;
  border-top: 1px solid #fff;
  border-right: 1px solid #fff;
  border-bottom: none;
  border-left: 1px solid #fff;
}




div.menu ul li a:active
{
 background:#ffffff !important;
 border-top:2px solid #a10000;
 border-right:2px solid #a10000;
 border-bottom: none;
 border-left:2px solid #a10000;
 color: #000000 !important;
 font-weight:bold;

}


div.menu ul a.selected
{
  color: #000000 !important;
  font-weight:bold;
}

div.menu ul li.selected
{
 background:#ffffff !important;
 border-top:2px solid #a10000;
 border-right:2px solid #a10000;
 border-bottom: none;
 border-left:2px solid #a10000;
}

div.menu ul li.selected a:hover
{
  border: none;
}

Les classes sélectionnées sont ajoutées aux éléments li et a via jquery...

Voici un capture d'écran du problème... L'exemple de chrome est en haut et u peut voir 1px de bordure rouge sous l'onglet. En bas se trouve l'image de firefox où tout semble OK.

alt text

EDIT:

après avoir joué avec ceci un peu plus, j'ai découvert que c'est en fait le "header" div lui-même qui croît de 1px dans chrome... Cela semble très étrange pour moi.

21
demandé sur stephen776 2010-12-14 16:15:49

16 réponses

il est important de se rendre compte que le rendu des pages web sera toujours différent d'un navigateur à l'autre. Atteindre la perfection pixel est futile, et de nos jours j'essaie d'expliquer à mes clients quel type de coût est impliqué pour rendre chaque navigateur rendre le site exactement identique. Plus souvent maintenant, ils comprennent que IE6 et FF4 ne rendront jamais aucune page de la même façon. Nous devons essayer de faire comprendre à nos clients la dynamique du web.

amélioration Progressive et gracieuse dégradation. Paix.

1
répondu Niklas Wulff 2010-12-15 13:49:24

Aucune de ces réponses résoudre le problème.

Jeu:

line-height: 1;
padding-top: 2px;

parce que les moteurs de rendu webkit & mozilla mettent en œuvre la hauteur de ligne différemment ne l'utilisent pas pour manipuler la mesure pour les articles de ligne simple.

pour les éléments comme les menus, les boutons et surtout les bulles de notification vraiment petites, réinitialisez la hauteur de la ligne à la normale et utilisez le rembourrage ou les marges pour les faire se comporter de la même façon.

voici un JSFiddle illustrant ceci question: http://jsfiddle.net/mahalie/BSMZe/6/

60
répondu mahalie 2011-10-22 02:30:02

je viens d'avoir ce même problème, et je l'ai résolu en définissant explicitement la hauteur de la ligne et la taille de la police en <li> un élément qui contient le <a> éléments de l'onglet liens. Espérons que cela aide quelqu'un dans l'avenir.

(liens HTML modifiés)

14
répondu Jarrett 2011-05-04 16:37:05

cependant, vous pourriez aussi vouloir vérifier les valeurs ligne-hauteur (ou ajouter une valeur, s'il n'y a pas déjà) sur le contenant ul ou div élément. Bricoler avec ça m'a permis d'obtenir le rembourrage exactement le même dans FireFox, Chrome et IE.

3
répondu geerlingguy 2010-12-15 04:13:56

Voici la solution que j'ai trouvé dans cette page:

   button::-moz-focus-inner {
        border: 0;
        padding: 0;
    }
3
répondu Maxulus 2014-03-31 15:57:33

je me bats avec ce problème depuis un petit moment maintenant, et presque abandonné sur le pixel. Cependant, il est venu à moi dans un de ces moments eurika: si vous obtenez l'onglet aligné parfaitement dans le Chrome (qui laisse un chevauchement dans Firefox), mettre la hauteur ul à la hauteur du li (y compris tout rembourrage), vous pouvez supprimer les pixels offensants dans Firefox en mettant débordement caché sur l'ul.

J'espère que cela aidera quelqu'un là-bas!

2
répondu DJ Quilter 2011-03-24 21:16:34

j'ai eu exactement le même problème, il s'avère que chrome avait zoom réglé à 110% et qui cassait le menu. J'ai remarqué quand j'ai allumé chrome sur un autre ordinateur et il avait l'air bien.

1
répondu artfulhacker 2012-03-06 20:58:01

j'ai eu le même problème avec mes onglets principaux les affichant en Chrome, ils étaient à un pixel de moins en hauteur et là pour laisser une vilaine fente entre les onglets et le fond blanc de l'ordinateur central.

j'ai résolu le problème en donnant l'onglet div une marge supérieure avec une flottait valeur. D'abord essayé marge-top:0.1 px rien puis 0.2 etc. jusqu'à ce qu'avec une marge supérieure de 0,5 tout affiché bien sur tous les principaux navigateurs.

1
répondu Alexander 2012-10-05 14:15:28

j'ai rencontré ce problème en relation avec le texte avec des fonds transparents.

Je n'ai pas pu obtenir l'une des solutions ci-dessus pour fonctionner de manière cohérente, donc j'ai fini par utiliser un hack webkit pour donner à ces navigateurs une hauteur de ligne différente. Comme ceci:

@media screen and (-webkit-min-device-pixel-ratio:0) {
    .your-class {
        line-height:20px;
    }
}

Pouah, hacky! J'essaie d'éviter les hacks de la CSS mais je n'ai pas trouvé d'autre moyen. J'espère que ça aide quelqu'un.

0
répondu kdev 2012-06-28 15:54:35

j'ai réussi à résoudre ce problème avec une police web à mon travail, en définissant les éléments suivants:

.some-class {
    display: inline-table;
    vertical-align: middle;
}

Accordés c'est très orthodoxe, mais fait le travail. Cela signifie bien que vous aurez des styles de cible spécifiquement pour Internet Explorer

0
répondu SomeBloke 2013-04-17 12:11:58

j'ai eu un problème similaire et il était dû à l'utilisation ems Pour les tailles de police, les marges et le rembourrage. Les navigateurs contournaient l'ems différemment et causaient des problèmes intermittents de non-by-1px sur tout le site selon la longueur du contenu. Une fois que j'ai tout changé en mesures de pixels, mes problèmes ont disparu.

Espérons que cette aide!

0
répondu gregtheross 2013-10-10 15:19:27

essayez d'utiliser display:block avec l'élément" par exemple...

<li><a href="">Link</a></li>

css:

li{line-height:20px;}/*example only*/

li a{display:block;}
0
répondu Manny 2013-10-24 09:04:42

je suppose que c'est la seule façon , l'utilisation des styles différents pour les différents navigateurs, la problématique des sections

/* FOR MOZILLA */
@-moz-document url-prefix() { 
.selector {
 color:lime;
}
}
/* FOR CHROME */
@media screen and (-webkit-min-device-pixel-ratio:0) { 
/* Safari and Chrome, if Chrome rule needed */
.container {
 margin-top:100px;
}
/* Safari 5+ ONLY */
::i-block-chrome, .container {
 margin-top:0px;
}``
0
répondu insaneray 2015-05-09 02:06:07

si line-height est utilisé pour aligner verticalement le texte dans un conteneur( ce qui ne devrait pas être le cas), alors un comportement cohérent entre les navigateurs peut être appliqué comme ceci:

line-height: 75px
height: 75px
overflow: hidden
0
répondu Mario 2015-12-23 18:35:51
-moz-height:2em;

on peut aussi utiliser:

@-moz-document url-prefix{
    // your css
}
0
répondu shekhar patel 2016-01-20 08:03:54

je pourrais être un débutant dans CSS, mais j'ai trouvé le même problème dans W3Cschools.com, dans un de leurs exemples.

http://www.w3schools.com/css/tryit.asp?filename=trycss_sprites_hover_nav

cet exemple concerne les sprites d'image. Vous pouvez voir dans cet exemple, dans Chrome, l'icône home et l'icône prev ont la ligne de diviseur 1px, ce qui n'est pas le cas dans Firefox.

il semble que dans Chrome le nombre de pixels soit de 1pixel différent de celui de Firefox.

-2
répondu akmal 2011-08-07 04:02:36