如何仅使用CSS在Div中切换效果?

Sum*_*tel 3 html css html5 css3

注意:我尝试了与此主题相关的所有问题和答案。另外,我尝试了相关问题并尝试解决,但未成功。因此,请仔细阅读我的问题。

我想要

  1. click meDiv然后hiddendiv显示Second Div。但是我想第二次单击click meDiv,然后隐藏hiddendivDiv。 使用纯CSS的类似切换事件

  2. click meDiv然后hiddendiv显示Second Div。但是我单击其他区域,然后单击隐藏hiddendivDiv。因此,我不想hiddendiv使用纯CSS在任何其他单击中都不隐藏Div。

注意: 仅纯CSS,在“应答中使用”的CSS3不能使用(javascript,jquery和其他任何控件

.clicker {
  width: 100px;
  height: 100px;
  background-color: blue;
  outline: none;
  cursor: pointer;
  color:#FFF;
}

.hiddendiv {
  display: none;
  height: 200px;
  background-color: green;
}

.clicker:focus+.hiddendiv {
  display: block;
}
Run Code Online (Sandbox Code Playgroud)
<div>
  <div class="clicker" tabindex="1">Click me</div>
  <div class="hiddendiv"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

LGS*_*Son 10

对于给定的要求,这是不可能的,所有元素都是div

如果您将的更改div为锚点链接a,并使用:target

通过设置display: inline-block锚点a,您可以使用div

.clicker {
  display: inline-block;
  width: 100px;
  height: 50px;
  background-color: blue;
  color:#FFF;
}
.clicker.hidden {
  display: none;
}
.hiddendiv {
  height: 0px;
  background-color: green;
  overflow: hidden;
  transition: height 0.5s;
}
.hiddendiv.nr2 {
  background-color: red;
}

#showdiv1:target ~ div a[href="#showdiv1"],
#showdiv2:target ~ div a[href="#showdiv2"] {
  display: none;
}
#showdiv1:target ~ div a[href="#hidediv1"],
#showdiv2:target ~ div a[href="#hidediv2"] {
  display: inline-block;
}
#showdiv1:target ~ div .hiddendiv.nr1,
#showdiv2:target ~ div .hiddendiv.nr2 {
  height: 150px;
}
Run Code Online (Sandbox Code Playgroud)
<div id="showdiv1"></div>
<div id="showdiv2"></div>

<div>
  <a href="#showdiv1" class="clicker" tabindex="1">Click me 1</a>
  <a href="#hidediv1" class="clicker hidden" tabindex="1">Click me 1</a>

  <a href="#showdiv2" class="clicker" tabindex="2">Click me 2</a>
  <a href="#hidediv2" class="clicker hidden" tabindex="2">Click me 2</a>

  <div class="hiddendiv nr1"></div>
  <div class="hiddendiv nr2"></div>
</div>
Run Code Online (Sandbox Code Playgroud)


Chi*_*ler 6

您可以使用复选框和一些 css 操作来实现这一点

div input {
  margin-right: 100px;
}

.check-btn label {
  display: inline-block;
}

.check-btn input {
  display: none;
}

.clicker {
  background: green;
  padding: 5px 10px;
}

.hiddendiv {
  background: #000;
  width: 100px;
  height: 100px;
  display: none;
}

.check-btn input:checked ~ .hiddendiv {
  display: block;
}
Run Code Online (Sandbox Code Playgroud)
<div class="check-btn">

    <input id="myid" type="checkbox" >
    <label for="myid" class="clicker">Click me</label>
    <div class="hiddendiv"></div>

</div>
Run Code Online (Sandbox Code Playgroud)

这里是jsfiddle


aje*_*aje 6

您可以使用checkbox输入,并根据是否选中此项来显示隐藏 div。

下面是一个使用相同的例子。

.clicker {
  width: 100px;
  height: 100px;
  background-color: blue;
  outline: none;
  cursor: pointer;
  color:#FFF;
  display:block;
}

.hiddendiv {
  display: none;
  height: 200px;
  background-color: green;
}

.clicker:focus+.hiddendiv {
  display: block;
}
.hidden{
  margin-left:-99999px;
}
input#cmn-toggle-7:checked + label + div{
 display:block;
}
Run Code Online (Sandbox Code Playgroud)
<div>
  <input id="cmn-toggle-7" class="hidden" type="checkbox" >
  <label for="cmn-toggle-7" class="clicker" tabindex="1">Click me</label>
  <div class="hiddendiv"></div>
</div>
Run Code Online (Sandbox Code Playgroud)