调整大小时如何更改 div 的位置?

How can I change div's position when resizing?

我有一个问题,我想做的就是在一定的宽度(使用@media)我想改变我的左边 div 到右边已经存在的那一侧。我尝试了一切,包括更改显示、使用左边距定位,但由于父容器,它不起作用。我唯一想到的是在右侧制作相同的左 div 并使显示为 none,但我很确定这不是处理它的方法。我用 Bootstrap 4.

这是HTML:

.main{
  background-color: #aaa;
  box-shadow: 3px 3px 20px #000000;
  border-radius: 20px;
  margin-left: 20px;
  margin-right: 20px
 }
 
 .left{
  background-color: #aaa;
  max-width: 200px;
  height: 1%;
  border-radius: 20px;
 }
 
 .right{
  background-color: #aaa;
  max-width: 200px;
  height: 1%;
  border-radius: 20px; 
 } 

 .right-content{
  width: 100%;
  text-align: center;
  float: center;
  margin-top: 10px;
 }
 
 .parent-container {
  display: flex;
 }
    <div class="parent-container">
       <div class="container left">
           <div class="row">
               Left content
           </div>
       </div>
 
     <div class="container card main py-3">
      <div class="container card">
       <div class="card-body">
        <div class="row">
         <div class="col-lg-12 text-center">
          <h2>TITLE2</h2>
         </div>
        </div>
    <div class="row">
     <div class="col-md-12 text-center">
      <a href="#" class="link1">
                          <img src="2.jpg">
       <h3>Title3</h3>
      </a>
     </div>
    </div>
   </div>
  </div>

        <div class="container right">
      <div class="row">
       <div class="right-content">
                   Right content here
       </div>
           </div>  
       </div>
    </div>

要达到你想要的效果,需要用到Bootstrap4order-*类。下面的代码片段中的 order-last 默认将列重新排序为最后,但 order-md-first 使该列首先出现在中等 (md) 或更大的屏幕上。

还有其他方法可以使用顺序 类 来达到相同的结果。这只是可能的选择之一。

但是您的代码中还有许多其他根本性错误。这里有一些提示:

  • 不要将容器嵌套在其他容器中。改为在列内嵌套行列对

  • 不要将任何内容直接放入 .row。 Bootstrap 行不是为此设计的。将一个或多个列 (.col-*) 放入一行并将所有内容放入该列中。

  • Bootstrap 4 默认是基于 flexbox 的,类 几乎可以满足您在定位和间距方面的所有需求。使用那些原生 Bootstrap 类 而不是不必要的自定义 css hacks。

这是一个有效的代码片段(单击下面的 "run code snippet" 按钮并展开到整页):

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

<div class="container-fluid">
    <div class="row">
        <div class="col-12 col-md-3 col-xl-2 bg-light order-last order-md-first py-3">
            Left div content <br>
            Left div content <br>
            Left div content <br>
        </div>
        <div class="col-12 col-md-9 col-xl-10 bg-primary py-3">
            <div class="card py-3">
                <div class="card-body">
                    <div class="row">
                        <div class="col text-center">
                            <h2>Right div TITLE</h2>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col text-center">
                            <a href="#">
                                <img class="img-fluid" src="https://placeimg.com/888/88/tech">
                                <h3>Right div subtitle</h3>
                            </a>
                        </div>
                    </div>
                </div>

                <div class="row">
                    <div class="col text-center">
                        Right div content here
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

注意:该代码不包含您的任何自定义 css。如果您想向其中添加一些自定义 css,请开始逐行添加它以查看您的自定义 css 中断 Bootstrap 的位置。

此外,上面代码片段中的背景 类 bg-lightbg-primary 只是为了让事情更容易看。