li标签外边距问题?

<ul>
    <li><img src="1.jpg" /></li>
    <li><img src="1.jpg" /></li>
    <li><img src="1.jpg" /></li>
    <li><img src="1.jpg" /></li>
    <li><img src="1.jpg" /></li>
    <li><img src="1.jpg" /></li>
</ul>

如上面代码所示,我需要用列表做3列布局,第一列左边是靠到最边沿的,第二列和第三列分别有个margin-left:10px;的边距,但是我不知道怎么用选择器匹配到第二列第三列???

我尝试使用nth-child(2n)和nth-child(3n)发现还是不对,这样的话,第二行第一列的左边又会有边距了,怎么破?

效果大概是下图这样的

clipboard.png

阅读 4.5k
3 个回答

可以使用 负数的margin-left

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul,li{
            list-style: none;
        }
        ul{
            border: 1px solid #000;
            width: 660px;
            overflow: hidden;
            margin-left: -20px;
        }
        li{
            width: 200px;
            height: 50px;
            float: left;
            margin-left: 20px;
            margin-bottom: 20px;
            background: aqua;
        }
    </style>
</head>
<body>
    <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</body>
</html>

3n+2 3n+3。
不太考虑兼容的话,可以用flex做。

display: flex; // 有兼容问题
flex-wrap: wrap; // 有更严重的兼容问题
justify-content: space-between

li{

float: left;

}
li+li{

margin-left:10px;

}
.only{

margin-left: 0;

}

简单点不好吗?先兄弟元素让每个兄弟有个margin值,再给第二行第一个li加个类设置margin为0;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题