css 如何使页脚出现在页面的末尾而不粘滞

piok6c0g  于 2023-04-01  发布在  其他
关注(0)|答案(2)|浏览(132)

我发现了一些类似的问题,但不幸的是,他们没有为我的情况下工作.我想要的东西,出现在我的2步入门屏幕的页面底部,但如果我向上滚动,它不应该是粘滞的,不应该出现在滚动.有人可以建议什么?
我尝试使用bottom来实现这一点:0和位置:绝对的,但这使得页脚粘性,即使我向上滚动。
如果我去掉底部:0并使位置:相对的,修复了粘滞问题,但使页脚在屏幕的步骤1中出现,并在步骤2中显示良好。
MainFooter.vue组件中的页脚类-它是主 Package 类:

.footer {
  font-style: normal;
  font-weight: 500;
  font-size: 11px;
  display: flex;
  flex-direction: column;
  width: 100%;
  padding-left: 24px;
  padding-right: 24px;
  align-items: center;
  text-align: center;
  text-transform: capitalize;
  color: var(--black);
  margin-top: 100px;
  position: relative;
  background-color: var(--white);
}

我的onboarding.vue组件布局结构:

<template>
  <div class="d-flex mb-3 justify-content-between">
    <!—header—>
   </div>

  <div class="d-flex flex-column ">
    <div class="px-2 flex-fill" v-if="currentStep == 1”>
     <!--Step 1: Language Selection-->
        </div>

        <div class="px-2 flex-fill" v-if="currentStep == 2">
        <!--Step 2: Agent Selection-->
        </div>
  </div>

  <div class="d-flex mb-3 justify-content-end">
      <MainFooter />
  </div>
</template>

这是我的两步入门屏幕图像。x1c 0d1xx 1c 1d 1x

cgh8pdjw

cgh8pdjw1#

要实现所需的行为,您可以使用CSS和JavaScript的组合。您可以尝试以下方法:
1.将页脚的位置设置为absolutebottom: 0,就像您已经做过的那样。
1.当页脚元素进入视图时,向其添加一个类,当它退出视图时,移除该类。
1.使用类在absolutefixed之间切换页脚的位置。
下面是一个示例实现:
HTML:

<div class="wrapper">
  <!-- Onboarding content -->
</div>
<div class="footer" id="footer">
  <!-- Footer content -->
</div>

CSS:

.footer {
  position: absolute;
  bottom: 0;
}

.footer.fixed {
  position: fixed;
}

JavaScript:

const footer = document.getElementById('footer');

function toggleFooterPosition() {
  const wrapper = document.querySelector('.wrapper');
  const wrapperBottom = wrapper.getBoundingClientRect().bottom;
  const viewportBottom = window.innerHeight;

  if (wrapperBottom <= viewportBottom) {
    footer.classList.remove('fixed');
  } else {
    footer.classList.add('fixed');
  }
}

window.addEventListener('scroll', toggleFooterPosition);

此代码侦听窗口上的滚动事件并检查 Package 器元素是否在视图中。如果 Package 器元素在视图中,则页脚的位置设置为absolute,否则设置为fixed。您可能需要调整代码以适应特定的布局和样式需求。

g2ieeal7

g2ieeal72#

问题很可能是您在页脚上使用了position: absolute,但最近的定位祖先元素有 no 位置,因此页脚将其自身定位为相对于文档主体。
您可能需要将所有内容 Package 在另一个div中来完成此操作,但如果您这样做了,您可以将position: relative应用于父div,为页脚提供一个元素,该元素不是要将其自身定位到的文档主体。
请尝试这个codesandbox示例。滑块可以用来改变页面高度,以显示页脚如何始终保持在底部。
需要注意的重要元素是页脚周围的container div和父page div(为了清晰起见,删除了一些无关的代码)

<div class="page">
  <div class="content">
    ...
  </div>
  ...
  <div class="container">
    <div class="footer">Footer</div>
  </div>
</div>

position: absolute赋给容器div,将position: relative赋给页面div,将始终将容器定位在页面div的底部,而不管div中还有其他内容。

.page {
  height: 1000px;
  width: 80vw;
  position: relative;
}
.container {
  width: 80vw;
  height: 50px;
  position: absolute;
  bottom: 0;
}

如果您在沙箱中注解掉position: relative,您将看到容器div如何将其自身定位到文档主体,并对滚动做出React。

相关问题