前端必知必会-CSS响应式 Flexbox


CSS 响应式 Flexbox

可以使用媒体查询为不同的屏幕尺寸和设备创建不同的布局。
在这里插入图片描述

例如,如果您想为大多数屏幕尺寸创建两列布局,为小屏幕尺寸(如手机和平板电脑)创建一列布局,则可以在特定断点(以下示例中为 800px)处将 flex-direction 从行更改为列:

示例

.flex-container {
display: flex;
flex-direction: row;
}

/* 响应式布局 - 创建一列布局而不是两列布局 */
@media (max-width: 800px) {
.flex-container {
flex-direction: column;
}
}

另一种方法是更改​​弹性项目的弹性属性百分比,以针对不同的屏幕尺寸创建不同的布局。请注意,我们还必须在弹性容器中包含 flex-wrap: wrap; 以使此示例正常工作:

示例

.flex-container {
display: flex;
flex-wrap: wrap;
}

.flex-item-left {
flex: 50%;
}

.flex-item-right {
flex: 50%;
}

/* 响应式布局 - 制作一列布局而不是两列布局 */
@media (max-width: 800px) {
.flex-item-right, .flex-item-left {
flex: 100%;
}
}

使用 Flexbox 的响应式图库

在这里插入图片描述

使用 Flexbox 创建一个响应式图库,其中包含四张、两张或全宽图像,具体取决于屏幕尺寸:

<!DOCTYPE html>
<html>
<style>
* {
  box-sizing: border-box;
}

body {
  margin: 0;
  font-family: Arial;
}

.header {
  text-align: center;
  padding: 32px;
}

.row {
  display: flex;
  flex-wrap: wrap;
  padding: 0 4px;
}

/* Create four equal columns that sits next to each other */
.column {
  flex: 25%;
  max-width: 25%;
  padding: 0 4px;
}

.column img {
  margin-top: 8px;
  vertical-align: middle;
}

/* Responsive layout - makes a two column-layout instead of four columns */
@media (max-width: 800px) {
  .column {
    flex: 50%;
    max-width: 50%;
  }
}

/* Responsive layout - makes the two columns stack on top of each other instead of next to each other */
@media (max-width: 600px) {
  .column {
    flex: 100%;
    max-width: 100%;
  }
}
</style>
<body>

<!-- Header -->
<div class="header">
  <h1>Responsive Image Gallery</h1>
  <p>Resize the browser window to see the responsive effect.</p>
</div>

<!-- Photo Grid -->
<div class="row"> 
  <div class="column">
    <img src="wedding.jpg" style="width:100%">
    <img src="rocks.jpg" style="width:100%">
    <img src="falls2.jpg" style="width:100%">
    <img src="paris.jpg" style="width:100%">
    <img src="nature.jpg" style="width:100%">
    <img src="mist.jpg" style="width:100%">
    <img src="paris.jpg" style="width:100%">
  </div>
  
  <div class="column">
    <img src="underwater.jpg" style="width:100%">
    <img src="ocean.jpg" style="width:100%">
    <img src="wedding.jpg" style="width:100%">
    <img src="mountainskies.jpg" style="width:100%">
    <img src="rocks.jpg" style="width:100%">
    <img src="underwater.jpg" style="width:100%">
  </div> 
   
  <div class="column">
    <img src="wedding.jpg" style="width:100%">
    <img src="rocks.jpg" style="width:100%">
    <img src="falls2.jpg" style="width:100%">
    <img src="paris.jpg" style="width:100%">
    <img src="nature.jpg" style="width:100%">
    <img src="mist.jpg" style="width:100%">
    <img src="paris.jpg" style="width:100%">
  </div>
  
  <div class="column">
    <img src="underwater.jpg" style="width:100%">
    <img src="ocean.jpg" style="width:100%">
    <img src="wedding.jpg" style="width:100%">
    <img src="mountainskies.jpg" style="width:100%">
    <img src="rocks.jpg" style="width:100%">
    <img src="underwater.jpg" style="width:100%">
  </div>
</div>

</body>
</html>

使用 Flexbox 的响应式网站

在这里插入图片描述

使用 Flexbox 创建一个响应式网站,其中包含灵活的导航栏和灵活的内容:

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {
  box-sizing: border-box;
}

/* Style the body */
body {
  font-family: Arial;
  margin: 0;
}

/* Header/logo Title */
.header {
  padding: 60px;
  text-align: center;
  background: #1abc9c;
  color: white;
}

/* Style the top navigation bar */
.navbar {
  display: flex;
  background-color: #333;
}

/* Style the navigation bar links */
.navbar a {
  color: white;
  padding: 14px 20px;
  text-decoration: none;
  text-align: center;
}

/* Change color on hover */
.navbar a:hover {
  background-color: #ddd;
  color: black;
}

/* Column container */
.row {  
  display: flex;
  flex-wrap: wrap;
}

/* Create two unequal columns that sits next to each other */
/* Sidebar/left column */
.side {
  flex: 30%;
  background-color: #f1f1f1;
  padding: 20px;
}

/* Main column */
.main {
  flex: 70%;
  background-color: white;
  padding: 20px;
}

/* Fake image, just for this example */
.fakeimg {
  background-color: #aaa;
  width: 100%;
  padding: 20px;
}

/* Footer */
.footer {
  padding: 20px;
  text-align: center;
  background: #ddd;
}

/* Responsive layout - when the screen is less than 700px wide, make the two columns stack on top of each other instead of next to each other */
@media screen and (max-width: 700px) {
  .row, .navbar {   
    flex-direction: column;
  }
}
</style>
</head>
<body>

<!-- Note -->
<div style="background:yellow;padding:5px">
  <h4 style="text-align:center">Resize the browser window to see the responsive effect.</h4>
</div>

<!-- Header -->
<div class="header">
  <h1>My Website</h1>
  <p>With a <b>flexible</b> layout.</p>
</div>

<!-- Navigation Bar -->
<div class="navbar">
  <a href="#">Link</a>
  <a href="#">Link</a>
  <a href="#">Link</a>
  <a href="#">Link</a>
</div>

<!-- The flexible grid (content) -->
<div class="row">
  <div class="side">
    <h2>About Me</h2>
    <h5>Photo of me:</h5>
    <div class="fakeimg" style="height:200px;">Image</div>
    <p>Some text about me in culpa qui officia deserunt mollit anim..</p>
    <h3>More Text</h3>
    <p>Lorem ipsum dolor sit ame.</p>
    <div class="fakeimg" style="height:60px;">Image</div><br>
    <div class="fakeimg" style="height:60px;">Image</div><br>
    <div class="fakeimg" style="height:60px;">Image</div>
  </div>
  <div class="main">
    <h2>TITLE HEADING</h2>
    <h5>Title description, Dec 7, 2017</h5>
    <div class="fakeimg" style="height:200px;">Image</div>
    <p>Some text..</p>
    <p>Sunt in culpa qui officia deserunt mollit anim id est laborum consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco.</p>
    <br>
    <h2>TITLE HEADING</h2>
    <h5>Title description, Sep 2, 2017</h5>
    <div class="fakeimg" style="height:200px;">Image</div>
    <p>Some text..</p>
    <p>Sunt in culpa qui officia deserunt mollit anim id est laborum consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco.</p>
  </div>
</div>

<!-- Footer -->
<div class="footer">
  <h2>Footer</h2>
</div>

</body>
</html>




总结

本文介绍了CSS响应式 Flexbox的使用,如有问题欢迎私信和评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值