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

使用CSS/JavaScript将侧栏div与另一个div切换

南宫凯康
2023-03-14

我的情况是:

所以我尝试通过单击另一个div来切换侧栏。它是一个100%高度的边栏,固定在视区的右侧。本质上,我试图将一个300px的div包装在50px宽的切换div和250px宽的侧边栏div周围,并且我想用一个负的右边距像素值来隐藏侧边栏部分。使用.toggle:active选择器(所以当单击toggle div时会发生这种情况),我想通过将边距右的像素值设置回0px来显示侧栏部分。

到目前为止的代码

<div class="wrapper">
  <a href="#">
    <div class="toggle">Toggle</div>
  </a>
  <div class="cart">Cart</div>
</div>

CSS到目前为止:

.wrapper {
  position:fixed;
  width:300px;
  height:100%;
  background-color:orange;
  top:0;
  right:0;
  margin-right:-250px;
}
.toggle {
  position:relative;
  display:block;
  width:50px;
  height:100%;
  background-color:grey;
  float:left;
}
.toggle:active .wrapper {
  margin-right:0px;
}
.cart {
  position: relative;
  width:250px;
  height:100%;
  background-color:red;
  float:right;
}

这是jsfiddle!

我的问题是:

当.toggle:active处于激活状态时,我如何锁定.wrapper来更改css属性?另外,我如何指定边栏什么时候可见,什么时候不可见?

我是Javascript的新手,但由于使用了回调函数,我似乎需要Javascript来完成这项工作。如果只有CSS是可能的,我会倾向于这种解决方案。请注意,我想使用右边距,这样我就可以选择以后使用CSS转换来使我的元素向左和向右滑动。

共有2个答案

陈和裕
2023-03-14

演示:http://jsfidle.net/victornpb/yjyjc/30/

就用这个:

/* Closed */
.wrapper{
    margin-right:-250px; 
}

/* Opened */
.wrapper:hover{
    margin-right:0px;
}

演示:http://jsfidle.net/victornpb/yjyjc/6/

JS:

var wrapper = document.getElementsByClassName('wrapper')[0];
var toggle = document.getElementsByClassName('toggle')[0];

window.onload=function(){

    toggle.onclick=function(){
        wrapper.classList.toggle('opened'); 
    }

}

CSS:

.wrapper{
    position:fixed;
    width:300px;
    height:100%;
    background-color:orange;
    top:0;
    right:0;
    margin-right:-250px;
}
.wrapper.opened{
    margin-right:0px;
}
赏育
2023-03-14

为此,我建议使用jQuery。它是简单的和较少的机会错误。

$('.toggle').click(function() {
    $('.cart').toggle();
});

http://api.jquery.com/toggle/

 类似资料:
  • 我有一个带有类属性。我无法改变这一点。 我试图在它的右边浮动一个较小的div,但是,它总是出现在父div的下面。我必须如何标记CSS?

  • 老友记.我有两个DIVS。在一个div中,我有几个列表项“li”。我想做的是,每次我悬停在div 1的li上时,我想改变div 2的背景颜色。为此我需要使用css。谢谢. 你好 null 所以我想要的是,当悬停在id为“red”的li上时,将类为“contents”的div的背景颜色更改为红色。使用CSS。这是我的全部Html文件。

  • 问题内容: 我希望在上面。我尝试使用,但不起作用。 我已经试过这段代码: 问题答案: 您可以同时添加到div和创建 或者您可以使用,现在应该将其放置在 3D空间中, 而不要在平面中展平。 您也可以使用一些随机的像或 也可以,但是它们不好

  • 问题内容: 在将一个人叠加到另一个人上时,我需要帮助。 我的代码如下所示: 不幸的是,我不能将或嵌套在第一个内部。 如图所示,它必须是两个单独的,但是我需要知道如何将放置在上方和最右侧,并以的顶部为中心。 问题答案: 我建议使用来了解和子元素。

  • 在这段代码中,我试图将一个导航栏(content1)覆盖在另一个导航栏(content)之上,但似乎什么都不起作用。我做错了什么?即使我可以使其覆盖,它们也不是以容器为中心放置的。 null null 只是想知道如何将我的导航条覆盖在另一个导航条之上并使其在容器中居中,

  • 问题内容: 我搜索了其他问题,尽管这个问题似乎与其他几个问题相似,但到目前为止,我所看到的任何问题似乎都无法解决我遇到的问题。 我有一个div,其中包含许多其他div,每个div都向左浮动。这些div分别包含照片和标题。我要的是使照片组位于包含div的中心。 从下面的代码中可以看到,我已经尝试在父div上同时使用和,并且还在照片后添加了(如另一个主题中所述)。似乎没有什么改变。 谢谢。我感谢任何建