以下是我的代码工作正常,除了容器中的最后一行添加margin-bottom:5px;来自.tag css课程.
我面临的问题是标签列表是动态的,所以我无法直接定位Item-13,14等等.
让我知道在flex中我们有权在我的flex容器的最后一行添加自定义css w.r.t.
* { margin: 0; padding: 0; } html,body { Box-sizing: border-Box; } .container { width: 600px; margin: 0 auto; margin-top: 25px; border: 1px solid; padding: 5px; } .tags { list-style-type: none; display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; } .tag { padding: 5px; background-color: #76FF03; margin: 0 5px 5px; }
<div class="container"> <ul class="tags"> <li class="tag item-1">Tag Item 1</li> <li class="tag item-2">Tag Item 2</li> <li class="tag item-3">Tag Item 3</li> <li class="tag item-4">Tag Item 4</li> <li class="tag item-5">Tag Item 5</li> <li class="tag item-6">Tag Item 6</li> <li class="tag item-7">Tag Item 7</li> <li class="tag item-8">Tag Item 8</li> <li class="tag item-9">Tag Item 9</li> <li class="tag item-10">Tag Item 10</li> <li class="tag item-11">Tag Item 11</li> <li class="tag item-12">Tag Item 12</li> <li class="tag item-13">Tag Item 13</li> <li class="tag item-14">Tag Item 14</li> <li class="tag item-15">Tag Item 15</li> <li class="tag item-16">Tag Item 16</li> </ul> </div>
解决方法
大多数框架用来解决这个问题的最常见的方法是在项目(标签)上设置一个上边距,然后在项目父(标签)上用负边距补偿
* { margin: 0; padding: 0; } html,body { Box-sizing: border-Box; } .container { width: 600px; margin: 0 auto; margin-top: 25px; border: 1px solid; padding: 5px; } .tags { list-style-type: none; display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; margin-top: -5px; /* compensate top */ } .tag { padding: 5px; background-color: #76FF03; margin: 5px 5px 0 0; /* top,right */ }
<div class="container"> <ul class="tags"> <li class="tag item-1">Tag Item 1</li> <li class="tag item-2">Tag Item 2</li> <li class="tag item-3">Tag Item 3</li> <li class="tag item-4">Tag Item 4</li> <li class="tag item-5">Tag Item 5</li> <li class="tag item-6">Tag Item 6</li> <li class="tag item-7">Tag Item 7</li> <li class="tag item-8">Tag Item 8</li> <li class="tag item-9">Tag Item 9</li> <li class="tag item-10">Tag Item 10</li> <li class="tag item-11">Tag Item 11</li> <li class="tag item-12">Tag Item 12</li> <li class="tag item-13">Tag Item 13</li> <li class="tag item-14">Tag Item 14</li> <li class="tag item-15">Tag Item 15</li> <li class="tag item-16">Tag Item 16</li> </ul> </div>
更好的方法可能是为所有项目的边提供相同的保证金,但价值只有一半.
* { margin: 0; padding: 0; } html,body { Box-sizing: border-Box; } .container { width: 600px; margin: 0 auto; margin-top: 25px; border: 1px solid; padding: 5px; } .tags { list-style-type: none; display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; } .tag { padding: 5px; background-color: #76FF03; margin: 2.5px; }
<div class="container"> <ul class="tags"> <li class="tag item-1">Tag Item 1</li> <li class="tag item-2">Tag Item 2</li> <li class="tag item-3">Tag Item 3</li> <li class="tag item-4">Tag Item 4</li> <li class="tag item-5">Tag Item 5</li> <li class="tag item-6">Tag Item 6</li> <li class="tag item-7">Tag Item 7</li> <li class="tag item-8">Tag Item 8</li> <li class="tag item-9">Tag Item 9</li> <li class="tag item-10">Tag Item 10</li> <li class="tag item-11">Tag Item 11</li> <li class="tag item-12">Tag Item 12</li> <li class="tag item-13">Tag Item 13</li> <li class="tag item-14">Tag Item 14</li> <li class="tag item-15">Tag Item 15</li> <li class="tag item-16">Tag Item 16</li> </ul> </div>