当前位置: 首页 > 知识库问答 >
问题:

前端 - 如何实现 css 布局随着屏幕宽度变化?

鲜于谦
2023-12-26

我的需求:css 使用 flex 帮我实现一个效果:左侧是一个图片,设置宽高为 200x200,右侧是一段文本;然后当在大尺寸的屏幕上,让右边的文本边充满右侧;但是如果在小尺寸的屏幕上,比如手机,那么让图片显示在上面;文本显示在下面

chatGPT 给了我下面的代码

<!DOCTYPE html><html lang="en"><head>  <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></head><body>  <div class="container">    <div class="image"></div>    <div class="text">      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed consequat placerat lorem.</p>    </div>  </div></body></html>

但是渲染出来的布局效果并不会随着屏幕宽度而变化

图片.png

只会等比例变化,为什么?

图片.png

如何实现 css 布局随着屏幕宽度变化?

共有2个答案

谈琦
2023-12-26

<meta name="viewport" content="width=device-width, initial-scale=1.0"> 要加一句

完整的如下:

<!DOCTYPE html><html lang="en"><head>    <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></head><body>    <div class="container">        <div class="image">图片</div>        <div class="text">文本</div>    </div></body></html>
暴博远
2023-12-26

CSS 的媒体查询是实现响应式布局的关键。在你的代码中,你已经使用了媒体查询,但是布局并没有随着屏幕宽度的变化而变化。这可能是由于媒体查询的断点设置不正确,或者你的 CSS 样式有一些错误。

你的媒体查询的条件是 @media screen and (max-width: 600px),这意味着当屏幕宽度小于或等于 600px 时,将应用下面的样式。然而,从你提供的渲染效果来看,布局的变化似乎发生在屏幕宽度小于或等于 200px 时,这与你设置的 600px 断点不匹配。

为了解决这个问题,你可以尝试调整媒体查询的断点。例如,你可以将断点设置为 @media screen and (max-width: 200px),这样当屏幕宽度小于或等于 200px 时,将应用垂直布局的样式。以下是调整后的代码:

<!DOCTYPE html><html lang="en"><head>  <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: 200px) {      .container {        flex-direction: column; /* 垂直布局 */      }      .image {        margin-bottom: 20px; /* 图片下方留出间距 */      }    }  </style></head><body>  <div class="container">    <div class="image"></div>    <div class="text">      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed consequat placerat lorem.</p>    </div>  </div></body></html>

通过调整媒体查询的断点,你应该能够实现你所期望的响应式布局效果。当屏幕宽度大于或等于 200px 时,布局将保持水平方向;当屏幕宽度小于或等于 200px 时,布局将切换为垂直方向。

 类似资料:
  • 问题内容: 我有一个包含DIV,用作响应网格的一部分。它将扩展到我允许的最大宽度1280px,然后在大型设备上显示边距。这是我的CSS + Less。 但是在某些情况下,我想横向溢出-假设我的背景图片或颜色需要全宽。我不太擅长CSS-但是有可能实现我想要的目标吗? 问题答案: 最明显的解决方案是关闭容器…将整个宽度div然后打开一个新容器。标题“容器”只是一个类……不是绝对要求它可以同时容纳 所有

  • 我如何才能使它的应用程序是优化的所有屏幕?

  • 问题内容: 因此,我的游戏从垂直方向开始,然后最终变为水平方向。我知道屏幕的宽度是屏幕的宽度,并且在垂直方向上与高度相同。切换为水平方向时,高度是否变为宽度,宽度是否变为高度?还是保持不变? 问题答案: 是的,屏幕的宽度和高度取决于设备的方向。您可以获取显示的大小,用该显示大小可以代替不推荐使用的方法和。从文档中:根据显示器的当前旋转为您调整此值。

  • 问题内容: 有谁知道你将如何获得屏幕宽度的Java?我读了一些关于工具箱方法的内容,但是我不确定那是什么。 谢谢,安德鲁 问题答案:

  • css布局怎实现在梯形背景中自适应梯形的宽度,如图所示: 图中的梯形是一个背景图,现在每个标题在不同的位置,怎么让标题实现各个位置占满梯形的宽度(如红色虚线所示),并且还能将标题文字水平居中?

  • 我正在创建一个GUI界面来与仓库的数据库进行交互。应用程序需要将项目添加到数据库,更新并显示它们。我在数据库中有一些表,对于每个表,我想创建一个JPanel,并将它们放在cardlayout中,这样我就可以使用JMenu项在它们之间导航。每个JPanel都有相同的表单。在顶部,有一个包含文本字段、组合框等的框,用于在表中添加项目。在这个框的下面,我有一个有1行的JTable,在这个框的下面,我在J