【问题标题】:How to vertically align with responsive divs (no heigh/width)?如何与响应式 div 垂直对齐(无高度/宽度)?
【发布时间】:2018-12-21 14:23:06
【问题描述】:

我到处寻找(好几天了..),但找不到适合我的解决方案,所以我在这里..

我创建了某种正方形,分为 4 个 div,我都希望正方形具有响应性。

Here is a drawing

由于我无法设置任何 div 高度,我无法在中心获取“text-slider”和“text-produits”div 的文本。有人知道怎么做这个吗 ?提前致谢!

.slider {
  display: table;
  width: 100vw;
  margin-left: calc(-50vw + 50%);
  height: 100%;
  justify-content: center;
  position: relative;
}

.slider-wrapper {
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.produits {
  display: table;
  width: 100vw;
  margin-left: calc(-50vw + 50%);
  height: auto;
  justify-content: center;
  vertical-align: middle;
  text-align: center;
  position: relative;
}

@media screen and (min-width: 850px) {
  .text-slider {
    display: table-cell;
    width: 30%;
    vertical-align: middle;
    text-align: center;
  }
  .grid-cuisine {
    display: table-cell;
    justify-content: center;
    align-items: center;
    position: relative;
    width: 45%;
  }
  .grid-produits {
    display: table-cell;
    width: 30%;
    justify-content: center;
  }
  .text-produits {
    display: table-cell;
    width: 45%;
    vertical-align: middle;
    text-align: left;
    padding: auto;
  }
}
<div class="row slider d-flex justify-content-center" id="photos">

  <div class="text-slider">
    <div>
      Nunc euismod eget...
    </div>
  </div>

  <div class="grid-cuisine">
    <div class="slider-wrapper">
      ...
    </div>
  </div>

</div>

<div class="row produits d-flex justify-content-center" id="produits">

  <div class="grid-produits">
    <img src="images/combo-alpha.svg" alt="..." class="image-produits">
  </div>

  <div class="text-produits">
    Lorem ipsum dolor...
  </div>

</div>

【问题讨论】:

  • 看看 flexbox :)
  • 感谢您的回复!我试过了,但它似乎不适用于“响应式分割方形的东西”。我会再看一遍!
  • 只需看看这个问题的右侧(“相关”选项卡)你需要的一切都在那里
  • 非常感谢!

标签: css responsive-design vertical-alignment


【解决方案1】:

您可以为此使用 flexbox - 我在下面评论了 css:

* {
  box-sizing: border-box;
}

.container {
  display: flex;           
  flex-direction: row;   /* align children in rows */
  flex-wrap: wrap;       /* allow wrapping of children for multiple rows */
  width: 50%;            /* change to width you want */
  margin: 0 auto;      

  border-left: 5px solid black;
  border-bottom: 5px solid black;
}

.container>div {
  border-right: 5px solid black;
  border-top: 5px solid black;
  padding:20px;
  
  display:flex;          /* make children flex too for centering */
  
  align-items:center;    /* vertical center */
  justify-content:center; /* horizontal center */

}

.left-col {
  width: 30%;
}

.right-col {
  width: 70%;
}
<div class="container">

  <div class="left-col">
    top left content over multiple lines
  </div>

  <div class="right-col">
    top right
  </div>

  <div class="left-col">
    bottom left content over multiple lines
  </div>

  <div class="right-col">
    bottom right
  </div>

</div>

【讨论】:

  • 哇哦!太棒了,我正在认真考虑参加真正的课程!非常感谢:)
  • 欢迎您,如果您想了解更多关于 flex 的信息,this is a good codepen
  • 太棒了!再次感谢您,祝您有美好的一天!
【解决方案2】:

网格 + 弹性

html, body {
     margin: 0;
     height: 100% 
}
 .grid-container * {
     border: 1px solid #ccc;
}
 .grid-container div {
     display: flex;
     justify-content: center;
     align-items: center 
}
 .grid-container div:after {
     content: attr(class);
     color: #888;
     display: flex;
     justify-content: center;
     align-items: center;
     height: 100%;
     font-family: arial;
}
 .grid-container {
     display: grid;
     height: 100%;
     grid-template-columns: 1fr 1fr;
     grid-template-rows: 1fr 1fr;
     grid-template-areas: '. .' '. .';
}
<div class='grid-container'>
	<div>Text Slider</div>
	<div>Grid-cuisine</div>
	<div>Grid Produits</div>
	<div>Text-produits</div>
</div>

【讨论】:

  • 非常感谢!我要马上研究那个。你们都让我开心!
猜你喜欢
  • 2013-09-02
  • 2020-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 2015-04-02
  • 2014-07-21
  • 2017-10-02
相关资源
最近更新 更多