Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/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
Javascript 如何定位两个div“;标题“;及;页脚“;围绕一个div“;内容“;_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如何定位两个div“;标题“;及;页脚“;围绕一个div“;内容“;

Javascript 如何定位两个div“;标题“;及;页脚“;围绕一个div“;内容“;,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我需要根据内容高度来定位页眉和页脚。 因此,页眉和页脚与内容相邻,即使内容大小发生变化。 我想知道是否存在CSS解决方案(甚至CSS 3),是否没有JS解决方案 注意:我无法更改HTML中DIV的顺序。 下面是所需布局的图片 详情如下: 我需要顶部的内容定位后刚刚结束 收割台的底部 我需要的页脚顶部的位置后刚刚结束 内容的底部 如果标题更改高度,则内容应向上/向下移动 如果内容更改高度,则页脚应向上/向下移动 实时代码: 欢迎举例:) #内容-a,#内容-b{ 位置:绝对位置; 宽度:50

我需要根据内容高度来定位页眉和页脚。 因此,页眉和页脚与内容相邻,即使内容大小发生变化。 我想知道是否存在CSS解决方案(甚至CSS 3),是否没有JS解决方案

注意:我无法更改HTML中DIV的顺序。 下面是所需布局的图片

详情如下:

  • 我需要顶部的内容定位后刚刚结束 收割台的底部

  • 我需要的页脚顶部的位置后刚刚结束 内容的底部

  • 如果标题更改高度,则内容应向上/向下移动

  • 如果内容更改高度,则页脚应向上/向下移动

实时代码:

欢迎举例:)


#内容-a,#内容-b{
位置:绝对位置;
宽度:500px;
高度:250px;
}
#内容a{
背景色:红色;
}
#内容-b{
背景颜色:黄色;
}
#主人{
位置:绝对位置;
左:60px;
z指数:100;
}
#页眉,#页脚{
宽度:500px;
高度:50px;
}
#标题{
背景颜色:灰色;
}
#页脚{
背景颜色:蓝色;
}
内容a
内容a
标题
页脚

明白了我想:

我所做的: 由于除标题外,所有内容的顺序都正确,因此我们可以执行以下操作:

移除所有位置:绝对位置; 将页边距顶部:50px放在content-a上 放置位置:ansolute;顶部:0px;在#标题上 您还可以编辑#content-a,使其具有最小高度:250px;要调整内容的高度,请执行以下操作:

就这样

<div id="content-a">content a</div>
<div id="content-b" style="display:none">content a</div>
<div id="master">
    <div id="header">header</div>
    <div id="footer">footer</div>
</div>

对于html结构,这在纯css中是不可能的,尤其是页眉和页脚的动态高度-因为它们位于单独的div中,内容div不可能知道还有多少空间需要占用。您需要使用js来移动div和计算高度,但我将按照以下步骤进行操作:

body, html {
    height:100%;
    position:relative;
    margin:0;
    padding:0;
}
#master {
    position:absolute;
    top:0;
    bottom:0;
    left:0;
    right:0;
}
#master > div {
    display:table;
    width:100%;
    height:100%;
}
#master > div > div {
    display:table-row;
    width:100%;
}
在jquery的帮助下,对元素重新排序:

$('#master').wrapInner('<div/>');
$('#content-b').insertAfter($('#content-a').insertAfter($('#header')));
$(“#master”).wrapInner(“”);
$('content-b')。insertAfter($('content-a')。insertAfter($('header'));


我不清楚。你能提供你想要达到的目标的图片吗……你是否坚持那种html结构?因为如果您只是将页眉放在内容的上方,页脚放在内容的下方,那么它应该是默认值。很遗憾,我无法更改HTML结构:(我没有时间给你一个完整的答案,但是你应该看看flexbox:你的意思是这样的吗?使用jQuery?不,我不能更改HTML结构。谢谢你花时间在这方面。现在看到上面的答案谢谢,但我想如果你的解决方案页眉高度会改变,内容不会上下调整,因为你使用的是边距作为内容的固定大小。您没有告诉我们页眉会改变高度,只会改变内容。我看到您现在已将其添加到您的问题中
body, html {
    height:100%;
    position:relative;
    margin:0;
    padding:0;
}
#master {
    position:absolute;
    top:0;
    bottom:0;
    left:0;
    right:0;
}
#master > div {
    display:table;
    width:100%;
    height:100%;
}
#master > div > div {
    display:table-row;
    width:100%;
}
$('#master').wrapInner('<div/>');
$('#content-b').insertAfter($('#content-a').insertAfter($('#header')));