2017-10-06 14 views
-1

J'ai un menu horizontal construit en utilisant un élément <ul>. J'essaie de l'obtenir pour répartir uniformément chaque <li> sur la largeur du menu. Sur la base de plusieurs réponses ici sur SO, je le CSS suivant:L'affichage des cellules de table ne fonctionne pas

ul { 
    display: table; 
    width: 100%; 
} 

ul li { 
    display: table-cell; 
} 

Cependant, peu importe ce que j'essaie, les <li> éléments finissent toujours avec un affichage calculé de block, avec ces informations contradictoires du débogueur (testé en FF et Chrome):

contradictory display

Je ne savais pas ce qui se passe ici, et (surtout) comment puis-je obtenir mes articles de liste pour afficher comme table-cell?

+0

Je pense qu'il est remplacé par un autre style appliqué à li. Pourriez-vous fournir le lien vers la page !!! –

+0

Pouvez-vous nous montrer votre HTML ou la fonction qui construit votre HTML? – DomeTune

+0

Je préférerais ne pas révéler le client, désolé. Il est généré à l'aide de Symfony 1.4. Où pourrais-je regarder pour voir si c'est annulé? Le débogueur ne devrait-il pas montrer ce qui l'emporte? – Kricket

Répondre

0

Dans la photo est montré que votre style.css est vraiment grand (min.1835 lignes) et à cause de ces styles à ul pourrait être surcrite quelque part. Pour rendre votre règle plus importante que la règle existante, utilisez mot-clé importante après la règle comme si:

ul { 
    display: table!important; 
    width: 100%!important; 
} 

ul li { 
    display: table-cell!important; 
} 
+0

Essayé cela; ne fonctionne pas – Kricket

+0

1. Ouvrir Chrome 2. Ouvrir DevTools (clic droit + inspecter) 3. choisir la table et à droite il vous montrera à partir de quelle ligne css provient le 'display: block'. 4. Allez sur cette ligne et corrigez la règle. –

+0

Regardez l'image. C'est exactement ce que j'ai fait. – Kricket

-1

CSS a un trait appelé importance, il choisit quelles sont les règles les plus spécifiques et doivent donc passer outre des règles plus lâches. Comme vous semblez utiliser un framework CSS, vos propres règles ne remplacent pas les règles génériques du framework. Il s'avère que vous avez deux options pour accroître l'importance de vos règles à main.css:

  1. Ajouter !important après vos règles:

    ul li { 
        display: table cell !important; 
    } 
    
  2. Faites vos sélecteurs plus spécifiques:

    #menu ul li.menu-list-item { ... } 
    

Votre question semble également très étrange et vous pouvez être sujet à un sourcils er rendu bug, avez-vous essayé avec d'autres navigateurs?

+0

Oh. On dirait que le formatage n'est pas aussi évident lors de la publication sur mobile, car le site mobile n'a pas de prévisualisation (et j'ai oublié le code dans la liste indenting). Corrigé – hegez

+0

En outre, il est préférable de ne pas styliser sur les sélecteurs d'identifiant pour éviter les problèmes de spécificité. Si c'est possible pour OP, essayez de refactoriser les styles à une solution où vous n'utilisez pas # dans votre règle de style. Aussi, je ne voudrais pas style sur les tags en général, mais c'est peut-être plus d'une opinion :) –

+0

J'ai essayé cela et cela ne fonctionne pas. Aussi, dans ma question, j'ai mentionné que j'ai essayé à la fois FF et Chrome et obtenu le même résultat. – Kricket