flex 布局 父元素padding-right与子元素最后一个元素 margin-right 失效有人遇到过么

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style>
   .wrapper {
     width: 200px;
     border: 1px solid red;
     display: flex;
     overflow: auto;
     box-sizing: border-box;
     padding: 20px;
   }
   .wrapper div {
     width: 80px;
     border: 1px solid red;
     flex-grow: 0;
     margin-right: 20px;
   }
 </style>
</head>
<body>
<div class="wrapper">
 <div>123</div>
 <div>123</div>
 <div>123</div>
 <div>123</div>
 <div>123</div>
 <div>123</div>
 <div>123</div>
 <div>123</div>
</div>
</body>
</html>

最后一个元素效果:
图片描述

阅读 12.5k
4 个回答
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style>
    *{
      margin:0;
      padding:0;
    }

    .container{
      display: flex;
      overflow: auto;
      border:1px solid red;
    }

   .wrapper {
     display: flex;
     overflow: visible;
     box-sizing: border-box;
     padding: 20px;
   }
   .wrapper div {
     width: 50px;
     border: 1px solid red;
     flex: 1;
     margin-right: 20px;
   }
 </style>
</head>
<body>
<div class="container">
  <div class="wrapper">
   <div>123</div>
   <div>123</div>
   <div>123</div>
   <div>123</div>
   <div>123</div>
   <div>123</div>
   <div>123</div>
   <div>123</div>
  </div>
</div>
</body>
</html>

首先来说并不是失效,而是你设置的宽度太短,导致对齐的时候没有按照正常方式对齐,如图

clipboard.png

解决方式:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style>
    *{
      margin:0;
      padding:0;
    }

    .container{
      width:200px;
      overflow-x: auto;
      border:1px solid red;
    }

   .wrapper {
     width: 600px;
     display: flex;
     overflow: auto;
     box-sizing: border-box;
     padding: 20px;
   }
   .wrapper div {
     width: 50px;
     border: 1px solid red;
     flex-grow: 0;
     margin-right: 20px;
   }
 </style>
</head>
<body>
<div class="container">
  <div class="wrapper">
   <div>123</div>
   <div>123</div>
   <div>123</div>
   <div>123</div>
   <div>123</div>
   <div>123</div>
   <div>123</div>
   <div>123</div>
  </div>
</div>
</body>
</html>

如图:
clipboard.png

我也碰到这个问题了,可以在wrapper 最后冗余一个div,并设置宽度 1px,感觉这样对dom结构改动比较小,应该比加容器那样方便点

我把 flex 改成 inline-flex 解决了

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