【问题标题】:How to get a scrollbar in a div with fixed header and footer?如何在具有固定页眉和页脚的 div 中获取滚动条?
【发布时间】:2017-09-14 21:37:46
【问题描述】:

我有一个网站,但滚动条有一些问题。

我想用这张图最好地解释一下。

但我无法获得这样的滚动条。

我尝试了一些,这里是jsfiddle

在这个小提琴中我也有:

div[role="main"]
{
    overflow-y: scroll;
    margin: 60px 0;
}

但是这个margin不行,不知道页眉和页脚高度怎么知道需要多少margin呢。

【问题讨论】:

  • 您可以使用 javascript/jquery 轻松获得此布局,而无需知道页眉和页脚的高度。 javascript 会在每个分辨率上自动为您计算 div role=main 的高度。你试过吗?
  • @HappySingh 你在哪里?
  • 这必须通过 html/css 来实现。我以前看过,但找不到了。
  • @jack 你将如何计算如果监视器分辨率大于当时内容 div 的高度你将如何计算 div role-main 的高度。你能指定请使用css吗?
  • 我不使用 css 计算,所以很抱歉!

标签: html css overflow css-position


【解决方案1】:

这可以通过在 body 上使用 padding 和 box-sizing = border-box 来减慢(当 body 高度为 100% 时,它会将 padding 计入高度,因此带有滚动的框将恰好位于页眉和页脚之间)

html {
 overflow: hidden;
 height: 100%;
}

body {
 padding: 60px 0px;
 height: 100%;
 box-sizing: border-box;
}

div[role="main"] {
 overflow-y: scroll;
 height: 100%;
}

http://jsfiddle.net/wPucQ/

编辑:在代码中添加了忘记的 HTML 标记

【讨论】:

  • 只需检查滚动条是否在页脚后面,这不是确切的解决方案。
  • 你看过 jsfiddle 吗? (或者你使用的是 mozilla 3.6 - / IE 7- )
  • 在谷歌浏览器中这似乎有效。但在 Firefox 中却不是 :(
  • 我修好了。使用-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; 获得所有浏览器兼容性谢谢!!
  • 您能否澄清您的评论“忘记代码中的 HTML 标记”?这是否意味着“忘记代码中的 HTML 标记”?这适用于我 html 上的CSS。谢谢!
【解决方案2】:

您需要为可滚动元素指定高度,以便计算滚动条的位置。

div[role="main"]
{
    height:400px;
    overflow-y: scroll;
    margin: 60px 0;
}

http://jsfiddle.net/gkxV4/

【讨论】:

  • 如果您使用它来显示整个页面,将页眉/页脚粘贴到视口会更容易(也更有用)。
  • 您的意思是粘贴固定的页眉和页脚?因为这就是我所做的:)
  • 使用 CSS calc() 更新以处理不同的屏幕尺寸:jsfiddle.net/51ywzqaf/1
【解决方案3】:

尝试提及此 div 的最小高度或高度 div[role="main"]{ overflow-y: 滚动;边距:60px 0;最小高度:400px;}

【讨论】:

  • 如果我不知道用户的屏幕高度,提及高度有点困难。只是一些 px 不是正确的方法。 % 是另一种选择,但在当今的浏览器/设备中,字体的像素高度不同。
【解决方案4】:

查看我的小提琴以了解整个逻辑fiddle http://jsfiddle.net/MA9k3/7

jQuery 代码:

var doc_height = $(window).innerHeight();

var header_height = $("header").height();
var footer_height = $("footer").height();

var div_height = doc_height - (header_height + footer_height);

$("#content").css({
    "height": (div_height - footer_height) + "px",
    "margin-bottom": footer_height + "px"
});

alert($("#content").height());

【讨论】:

  • 我没有提到 javascript 和 jQuery。在纯 HTML CSS 中是可能的。我以前见过。无论如何感谢您的帮助。欢迎所有帮助:)
  • 那么你正在寻找这个小提琴:jsfiddle.net/mvivekc/2a7SB/1 或看到这个:stackoverflow.com/questions/9167160/…
  • 滚动条的箭头在哪里?这是我要防止的。否则我会给我的html滚动并得到相同的结果
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
相关资源
最近更新 更多