如何使用 CSS 和 Flexbox 实现图片和文本的响应式布局?

如何使用 CSS 和 Flexbox 实现图片和文本的响应式布局?

cssflexbox实现响应式图片文本布局

构建响应式网页布局是网页开发中的核心需求,本文将演示如何利用CSS和Flexbox实现一个左侧为图片(200×200像素),右侧为文本的响应式布局。在大屏幕上,文本占据右侧剩余空间;在小屏幕(例如手机)上,图片则显示在文本上方。

以下代码展示了如何利用Flexbox和媒体查询实现这一效果:

初始代码(存在问题):

<meta charset="utf-8"> <title>Flexbox example</title> <style>   .container {     display: flex;     flex-direction: row; /* 默认水平布局 */   }    .image {     width: 200px;     height: 200px;     background-color: #f0f0f0;     margin-right: 20px; /* 图片和文本之间的间距 */   }    .text {     flex: 1; /* 右侧文本占据剩余空间 */   }    /* 在小尺寸屏幕上媒体查询 */   @media screen and (max-width: 600px) {     .container {       flex-direction: column; /* 垂直布局 */     }      .image {       margin-bottom: 20px; /* 图片下方留出间距 */     }   } </style> <div class="container">   <div class="image"></div>   <div class="text">     <p>lorem ipsum dolor sit amet, consectetur adipiscing elit. sed consequat placerat lorem.</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p>   </div> </div>

上述代码的问题在于,布局并未根据屏幕宽度自适应,而是等比例缩放。这是因为缺少视口元数据设置。

解决方案:添加视口元数据和调整CSS

为了解决这个问题,我们需要在html

部分添加视口元数据标签,并调整CSS代码:

<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Flexbox 布局示例</title> <style>   .container {     display: flex;   }    .image {     width: 200px;     height: 200px;   }    .text {     flex: 1;   }    /* 在小尺寸设备上,重置布局 */   @media (max-width: 600px) {     .container {       flex-direction: column;       /* 将布局改为垂直方向 */     }      .image {       width: 200px;       height: 200px;     }     .text {       width: auto;       /* 让元素宽度自适应 */       height: auto;       /* 让元素高度自适应 */     }      /* 取消 .text 的 flex 属性 */     .text {       flex: initial;       /* 或者可以使用 flex: none; */     }   } </style> <div class="container">   <div class="image">图片</div>   <div class="text">文本</div> </div>

通过添加viewport元数据和调整flex属性,以及在小屏幕情况下将flex-direction改为column,我们实现了真正的响应式布局。 现在,布局将根据设备屏幕宽度进行自适应调整。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享