.container {
width: 850px;
padding: 0;
display: table;
margin-left: auto;
margin-right: auto;
}
.row {
display: table-row;
margin-bottom: 30px;
/* HERE */
}
.home_1 {
width: 64px;
height: 64px;
padding-right: 20px;
margin-right: 10px;
display: table-cell;
}
.home_2 {
width: 350px;
height: 64px;
padding: 0px;
vertical-align: middle;
font-size: 150%;
display: table-cell;
}
.home_3 {
width: 64px;
height: 64px;
padding-right: 20px;
margin-right: 10px;
display: table-cell;
}
.home_4 {
width: 350px;
height: 64px;
padding: 0px;
vertical-align: middle;
font-size: 150%;
display: table-cell;
}
<div class="container">
<div class="row">
<div class="home_1"></div>
<div class="home_2"></div>
<div class="home_3"></div>
<div class="home_4"></div>
</div>
<div class="row">
<div class="home_1"></div>
<div class="home_2"></div>
</div>
</div>
Ma question est relative à la ligne marquée HERE
dans le CSS. J'ai découvert que les lignes étaient trop proches les unes des autres, j'ai donc essayé d'ajouter une marge inférieure pour les séparer. Malheureusement ça ne marche pas. Je dois ajouter les marges aux cellules du tableau pour séparer les lignes.
Quelle est la raison de ce comportement?
Est-il également acceptable d'utiliser cette stratégie pour effectuer la mise en page comme je le fais:
[icon] - text [icon] - text
[icon] - text [icon] - text
ou y a-t-il une meilleure stratégie?
Réponses:
Voir la norme CSS 2.1, section 17.5.3. Lorsque vous utilisez
display:table-row
, la hauteur du DIV est uniquement déterminée par la hauteur destable-cell
éléments qu'il contient. Ainsi, la marge, le remplissage et la hauteur de ces éléments n'ont aucun effet.http://www.w3.org/TR/CSS2/tables.html
la source
Comment est-ce pour un travail autour (en utilisant une table réelle)?
Ce n'est pas aussi dynamique, car vous devez définir explicitement la couleur de la bordure (à moins qu'il n'y ait aussi un moyen de contourner cela), mais c'est quelque chose que j'expérimente sur un projet de mon propre chef.
Modifier pour inclure des commentaires concernant
transparent
:la source
La chose la plus proche que j'ai vue serait de définir
border-spacing: 0 30px;
le conteneur div. Cependant, cela me laisse juste un espace sur le bord supérieur de la table, ce qui va à l'encontre de l'objectif, puisque vous vouliez une marge en bas.la source
line-height
margin: -30px 0
.Avez-vous essayé de régler la marge du bas sur
.row div
, c'est-à-dire sur vos "cellules"? Lorsque vous travaillez avec des tableaux HTML réels, vous ne pouvez pas non plus définir de marges sur des lignes, mais uniquement sur des cellules.la source
display: table
. Cependant, ce n'est pas tout à fait la même chose que margin ...Il existe une solution assez simple pour cela, les attributs
border-spacing
etborder-collapse
CSS fonctionnentdisplay: table
.Vous pouvez utiliser ce qui suit pour obtenir un remplissage / des marges dans vos cellules.
Notez que vous devez avoir
Sinon, cela ne fonctionnera pas.
la source
Violon
cela peut être une autre solution
la source
Ajoutez un espacement entre deux éléments, puis rendez-le invisible:
la source
Works - Ajouter un espacement à la table
la source
l'ajout d'une balise br entre les divs a travaillé. ajouter une balise br entre deux divs qui sont display: table-row dans un parent avec display: table
la source