网格布局和 UL 怪异边距

Grid layout and UL weird margin

我有一个带有显示的无序列表:网格,每当我在 chrome devtools 上转到移动视图时,网格更改为列中的 1 个项目而不是 5 个。直到这里一切都很好,但我明白了一些奇怪的左边距,我没有在我的代码中的任何地方定义,我不明白为什么它在这里..当我为 ul 设置 margin:0 时它仍然存在..知道吗?

我的 css & html:

ul {
  list-style: none;
  padding: 0;
  margin: 0 5%;
  display: grid;
  grid-template-columns: 20% 20% 20% 20% 20%;
  grid-gap: 10px;
  max-width: 100%;
}

.title2 {
  margin-right: 10px;
}

@media screen and (max-width: 480px) {
  ul {
    width: 300px;
    margin-right: 10px;
    grid-template-columns: 280px;
  }
}
.card {
  box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
  transition: 0.3s;
  width: 90%;
  height: 320px;
  text-align: center;
  margin: 5% 0;
}
@media screen and (max-width: 480px) {
  .card {
    height: 265px;
  }
}

<div class="card">
  <div class="img-container">
    <img class="product-thumbnail" src="assets/products/{{product.image}}" alt="{{product.name}}" title="{{product.name}}">
  </div>
  <div class="container">
    <div class="title4 product-name"><strong>{{product.name}}</strong></div>
    <div class="product-price">{{product.price}} $</div>
    <p>
      <button class="btn-purchase" (click)="purchaseItem()">Purchase</button>
    </p>
  </div>
</div>

<div class="title2">Products:</div>
<ul>
  <li *ngFor="let product of products"><app-product [product]="product"></app-product></li>
</ul>

内部媒体查询将 .cardleft/right margin 设置为 auto 以使其水平居中:

.card {
  margin: 5% auto;
}

我还建议使用基本的 CSS 浏览器重置,如下所示:

* {margin:0;padding:0;box-sizing:border-box}
html, body {width:100%}

因为你只在小屏幕上给了 ul margin-right:10px,即 480px 如果定义的话,它会从大屏幕上获取其他边距。

@media screen and (max-width: 480px){
ul {
    width: 300px;
    margin:5% 0;
    grid-template-columns: 280px;
  }

或者如果你还想在小屏幕上给 margin-right:10px 比

@media screen and (max-width: 480px){
ul {
    width: 300px;
    margin:5% 10px 5% 0;
    grid-template-columns: 280px;
  }