Bordure autour de lignes dans une table?
Je suis en train de design HTML/CSS qui peut mettre une bordure autour de lignes dans une table. Oui, je sais que je ne suis pas vraiment censé utiliser des tableaux pour la mise en page, mais je ne connais pas assez bien le CSS pour remplacer complètement encore.
De toute façon, j'ai un tableau avec plusieurs lignes et colonnes, certaines ont fusionné avec rowspan et colspan, et j'aimerais mettre une simple bordure autour des parties de la table. Actuellement, je suis à l'aide de 4 classes CSS (haut, bas, gauche, droite) que j'attache à la <td>
les cellules qui sont en haut, en bas, à gauche et à droite de la table, respectivement.
CSS:
.top {
border-top: thin solid;
border-color: black;
}
.bottom {
border-bottom: thin solid;
border-color: black;
}
.left {
border-left: thin solid;
border-color: black;
}
.right {
border-right: thin solid;
border-color: black;
}
HTML:
<html>
<body>
<table cellspacing="0">
<tr>
<td>no border</td>
<td>no border here either</td>
</tr>
<tr>
<td class="top left">one</td>
<td class="top right">two</td>
</tr>
<tr>
<td class="bottom left">three</td>
<td class="bottom right">four</td>
</tr>
<tr>
<td colspan="2">once again no borders</td>
</tr>
<tr>
<td class="top bottom left right" colspan="2">hello</td>
</tr>
<tr>
<td colspan="2">world</td>
</tr>
</table>
</html>
Est-il un moyen plus facile de faire ce que je veux? J'ai essayé d'appliquer le haut et le bas d'un <tr>
mais il ne fonctionne pas. (p.s. Je suis nouveau sur le CSS, il y a probablement vraiment une solution de base de ce que j'ai manqué.)
remarque: j'ai besoin d'avoir plusieurs bordé sections. L'idée de base est d'avoir plusieurs bordé clusters contenant chacun plusieurs lignes.
- Hors-sujet, mais je voulais juste dire, les tables sont parfaitement approprié et recommandé lors de l'affichage des données tabulaires...
Vous devez vous connecter pour publier un commentaire.
Comment sur
tr {outline: thin solid black;}
? Fonctionne pour moi sur le tr ou tbody éléments, et apparaît pour être compatible avec la plupart des navigateurs, y compris IE 8+, mais pas avant.Merci à tous ceux qui ont répondu! J'ai essayé toutes les solutions présentées ici et j'ai fait plus de recherche sur l'internet pour d'autres solutions possibles, et je pense en avoir trouvé un qui est prometteur:
CSS:
HTML:
De sortie:
Au lieu d'avoir à ajouter de l'
top
,bottom
,left
, etright
classes pour chaque<td>
, tout ce que j'ai à faire est d'ajoutertop row
vers le haut<tr>
,bottom row
vers le bas<tr>
, etrow
à chaque<tr>
entre les deux. Il n'y a rien de mal avec cette solution? Il y a aucune croix-plate-forme de questions, je devrais être au courant?cellspacing
attribut est obsolète en HTML5. Semble comme CSStable { border-collapse: collapse; border-spacing: 0; }
est le chemin pour y aller maintenant.Si vous définissez la
border-collapse
style decollapse
sur la table parent, vous devriez être en mesure de style de latr
:(les styles sont en ligne pour une démo)
De sortie:
J'étais en train de jouer avec faire trop, et cela semblait être la meilleure option pour moi:
Noter que cela permettra d'éviter l'utilisation d'un fluide/automatique des largeurs de colonne, que les cellules n'étaient plus alignés avec ceux des autres lignes, mais la frontière/couleur formatage fonctionne toujours OK. La solution est de donner le TR et td d'une largeur spécifiée (soit px ou en %).
Bien sûr, vous pouvez faire le sélecteur de
tr.myClass
si vous voulait s'appliquent uniquement à certaines lignes. Apparemmentdisplay: table
ne fonctionne pas pour IE 6/7, cependant, mais il y a probablement d'autres hacks (hasLayout?) c'est peut-être pour ceux. 🙁Voici une approche à l'aide tbody éléments qui pourraient être le moyen de le faire. Vous ne pouvez pas définir la frontière, sur un tbody (le même que vous ne pouvez pas sur un tr), mais vous pouvez définir la couleur d'arrière-plan. Si l'effet vous êtes désireux de réaliser peut être obtenu avec une couleur de fond sur les groupes de lignes au lieu d'une frontière, ce sera le travail.
Groupe de lignes à l'aide du
<tbody>
tag et ensuite appliquer un style.Et le css dans le style.css
La seule autre façon que je peux penser à faire c'est de joindre chacune des lignes que vous besoin d'une bordure autour d'une table imbriquée. Qui va rendre la frontière plus facile à faire mais peut créer d'autres problèmes de mise en page, vous devez définir manuellement la largeur sur les cellules de tableau etc.
Votre approche peut-être bien le meilleur en fonction de votre disposition d'autres rerquirements et l'approche proposée ici est juste une alternative possible.
En fonction de votre exigence que vous voulez mettre une bordure autour de l'arbitraire d'un bloc de MxN cellules il n'y a vraiment pas de moyen plus facile de le faire sans l'aide de Javascript. Si vos cellules sont fixées avec des vous pouvez utiliser des flotteurs mais c'est problématique pour d'autres raisons. ce que vous faites peut être fastidieux, mais c'est très bien.
Ok, si vous êtes intéressé par une solution d'activer Javascript, utilisation de jQuery (mon approche préférée), vous vous retrouvez avec ce assez effrayant morceau de code:
Je vais heureux de suggestions sur les façons plus faciles de le faire...
le truc, c'est avec le contour de la propriété grâce à enigment réponse avec peu de modifications,
l'utilisation de cette classe
ensuite dans le code HTML
et le résultat est
espérons que cela vous aide
Un moyen plus facile est de faire de la table un côté serveur de contrôle. Vous pouvez utiliser quelque chose de similaire à ceci: