81 votes

css display: la table n'affiche pas la bordure

 <html>
    <style type="text/css">
        .table   { display: table;}
        .tablerow  { display: table-row; border:1px solid black;}
        .tablecell { display: table-cell; }
    </style>
    <div class="table">
        <div class="tablerow">
            <div class="tablecell">Hello</div>
            <div class="tablecell">world</div>
        </div>
        <div class="tablerow">
            <div class="tablecell">foo</div>
            <div class="tablecell">bar</div>
        </div>
    </div>
</html>
 

Selon ma compréhension, une bordure noire devrait être tracée sur chacune des lignes que j'ai spécifiées via la classe tablerow.Mais la bordure n'apparaît pas.

Et je voulais changer la hauteur d'une ligne.Si je le spécifie avec 'px' - ça marche.Mais, si je le donne avec un% - ça ne marchera pas.J'ai essayé ce qui suit

 .tablerow  { 
    display: table-row;
    border:1px solid black;
    position: relative; //not affecting anything and the border disappears!! 
    //position: absolute; // if this is set,the rows overlaps and the border works
    height: 40%; // works only if specified in px and not in %
}
 

Quelque chose ne va pas quelque part, mais je ne suis pas capable de comprendre où. S'il vous plaît aider!

179voto

dSquared Points 5832

Vous devez ajouter border-collapse: collapse; à la classe .table pour que cela fonctionne comme ceci:

 <html>
<style type="text/css">
    .table   { display: table; border-collapse: collapse;}
    .tablerow  { display: table-row; border: 1px solid #000;}
    .tablecell { display: table-cell; }
</style>
<div class="table">
    <div class="tablerow">
        <div class="tablecell">Hello</div>
        <div class="tablecell">world</div>
    </div>
    <div class="tablerow">
        <div class="tablecell">foo</div>
        <div class="tablecell">bar</div>
    </div>
</div>
</html>
 

2voto

Jason Gennaro Points 20848

Vous devez ajouter l' border de la tablecell classe.

Aussi, pour le faire paraître belle, vous aurez besoin d'ajouter border-collapse:collapse; à la classe de la table.

Exemple: http://jsfiddle.net/jasongennaro/4bvc2/

MODIFIER

Comme pour le commentaire

je suis d'appliquer une bordure à une div,elle devrait s'affiche à droite ?

Oui, mais une fois que vous définissez l'affichage en table , qui est de savoir comment il va agir... en tant que table, de sorte que vous devrez alors suivre les règles css pour l'affichage des tables.

Si vous avez besoin de définir l' border uniquement sur les lignes, utilisez border-top et border-bottom puis de définir des classes spécifiques pour les plus à gauche et le plus à droite des cellules.

2voto

Ethan Shepherd Points 481

Les lignes de table ne peuvent pas avoir d'attribut border. Vous pouvez obtenir une bordure autour de chaque ligne en attribuant à toutes les cellules une bordure supérieure et inférieure et en ajoutant une classe pour les cellules les plus à gauche et à droite avec une bordure gauche et droite respectivement.

JS violon lien

edit: J'ai oublié border-collapse:collapse . Cela fonctionnera aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X