Javascript 混合绝对定位、div相对定位
好的,我想达到以下效果 我有两个div应该在彼此的上面。我有第三个分区,应该在两个分区的正下方。前两个div可以切换可见性,这样当一个可见时,另一个不可见(注意:我删除了javascript中的切换部分,以简化疑难解答)。但无论如何,第三个div应该低于其他两个div。几个小时前听起来很简单,但我遗漏了一些东西,非常感谢你的帮助 我创建了一个成对的HTML文件,其中只有重要的部分供您查看,希望能告诉我我在做什么 还请注意,我真的不想在div3上使用top属性,因为我可能希望动态更改前两个div的大小Javascript 混合绝对定位、div相对定位,javascript,html,css,Javascript,Html,Css,好的,我想达到以下效果 我有两个div应该在彼此的上面。我有第三个分区,应该在两个分区的正下方。前两个div可以切换可见性,这样当一个可见时,另一个不可见(注意:我删除了javascript中的切换部分,以简化疑难解答)。但无论如何,第三个div应该低于其他两个div。几个小时前听起来很简单,但我遗漏了一些东西,非常感谢你的帮助 我创建了一个成对的HTML文件,其中只有重要的部分供您查看,希望能告诉我我在做什么 还请注意,我真的不想在div3上使用top属性,因为我可能希望动态更改前两个div的
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
function clicked(t) {
t.style.visibility = "collapse";
t.style.opacity = 0.0;
}
</script>
</head>
<body>
<div class="container">
<div id="divone" class="one" onclick="clicked(this)"></div>
<div id="divtwo" class="two" onclick="clicked(this)"></div>
<div class="three"></div>
</div>
<style>
div {
height: 100px;
width: 100%;
transition-duration: 2s;
}
div.container {
width: 50%;
top: 0;
margin-left: 0px;
margin-top: 0px;
border-left: 0px;
border-top: 0px;
padding-left: 0px;
padding-top: 0px;
}
div.one {
position: absolute;
background-color: red;
width: 50%;
opacity: 1.0;
z-index:2;
}
div.two {
position: absolute;
background-color: green;
width: 50%;
opacity: 1.0;
z-index: 1;
}
div.three {
position: relative;
top: 0;
width: 60%;
background-color: blue;
}
</style>
</body>
</html>
函数(t){
t、 style.visibility=“collapse”;
t、 style.opacity=0.0;
}
div{
高度:100px;
宽度:100%;
过渡时间:2s;
}
分区集装箱{
宽度:50%;
排名:0;
左边距:0px;
边际上限:0px;
左边框:0px;
边框顶部:0px;
左侧填充:0px;
填充顶部:0px;
}
第一组{
位置:绝对位置;
背景色:红色;
宽度:50%;
不透明度:1.0;
z指数:2;
}
第二组{
位置:绝对位置;
背景颜色:绿色;
宽度:50%;
不透明度:1.0;
z指数:1;
}
第三分区{
位置:相对位置;
排名:0;
宽度:60%;
背景颜色:蓝色;
}
试试这个:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<style>
div {
height: 100px;
width: 100%;
transition-duration: 2s;
}
div.container {
width: 50%;
top: 0;
margin-left: 0px;
margin-top: 0px;
border-left: 0px;
border-top: 0px;
padding-left: 0px;
padding-top: 0px;
}
div.one {
background-color: red;
width: 50%;
}
div.two {
background-color: green;
width: 50%;
display:none;
}
div.three {
width: 50%;
background-color: blue;
}
</style>
<script>
function clicked(t) {
t.style.display = "none";
if (t.id === 'divone') {
document.getElementById('divtwo').style.display = 'block';
} else {
document.getElementById('divone').style.display = 'block';
}
}
</script>
</head>
<body>
<div class="container">
<div id="divone" class="one" onclick="clicked(this)">DIV 1</div>
<div id="divtwo" class="two" onclick="clicked(this)">DIV 2</div>
<div class="three">DIV3</div>
</div>
</body>
</html>
div{
高度:100px;
宽度:100%;
过渡时间:2s;
}
分区集装箱{
宽度:50%;
排名:0;
左边距:0px;
边际上限:0px;
左边框:0px;
边框顶部:0px;
左侧填充:0px;
填充顶部:0px;
}
第一组{
背景色:红色;
宽度:50%;
}
第二组{
背景颜色:绿色;
宽度:50%;
显示:无;
}
第三分区{
宽度:50%;
背景颜色:蓝色;
}
函数(t){
t、 style.display=“无”;
如果(t.id=='divone'){
document.getElementById('divtwo').style.display='block';
}否则{
document.getElementById('divone').style.display='block';
}
}
第一组
第2组
第三组
需要更好地描述应该发生的事情。当我点击它时,我看到两个状态的变化。是的,你看到前两个div都消失了。一旦两者都消失,我希望第三个div向上移动以填充空间。这并不完全是我想要做的,但是如果我理解了这个更简单的例子,我可以得到我真正想要做的。但我最终看到了第三个div。“我希望第三个div向上移动以填充空间。”如果不清楚,我将试着用另一种方式解释:前两个div占用100px。我希望第三个div在前两个崩溃的情况下向上移动100像素。我是说这就是我所看到的。它有100像素高,但没有其他两个那么宽,占用的空间与其他两个div相同。谢谢,这正是我想要的。我稍微修改了您的代码,以允许div1和div2都消失,而div3也相应地移动。我投票认为这是正确的答案,并将投票赞成,但还没有足够的声誉。。。因此,它似乎是显示:“块”是我缺少的?您使用绝对定位,但您需要静态定位。这是主要问题。检查CSS代码中的差异。