CSS定位div一个接一个

时间:2019-06-29 18:31:23

标签: html css reactjs position

我正在尝试创建一个着陆页,在该处我计划将一些固定的背景图像定位为幻灯片固定在顶部,然后将另一个div定位在该页面上,以显示网站的内容。但是,当前的HTML和CSS代码将两个div放在另一个位置。

检查现有代码并使用position属性,然后将父div设置为相对位置,将子div设置为相对位置,则不起作用

.crossfade>figure {
  animation: imageAnimation 30s linear infinite 0s;
  backface-visibility: hidden;
  background-size: cover;
  background-position: center;
  color: transparent;
  height: 100%;
  left: 0px;
  opacity: 0;
  position: absolute;
  top: 0px;
  bottom: 0;
  width: 100%;
  z-index: -1;
  min-height: 700px;
  background-attachment: fixed;
  background-repeat: no-repeat;
  background-size: cover;
}

#landing {
  position: absolute;
  top: 500px;
}
<div className="main">
  <div class="crossfade">
    <figure></figure>
    <figure></figure>
  </div>
  <div id="landing">
    <div className="container">
      <img />
    </div>
    <p> Hello </p>
  </div>
</div>

预期的CSS应该依次放置两个div,同时保留顶部背景图片幻灯片放映,然后显示第二个div。

1 个答案:

答案 0 :(得分:0)

我假设您的CSS的第一部分用于您的<div class="crossfade">。如果是这样,则交叉淡入淡出和着陆<div>都具有position: absolute,这很可能导致它们相互堆叠。

如果您希望交叉淡入淡出并从顶部到底部并排着陆,我建议将两者都包裹在外部<div>中并使用Flexbox。

.outer-container {
    display: flex;
    width: 100%;
    text-align: center;
    justify-content: center;
    align-items: center;
    
    /* Enable this if you want them to be top to bottom. */
    /* flex-direction: column; */
}

.crossfade, #landing {
    /* You might have to tweak the width based off of 
       margin, padding, and other dimensions. */
    width: 45%;
    height: 100px;
    border: 1px solid black;
}
<div class="outer-container">
    <div class="crossfade">Crossfade</div>
    <div id="landing">Landing</div>
</div>

此外,我可以为您澄清/提供一个示例:

  

同时保留顶部背景图片幻灯片,然后显示第二个div