Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 带滚动内容的垂直居中未知高度div_Html_Css_Centering - Fatal编程技术网

Html 带滚动内容的垂直居中未知高度div

Html 带滚动内容的垂直居中未知高度div,html,css,centering,Html,Css,Centering,我正在尝试制作一个类似灯箱的窗口,它有一个已知高度的标题栏和一个未知高度的内容区域 我用它垂直居中。当窗口的高度小于视口的高度时,此操作非常有效 (从CSS技巧复制粘贴的代码) 我的问题是,当滚动内容高于视口时,我不知道如何限制窗口高度并保持垂直居中。 如果窗口没有标题栏和内部内容区域,则可以通过对窗口元素应用max height和overflow:auto来轻松实现。但是我想要一个标题栏,我希望滚动条只出现在窗口的内容区域中,如下图所示: 我可以在内容区域设置overflow:auto,但是

我正在尝试制作一个类似灯箱的窗口,它有一个已知高度的标题栏和一个未知高度的内容区域

我用它垂直居中。当窗口的高度小于视口的高度时,此操作非常有效

(从CSS技巧复制粘贴的代码)

我的问题是,当滚动内容高于视口时,我不知道如何限制窗口高度并保持垂直居中。

如果窗口没有标题栏和内部内容区域,则可以通过对窗口元素应用
max height
overflow:auto
来轻松实现。但是我想要一个标题栏,我希望滚动条只出现在窗口的内容区域中,如下图所示:

我可以在内容区域设置
overflow:auto
,但是
max height
设置的百分比(我需要,因为我不能假设用户的视口高度)似乎被忽略了

不使用JS就可以进行这种布局吗

。窗口在视口下方溢出,但如果删除足够的内容(使其比视口短),窗口将垂直居中

!important
在任何元素中都有可能解决这个问题


在任何元素中都有可能解决此问题。

给出
bg
高度:100%并给出
窗口
所需的百分比高度

另一方面,您应该在同一个位置包含演示中的所有CSS,我对为什么我的方法不能正常工作感到困惑,直到我注意到在演示的最底部添加了填充

编辑

显然,在纯CSS中,您想要做的是不可能的,因为您必须为
窗口
指定
高度
,而不是
自动
。因此,我添加了一行javascript,它完全按照您的要求工作

document.getElementsByClassName('window')[0].style.height = 
    document.getElementsByClassName('window')[0].offsetHeight + "px";

给出
bg
高度:100%并给出
窗口
所需的百分比高度

另一方面,您应该在同一个位置包含演示中的所有CSS,我对为什么我的方法不能正常工作感到困惑,直到我注意到在演示的最底部添加了填充

编辑

显然,在纯CSS中,您想要做的是不可能的,因为您必须为
窗口
指定
高度
,而不是
自动
。因此,我添加了一行javascript,它完全按照您的要求工作

document.getElementsByClassName('window')[0].style.height = 
    document.getElementsByClassName('window')[0].offsetHeight + "px";

!重要信息
关于什么?我试图覆盖哪些冲突规则?
!重要信息
关于什么?我试图推翻哪些相互冲突的规则?你最终解决了你的问题吗?我想是的,但我想我不得不求助于JS。那是很久以前的事了,我现在不记得了。您答案中的演示没有显示垂直居中的div,因此它没有回答问题,对不起。对不起,我当时正在处理的视口垂直居中,没有在更大的屏幕上测试它。我更新了我的解决方案以满足您的要求(:我感谢您的努力,但演示仍然没有回答问题。
height:75%
不是“未知高度”。如果我删除了大部分内容(只留下几行)然后窗口不会缩小以适应内容;它将保持75%的高度。如果我使用
max height
,当有大量内容时,窗口将无法正常运行。好吧,我最后一次用一行javascript更新了它,使其功能与您希望的完全相同。您最终解决了问题吗?我想是的,但我没有ink我不得不求助于JS。那是很久以前的事了,我现在不记得了。不过,你答案中的演示没有显示div垂直居中,所以它没有回答这个问题,对不起。对不起,我当时正在处理的视口垂直居中,没有在更大的屏幕上进行测试。我更新了我的解决方案,以满足你的要求(:我感谢您的努力,但演示仍然没有回答问题。
高度:75%
不是“未知高度”。如果我删除了大部分内容(只留下几行)然后窗口将不会收缩以适应内容;它将保持75%的高度。如果我使用
max height
,当有大量内容时,窗口将无法正常运行。好的,我最后一次用一行javascript更新了它,使它的功能与您想要的完全相同
document.getElementsByClassName('window')[0].style.height = 
    document.getElementsByClassName('window')[0].offsetHeight + "px";