0

我在 ul 的三个 li 元素中放置了 3 个图像。我希望这些图像在中心对齐。所以,我删除了 ul 的边距和填充,只删除了 li 元素的填充。然后,这些 li 元素被分配了 30% 的宽度。这让我剩下 10% 的空间,因为整个 ul 是 100%。然后将 li 的 margin-left 和 margin-right 设置为 1.66% ( (100-90)/6 )。这没有在中心对齐这些图像。请提出一种方法,使 li 的第一个孩子的边距和最后一个孩子的边距相同。

这是代码。

<html>
<head>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<ul>
<li><img src="test.jpg"></li>
<li><img src="test.jpg"></li>
<li><img src="test.jpg"></li>
</ul>
</body>
</html>

body {
margin: 0;
padding: 0;
}

ul {
list-style: none;
padding: 0;
margin: 0;
width: 100%
}

li {
display: inline-block;
width: 100%;
overflow: hidden;
margin-left: 1.66%;
margin-right: 1.66%;
}
4

3 回答 3

1

使用float:left;而不是,display: inline-block;因为它默认保留 4 像素边距,但如果您仍想使用内联块,那么您也可以将font-size: 0;其用于父 divul


正如您在问题中提到的另一件事,您的代码中没有 30% 的宽度来li定义它30%;

于 2013-10-28T08:36:19.470 回答
0

我可以建议一种替代方法。使用表可以减轻大量使用内联块带来的麻烦。

代码:

<html>
<head>
<style type="text/css">
body {
margin: 0;
padding: 0;
}

table, table img
{
    width:100%;
}
</style>
</head>
<body>
<table cellpadding="2%">
    <tr>
        <td align="center"><img src="test.jpg"></td>
        <td align="center"><img src="test.jpg"></td>
        <td align="center"><img src="test.jpg"></td>
    </tr>
</table>
</body>
</html>

通过使用表格,您只需使用元素的cellpaddinginline 属性即可更改每个单元格之间的距离,您可以通过更改元素的属性<table>来更改单元格中内容的对齐方式。align<td>

结果:

结果

3 个均匀分布的图像,占据浏览器窗口(或它们所在的任何容器)的整个大小。

500px 宽容器中的示例(黑色边框表示容器):

结果#2

于 2013-10-28T08:49:19.030 回答
0

您还可以利用 CSS3 的第 n 个子选项并设置左右列图像的边距/填充。因此,您只能将属性设置为第一个元素和第三个元素。

在这里您可以找到关于第 n 个孩子http://css-tricks.com/how-nth-child-works/http://reference.sitepoint.com/css/pseudoclass-nthchild的更清晰、简洁的信息。

祝你好运!

于 2013-10-28T08:45:18.980 回答