在部分中创建视差页面和定位元素
Creating a parallax page and positioning elements within the sections
我目前正在构建一个视差页面,但我在将元素定位在版块上时遇到了问题。因此我的问题是绝对定位。
有没有办法让绝对位置只在一个部分而不是整个 page/viewport 中起作用?
我已经做了一个非常简单的例子来说明我正在尝试做的事情:https://jsfiddle.net/zu2epxxq/1/
如您所见,#second
部分中的段落应位于该部分的内部,而不是主要部分 #first
。显然这是使用绝对定位的副作用。
我该如何干净利落地解决这个问题?
HTML:
<section id="first">
<div>
<p>This is a test</p>
</div>
</section>
<section id="second">
<div>
<p>More text that has to be pushed arund in this section</p>
</div>
</section>
CSS:
html,
body {
height: 100%;
color: #fff;
font-size: 16px;
margin: 0;
padding: 0;
}
section {
min-height: 100%;
}
#first {
background-color: #000;
}
#second {
background-color: #ddd;
}
section > div {
bottom: 0;
margin: 0;
font-size: 4em;
position: absolute;
transform: translate(-50%, 50%);
left: 50%;
}
对部分使用"position: relative;"。然后,您可以相对于部分元素定位子元素。
我用它做了这个:
https://jsfiddle.net/hpepwvdg/1/
但我更喜欢使用 flexbox 布局模式,因为我发现了 flexbox 的强大功能:(http://www.w3schools.com/css/css3_flexbox.asp):
html, body, .container {
height: 100%;
color: #fff;
}
.container {
display: -webkit-flexbox;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-flex-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
justify-content: center;
}
#first {
background-color: #000;
}
#second {
background-color: #ddd;
}
.centered_heading {
font-size: 4em;
}
<section class="container" id="first">
<h1 class="centered_heading">Centered!</h1>
</section>
<section class="container" id="second">
<h1 class="centered_heading">Centered!</h1>
</section>
我目前正在构建一个视差页面,但我在将元素定位在版块上时遇到了问题。因此我的问题是绝对定位。
有没有办法让绝对位置只在一个部分而不是整个 page/viewport 中起作用?
我已经做了一个非常简单的例子来说明我正在尝试做的事情:https://jsfiddle.net/zu2epxxq/1/
如您所见,#second
部分中的段落应位于该部分的内部,而不是主要部分 #first
。显然这是使用绝对定位的副作用。
我该如何干净利落地解决这个问题?
HTML:
<section id="first">
<div>
<p>This is a test</p>
</div>
</section>
<section id="second">
<div>
<p>More text that has to be pushed arund in this section</p>
</div>
</section>
CSS:
html,
body {
height: 100%;
color: #fff;
font-size: 16px;
margin: 0;
padding: 0;
}
section {
min-height: 100%;
}
#first {
background-color: #000;
}
#second {
background-color: #ddd;
}
section > div {
bottom: 0;
margin: 0;
font-size: 4em;
position: absolute;
transform: translate(-50%, 50%);
left: 50%;
}
对部分使用"position: relative;"。然后,您可以相对于部分元素定位子元素。
我用它做了这个: https://jsfiddle.net/hpepwvdg/1/
但我更喜欢使用 flexbox 布局模式,因为我发现了 flexbox 的强大功能:(http://www.w3schools.com/css/css3_flexbox.asp):
html, body, .container {
height: 100%;
color: #fff;
}
.container {
display: -webkit-flexbox;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-flex-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
justify-content: center;
}
#first {
background-color: #000;
}
#second {
background-color: #ddd;
}
.centered_heading {
font-size: 4em;
}
<section class="container" id="first">
<h1 class="centered_heading">Centered!</h1>
</section>
<section class="container" id="second">
<h1 class="centered_heading">Centered!</h1>
</section>