我有一个带有一些子div的div我用作制表符,而我的父div有水平滚动(我用它来移动视图,因此宽度较小)。像这样:
.parent {
display: flex;
overflow-x: auto;
padding: 15px 0 20px;
}
.tab {
font-size: 15px;
text-transform: uppercase;
padding: 10px 40px;
color: #a4b5bf;
white-space: nowrap;
}
<div class="parent">
<div class="tab">Tab 1</div>
<div class="tab">Tab 2</div>
<div class="tab">Tab 3</div>
<div class="tab">Tab 4</div>
</div>
问题是,当我想在最后一个元素上设置边距时,它只是不会从div的末尾移动..他获得边距,你在检查器中看到它但它只是不移动。
答案 0 :(得分:1)
显示:flex;在父母身上防止对孩子的保证金。要达到您想要的效果,您可以使用透明边框:
.tab:last-child { border-right: 30px solid transparent; }
答案 1 :(得分:1)
我知道这是一个老问题,但是最近我遇到了类似的问题,我的解决方案是在父容器上使用::before
或::after
,具体取决于您要第一个还是最后一个元素(在这种情况下, )的边距为右或填充为右。
.parent::after {
content: '';
border-left: 20px solid transparent;
}
.parent {
display: flex;
overflow-x: auto;
padding: 15px 0 20px;
/*extra code for example purpose*/
background: aquamarine;
width: 450px;
}
.tab {
font-size: 15px;
text-transform: uppercase;
padding: 10px 40px;
color: #a4b5bf;
white-space: nowrap;
/*extra code for example purpose*/
background-color: teal;
}
/**
Having the before and after pseudo element in parent to mimic adding margin/padding to the first and last child element
NOTE: There's a possibility that sometimes border-left doesn't work and border works, which in this case, the border width should be half to accomodate the left and right border
**/
.parent::before,
.parent::after {
content: '';
border-left: 20px solid transparent;
}
<div class="parent">
<div class="tab">Tab 1</div>
<div class="tab">Tab 2</div>
<div class="tab">Tab 3</div>
<div class="tab">Tab 4</div>
</div>