当前位置: 首页 > 知识库问答 >
问题:

前端 - css 怎么让某个盒子一直处于底部?

法子昂
2024-07-01

css 怎么让盒子一直处于底部
如图,这样是正常的,没有问题:
image.png
但我点“上箭头”后变成了
image.png

视图代码:

<div class="outerDiv">
  <div class="footer">
    &copy; 2024 By ailu &nbsp
    <a href="xxx" target="_blank">
      <img alt="GitHub" class="github" src="../../assets/GitHub.svg" width="30">
    </a>
  </div>
</div>

样式代码

.outerDiv{
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  overflow: hidden;
}
.footer {
  width: 100%;
  background: #42ace8;
  color: white;
  text-align: center;
  margin-top: 400px;
  padding: 40px 0 40px 0;
  font-size: 18px;
}

点击“上箭头”触发的事件

const setUpDown = () => {
  if (upDown.value) {
    //  点击向上的箭头,修改高度为60px
    setProperty('--header-height','60px');
  }else{
    // 点击向下的箭头,修改高度为100vh
    setProperty('--header-height','100vh');
  }
  upDown.value = !upDown.value
}

共有2个答案

焦苏燕
2024-07-01

根据AI的答案,用margin-top: auto;

赵正雅
2024-07-01

要使 .footer 盒子在 .outerDiv 内始终保持在底部,你可以使用 Flexbox 的 margin-top: auto; 代替固定的 margin-top: 400px;margin-top: auto; 会将剩余的空间分配给 .footer 之前的元素,这样 .footer 就会被推送到 .outerDiv 的底部。

同时,由于你正在使用 CSS 变量来动态改变头部的高度,你应该确保这个高度变化不会影响到 .footer 的位置。这里假设你有一个 .header 元素,其高度由 CSS 变量 --header-height 控制。

首先,更新你的 CSS 样式:

.outerDiv {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  overflow: hidden;
}

.header {
  /* 假设这是你的头部元素,其高度由 CSS 变量控制 */
  height: var(--header-height); /* 初始值可以是 100vh 或其他值 */
  /* 其他样式... */
}

.footer {
  width: 100%;
  background: #42ace8;
  color: white;
  text-align: center;
  /* 使用 margin-top: auto; 而不是固定的 margin */
  margin-top: auto;
  padding: 40px 0;
  font-size: 18px;
  /* 其他样式... */
}

然后,确保你的 HTML 结构包含 .header.footer 都在 .outerDiv 内:

<div class="outerDiv">
  <div class="header">
    <!-- 头部内容 -->
  </div>
  <!-- 其他内容... -->
  <div class="footer">
    &copy; 2024 By ailu &nbsp;
    <a href="xxx" target="_blank">
      <img alt="GitHub" class="github" src="../../assets/GitHub.svg" width="30">
    </a>
  </div>
</div>

最后,你的 JavaScript 函数 setUpDown 应该可以正常工作,只要它正确地设置了 --header-height 变量,并且这个变量被 .headerheight 属性所使用。

注意:在 JavaScript 中设置 CSS 变量时,你应该使用 document.documentElement.style.setProperty 或者如果你有一个具体的元素引用,可以直接在该元素上设置,例如 headerElement.style.setProperty。同时,确保你的 CSS 变量名称和你在 JavaScript 中使用的名称一致(在你的例子中是 --header-height)。

 类似资料:
  • 盒模型计算一个div大小时是不会算入margin的,可我在写页面时往往会感觉margin有些情况下是要考虑的,尤其是在父子情况下,子盒子的margin是要算尽父盒子大小的,所以我比较疑惑的是计算元素实际大小怎么总结合适呢?

  • 实在是不知道哪里错了? 解决了,但是这样写不是一样的吗? 解构出来就不提示key重复了,不知道为啥

  • 主要内容:内容区(content),内边距(padding),边框(border),外边距(margin),元素的宽度和高度盒子模型是网页设计中经常用到的一种思维模型,由四个部分构成,从内到外分别为内容区(content)、内边距(padding)、边框(border)和外边距(margin),CSS 为这四个部分提供了一系列相关属性,通过对这些属性的设置可以丰富盒子的表现效果。 网页中的每个元素都可以看作是如下图所示一个盒子模型: 图:盒子模型 内容区(content) 内容区是整个盒子模型的

  • CSS 盒子模型(Box Model) 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。 CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。 盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。 下面的图片说明了盒子模型(Box Model): 重要: 当您指定一个CSS元素的宽度和高度属性时,你只是设

  • line-height是设置行高,但是有一个问题,我不希望第一行的top和最后一行bottom也被影响,言外之意就是我只想设置段落内的间距,这该怎么做呢?

  • ,文字前面跟着已到期或者即将到期,但是这段文字是右对齐,且以最长文本的长度作为整个盒子的宽度,并设置背景色。

  • 试了很多方法,只能自适应浏览器大小,不能自适应盒子大小,想问下各位大佬有什么方法可以实现我想要的效果?

  • 页面两个el-upload,一个选择appkey文件,一个选择appsecret文件,再点击上传按钮上传,请问怎么处理