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

如何重新创建“图像在左,文字在右”和“文字在右图像在左”的模式?

柯乐童
2023-03-14

当我经常访问公司的网站时,我看到一个常见的模式,图像在左侧,描述在右侧,当我向下滚动时,第二列是相反的,图像在右侧,文本在左侧,依此类推。

我试着用FlexBox创建一些simimlar:

null

:root {
  box-sizing: border-box;
}

*,
*::before,
*::after {
  box-sizing: inherit;
}

body {
  margin: 0;
  padding: 0;
}

h2 {
  color: #5c3b65;
  font-size: 2.1rem;
}

.about-container {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
}

.about-container > * {
  width: 100%;
}

.row {
  display: flex;
  flex-wrap: wrap;
  border: 1px solid green;
  margin: 20px 0 50px;
}

@media (min-width: 52em) {
  [class*="col-"] {
    border: 1px solid orange;
  }

  .col-1 {
    flex: 25%;
  }

  .col-2 {
    flex: 50%;
  }
}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="images-oddeven.css">
  <title>Odd and Even</title>
</head>
<body>
  <section class="about">
    <div class="about-container">
      <div class="row">
        <div class="col-1">
          <img src="https://picsum.photos/400" alt="">
        </div>
        <div class="col-2">
          <h2>Title</h2>
          <p>Text</p>
        </div>
      </div>
      <div class="row">
        <div class="col-1">
          <h2>Title</h2>
          <p>Text</p>
        </div>
        <div class="col-2">
          <img src="https://picsum.photos/400" alt="">
        </div>
      </div>
      <div class="row">
        <div class="col-1">
          <img src="https://picsum.photos/400" alt="">
        </div>
        <div class="col-2">
          <h2>Title</h2>
          <p>Text</p>
        </div>
      </div>
    </div>
  </section>
</body>
</html>

null

然而,我确信我的代码不能正常工作,因为我想要25%的图像宽度,但图像的位置改变了。所以,有时我需要在左侧,有时在右侧,有25%的列宽。

你认为用CSS网格来处理这件事会更容易吗?浏览器兼容性对我来说不是一个问题。我不需要IE11的支持。

共有1个答案

彭仲卿
2023-03-14

对所有行保持相同的html,在偶数行中更改col-1的顺序。

.row:nth-child(2n) .col-1 {
  order: 2;
}

null

:root {
  box-sizing: border-box;
}

*,
*::before,
*::after {
  box-sizing: inherit;
}

body {
  margin: 0;
  padding: 0;
}

h2 {
  color: #5c3b65;
  font-size: 2.1rem;
}

.about-container {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
}

.about-container>* {
  width: 100%;
}

.row {
  display: flex;
  flex-wrap: wrap;
  border: 1px solid green;
  margin: 20px 0 50px;
}

@media (min-width: 52em) {
  [class*="col-"] {
    border: 1px solid orange;
  }
  .col-1 {
    flex: 25%;
  }
  .col-2 {
    flex: 50%;
  }
  
  .row:nth-child(2n) .col-1 {
    order: 2;
  }
}
<section class="about">
  <div class="about-container">
    <div class="row">
      <div class="col-1">
        <img src="https://picsum.photos/400" alt="">
      </div>
      <div class="col-2">
        <h2>Title</h2>
        <p>Text</p>
      </div>
    </div>
    <div class="row">
      <div class="col-1">
        <img src="https://picsum.photos/400" alt="">
      </div>
      <div class="col-2">
        <h2>Title</h2>
        <p>Text</p>
      </div>
    </div>
    <div class="row">
      <div class="col-1">
        <img src="https://picsum.photos/400" alt="">
      </div>
      <div class="col-2">
        <h2>Title</h2>
        <p>Text</p>
      </div>
    </div>
  </div>
</section>
 类似资料:
  • 问题内容: 是否有更改此文本的CSS代码 到这个 问题答案: 尝试这个 编辑:将此类应用于段落标记,您应该得到想要的结果。

  • 问题内容: 我可以在iPhone上的Objective-C中执行此操作,但是现在我正在寻找等效的Android Java代码。我也可以用普通Java做到这一点,但是我不知道Android特定的类是什么。我想动态生成一个PNG图像,该图像中有一些文本居中。 相关线程: 如何在Objective-C(iOS)中的图像上写文字? 如何使用Java加载图像并向其中写入文本? 问题答案: 怎么样呢?

  • 问题内容: 在我的项目中,我使用iText生成PDF文档。 假设页面的高度为500pt(1个用户单位= 1点),并且我在页面上写了一些文本,然后是图像。 如果内容和图像要求小于450pt,则文本在图像之前。如果内容和图像超过450pt,则文本将转发到下一页。 我的问题是:在写图像之前如何获得剩余的可用空间? 问题答案: 首先,第一件事:在页面上添加文本和图像时,iText有时会更改文本内容和图像的

  • css flex 布局,页面分为上下两部分,下面通过 flex: 1; 撑开,并且 overflow-y: auto;下面又分为左右布局,左右高度不一定,想要设置一个边框分割左右,但是边框始终到最底部; 下半部分左右边框高度能够到自动撑开的高度 https://codesandbox.io/p/devbox/flexbu-ju-zi-dong-cheng-gao-8...

  • 我试图将一个视图从右向左滑动,点击一个按钮,它的可见性就消失了,点击另一个按钮,它的可见性就消失了。我尝试了以下解决方案。但是它要求视图是可见的,并且它会将视图从一个位置滑动到另一个位置。我想要一个滑动效果,就像那样,但是要有。我怎样才能做到这一点?

  • 问题内容: 我想在Python中执行字符串替换,但只执行第一个实例从右向左移动。在理想的世界中,我将拥有: 鉴于不存在的最佳方法是什么? 问题答案: 并可以用来模拟