首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS响应式flex布局

CSS响应式flex布局
EN

Stack Overflow用户
提问于 2018-06-12 16:32:57
回答 3查看 103关注 0票数 2

我有一个简单的flex布局,其中有4个块。

在500px我想改变布局到2行,块是宽度的50%。

我如何使用flex来做这件事。

代码语言:javascript
复制
*{
  font-family: sans-serif;
}

ul{
  border: 1px solid red;
  margin: 0;
  padding: 0;
  width: 100%;
  display: flex;
  flex-wrap: no-wrap;
  flex-direction: row;
}

li{
  /*flex-grow: 1;*/
  width: 25%;
  height: 100px;
  background-color: red;
  margin: 8px;
  list-style: none;
  color: white;
  padding: 10px;
}

@media (max-width: 500px){
  ul{
    /*flex-wrap: wrap;*/
  }
  li{
    background: yellow;
    width: 50%;
  }
}
代码语言:javascript
复制
<ul>
  <li class="one">One</li>
  <li class="two">Two</li>
  <li class="three">Three</li>
  <li class="three">Four</li>
</ul>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-12 16:51:56

您缺少的是flex-basis

你还有一些填充和页边距,可能会把布局搞乱一点。我建议将它们设置在li的内部子级上。

代码语言:javascript
复制
*{
  font-family: sans-serif;
}

ul{
  border: 1px solid red;
  margin: 0;
  padding: 0;
  width: 100%;
  display: flex;
  flex-wrap: no-wrap;
  flex-direction: row;
}

li{
  /*flex-grow: 1;*/
  width: 25%;
  height: 100px;
  background-color: red;
  list-style: none;
  color: white;
}

@media (max-width: 500px){
  ul{
    flex-wrap: wrap;
  }
  li{
    background: yellow;
    flex-basis: 50%;
    max-width: 50%;
    width: 50%;
  }
}
票数 2
EN

Stack Overflow用户

发布于 2018-06-12 17:06:44

在普通视图中设置flex: 1 25%;,在500px端口视图中设置flex: 2 50%;。你可以在下面查看我的代码片段:

代码语言:javascript
复制
*{
  font-family: sans-serif;
}

ul{
  margin: 0;
  padding: 0;
  width: 100%;
  display: flex;
  flex-flow: row wrap;
}

li{
  flex: 1 25%;
  height: 100px;
  background-color: red;
  list-style: none;
  color: white;
  padding: 10px;
  border: 10px solid #fff;
  box-sizing: border-box;
}

@media (max-width: 500px){
  li{
    background: yellow;
    flex: 2 50%;
  }
}
代码语言:javascript
复制
<ul>
  <li class="one">One</li>
  <li class="two">Two</li>
  <li class="three">Three</li>
  <li class="three">Four</li>
</ul>

票数 1
EN

Stack Overflow用户

发布于 2018-06-12 18:21:06

这个可以试一下这个

代码语言:javascript
复制
*{
  font-family: sans-serif;
}

ul{
  border: 1px solid red;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: no-wrap;
  flex-direction: row;
}

li{
  /*flex-grow: 1;*/
  width: 100%;
  height: 100px;
  background-color: red;
  margin: 8px;
  list-style: none;
  color: white;
  padding: 10px;
}

@media screen and (max-width: 500px){
  ul{
    display: flex;
    flex-flow: wrap;
  }

  li{
    background: yellow;
    flex:  42%;
    padding: 2%;
  }
}   




    <ul>
      <li class="one">One</li>
      <li class="two">Two</li>
      <li class="three">Three</li>
      <li class="three">Four</li>
    </ul>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50812670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档