如何固定元素的位置但相对于容器
How to have fixed position of element but relative to container
我有一个容器,左右各有 2 个按钮,中间有文本。我希望文本滚动,同时 2 个按钮固定在容器底部,如下图所示。
但我希望卷轴在外容器上。附上下面的 html 和 css 代码。
此外,当线条小于容器的高度时,按钮仍应贴在容器的底部..
请帮忙。
PS: 标记和 css 都可以更改。
.container {
width: 400px;
height:200px;
border: 1px solid;
position:relative;
overflow:auto;
margin-bottom:4rem;
}
.line {
height:8px;
width:100%;
background-color: grey;
border-radius: 8px;
margin-bottom:20px;
}
.text{
padding: 5px 50px;
}
.button-wrapper{
position: absolute;
bottom: 4px;
}
.button{
width:32px;
height:32px;
background-color:orange;
}
.left {
left:4px;
}
.right{
right:4px;
}
<div class="container">
<div class="button-wrapper left">
<div class="button "></div>
</div>
<div class="text">
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
</div>
<div class="button-wrapper right">
<div class="button "></div>
</div>
</div>
如果允许您更改标记,这里有一个解决方案:
将两个按钮放在包装器中:
<div class="button-wrapper">
<div class="button left"></div>
<div class="button right"></div>
</div>
将 position: sticky
添加到您的 .button-wrapper
.container {
width: 400px;
height:200px;
border: 1px solid;
position:relative;
overflow:auto;
margin-bottom:4rem;
}
.line {
height:8px;
width:100%;
background-color: grey;
border-radius: 8px;
margin-bottom:20px;
}
.text{
padding: 5px 50px;
}
.button-wrapper{
position: sticky;
bottom: 4px;
}
.button-wrapper:after {
content:'';
display: table;
clear: both;
height: 0;
}
.button{
width:32px;
height:32px;
background-color:orange;
}
.left {
float: left;
margin-left: 4px;
}
.right{
float: right;
margin-right: 4px;
}
<div class="container">
<div class="text">
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
</div>
<div class="button-wrapper">
<div class="button left"></div>
<div class="button right"></div>
</div>
</div>
将您的内容包装在 div 中并修改 css 对我有用。
Working example
.container {
width: 400px;
height: 200px;
border: 1px solid;
position: relative;
overflow: hidden;
margin-bottom: 4rem;
}
.line {
height: 8px;
width: 100%;
background-color: grey;
border-radius: 8px;
margin-bottom: 20px;
}
.text {
max-height: 190px;
overflow: auto;
position: relative;
}
.content-div {
width: 334px;
margin: 0 auto;
}
.button {
width: 32px;
height: 32px;
background-color: orange;
display: inline-block;
position: absolute;
bottom: 0;
}
.left {
left: 0;
}
.right {
right: 0;
}
<div class="container">
<div class="text">
<div class="content-div">
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
</div>
</div>
<div class="button-wrapper">
<div class="button left"></div>
<div class="button right"></div>
</div>
</div>
这是使用 CSS 网格和 position:sticky
的想法,您可以在其中保留标记
.container {
width: 400px;
height:200px;
border: 1px solid;
overflow:auto;
display:grid;
grid-template-columns:auto 1fr auto; /* 3 columns */
margin-bottom:4rem;
}
.line {
height:8px;
background-color: grey;
border-radius: 8px;
margin-bottom:20px;
}
.text{
padding: 5px 50px;
}
.button-wrapper{
position:sticky;
bottom:5px;
margin: auto 5px 5px; /* auto will push the element to the bottom*/
}
.button{
width:32px;
height:32px;
background-color:orange;
}
<div class="container">
<div class="button-wrapper">
<div class="button "></div>
</div>
<div class="text">
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
</div>
<div class="button-wrapper ">
<div class="button "></div>
</div>
</div>
<div class="container">
<div class="button-wrapper">
<div class="button "></div>
</div>
<div class="text">
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
</div>
<div class="button-wrapper ">
<div class="button "></div>
</div>
</div>
我有一个容器,左右各有 2 个按钮,中间有文本。我希望文本滚动,同时 2 个按钮固定在容器底部,如下图所示。
但我希望卷轴在外容器上。附上下面的 html 和 css 代码。
此外,当线条小于容器的高度时,按钮仍应贴在容器的底部..
请帮忙。
PS: 标记和 css 都可以更改。
.container {
width: 400px;
height:200px;
border: 1px solid;
position:relative;
overflow:auto;
margin-bottom:4rem;
}
.line {
height:8px;
width:100%;
background-color: grey;
border-radius: 8px;
margin-bottom:20px;
}
.text{
padding: 5px 50px;
}
.button-wrapper{
position: absolute;
bottom: 4px;
}
.button{
width:32px;
height:32px;
background-color:orange;
}
.left {
left:4px;
}
.right{
right:4px;
}
<div class="container">
<div class="button-wrapper left">
<div class="button "></div>
</div>
<div class="text">
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
</div>
<div class="button-wrapper right">
<div class="button "></div>
</div>
</div>
如果允许您更改标记,这里有一个解决方案:
将两个按钮放在包装器中:
<div class="button-wrapper">
<div class="button left"></div>
<div class="button right"></div>
</div>
将 position: sticky
添加到您的 .button-wrapper
.container {
width: 400px;
height:200px;
border: 1px solid;
position:relative;
overflow:auto;
margin-bottom:4rem;
}
.line {
height:8px;
width:100%;
background-color: grey;
border-radius: 8px;
margin-bottom:20px;
}
.text{
padding: 5px 50px;
}
.button-wrapper{
position: sticky;
bottom: 4px;
}
.button-wrapper:after {
content:'';
display: table;
clear: both;
height: 0;
}
.button{
width:32px;
height:32px;
background-color:orange;
}
.left {
float: left;
margin-left: 4px;
}
.right{
float: right;
margin-right: 4px;
}
<div class="container">
<div class="text">
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
</div>
<div class="button-wrapper">
<div class="button left"></div>
<div class="button right"></div>
</div>
</div>
将您的内容包装在 div 中并修改 css 对我有用。 Working example
.container {
width: 400px;
height: 200px;
border: 1px solid;
position: relative;
overflow: hidden;
margin-bottom: 4rem;
}
.line {
height: 8px;
width: 100%;
background-color: grey;
border-radius: 8px;
margin-bottom: 20px;
}
.text {
max-height: 190px;
overflow: auto;
position: relative;
}
.content-div {
width: 334px;
margin: 0 auto;
}
.button {
width: 32px;
height: 32px;
background-color: orange;
display: inline-block;
position: absolute;
bottom: 0;
}
.left {
left: 0;
}
.right {
right: 0;
}
<div class="container">
<div class="text">
<div class="content-div">
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
</div>
</div>
<div class="button-wrapper">
<div class="button left"></div>
<div class="button right"></div>
</div>
</div>
这是使用 CSS 网格和 position:sticky
的想法,您可以在其中保留标记
.container {
width: 400px;
height:200px;
border: 1px solid;
overflow:auto;
display:grid;
grid-template-columns:auto 1fr auto; /* 3 columns */
margin-bottom:4rem;
}
.line {
height:8px;
background-color: grey;
border-radius: 8px;
margin-bottom:20px;
}
.text{
padding: 5px 50px;
}
.button-wrapper{
position:sticky;
bottom:5px;
margin: auto 5px 5px; /* auto will push the element to the bottom*/
}
.button{
width:32px;
height:32px;
background-color:orange;
}
<div class="container">
<div class="button-wrapper">
<div class="button "></div>
</div>
<div class="text">
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
</div>
<div class="button-wrapper ">
<div class="button "></div>
</div>
</div>
<div class="container">
<div class="button-wrapper">
<div class="button "></div>
</div>
<div class="text">
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
</div>
<div class="button-wrapper ">
<div class="button "></div>
</div>
</div>