在不同的屏幕尺寸上重新排序 DOM 元素

Posted

技术标签:

【中文标题】在不同的屏幕尺寸上重新排序 DOM 元素【英文标题】:Reorder DOM elements on different screen sizes 【发布时间】:2019-05-16 09:33:37 【问题描述】:

我想创建一个组件,左侧或右侧有一个文本,旁边有一个图像。

目前我只使用一个布尔参数来检查哪个元素先出现。在较大的屏幕尺寸上一切都很好,但对于较小的屏幕,每个图像都应该在文本上方。

如果文本在左侧,这不起作用,因为它将自身置于图像上方。

我创建了一个显示问题的工作示例

https://codesandbox.io/s/3qpj23y3o1

如何解决此问题?也许也有办法摆脱这个 if 语句?因为唯一不同的是图像和文本容器的顺序。

【问题讨论】:

【参考方案1】:

由于您使用的是 CSS 网格,因此您只需使用 grid-template-areas 并创建您的区域 imgtxt 即可:

   .textImageSectionContainer 
      ...
      grid-template-areas:'img' 'txt';

    
    .imgContainer 
       ....
       grid-area:img;
      
     .txtContainer 
       padding: 50px;
       grid-area:txt;
      

您只能将上述规则应用于小尺寸,在这个 codesandbox 示例中,我将上述规则设置为 700 像素以下的屏幕尺寸

更新

您可以使用类绑定来避免if 语句和冗余代码:

<template>
  <div
    :class=" imgleft: imageLeft, imgright: !imageLeft "
    class="textImageSectionContainer"
  >
    <div class="imgContainer"><img :src="imgUrl" class="img" /></div>
    <div class="txtContainer">
      <div class="headerText"> headerText </div>
      <div class="mainText"> mainText </div>
    </div>
  </div>
</template>

CSS 规则应该是这样的:

.imgleft 
  display: flex;


.imgright 
  display: flex;
  flex-direction: row-reverse;

【讨论】:

正是我要找的东西 :) 你知道我是否可以摆脱该模板中的大 if 语句吗? @Question3r 哪个语句? 我的模板组件顶部的 if 语句 @Question3r 我更新了我的答案和codesandox代码 我一直在向 Boussadjra 学习有关 CSS 的知识。继续加油兄弟:)

以上是关于在不同的屏幕尺寸上重新排序 DOM 元素的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 中将图像尺寸调整为不同的 iPhone 屏幕尺寸

如何适应不同的屏幕尺寸

Xcode Storyboard - 如何在不同的 iPhone 屏幕尺寸之间更改元素的字体大小和位置

使用动态rem方案适配不同屏幕尺寸

自动布局视图在不同的屏幕尺寸上总是相同的尺寸

如何在本机中处理不同的屏幕尺寸?