无法使用滚动为div中的最后一个元素赋予边距?

时间:2017-08-08 11:43:21

标签: html css

我有一个带有一些子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的末尾移动..他获得边距,你在检查器中看到它但它只是不移动。

2 个答案:

答案 0 :(得分:1)

显示:flex;在父母身上防止对孩子的保证金。要达到您想要的效果,您可以使用透明边框:


    .tab:last-child {
        border-right: 30px solid transparent;
    }

答案 1 :(得分:1)

我知道这是一个老问题,但是最近我遇到了类似的问题,我的解决方案是在父容器上使用::before::after,具体取决于您要第一个还是最后一个元素(在这种情况下, )的边距为右或填充为右。


    .parent::after {
      content: '';
      border-left: 20px solid transparent; 
    }

Codepen


.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>