我发现了这篇帖子如何在单击时创建滑动DIV?
但是所有答案都是Jquery方法。有没有办法使用纯CSS创建这个效果? 我还有其他想法...
- 我可以添加什么来使下拉的div停留在滚动时
- 更改触发动画的链接为“Close”,以使div向上滑动
这里是那篇帖子中的示例链接// http://shutterbugtheme.tumblr.com/
我也尝试过搜索,但唯一的结果都是Jquery方法...
我发现了这篇帖子如何在单击时创建滑动DIV?
但是所有答案都是Jquery方法。有没有办法使用纯CSS创建这个效果? 我还有其他想法...
这里是那篇帖子中的示例链接// http://shutterbugtheme.tumblr.com/
我也尝试过搜索,但唯一的结果都是Jquery方法...
虽然有点hack,但是这是可行的。在CSS中被称为:checked的两个元素保留状态的是复选框和单选按钮元素。因此,如果您使用for属性将复选框与标签相关联,并添加一个div,您可以通过读取(隐藏)按钮的状态来获得结果:
<div class=window>
<input type=checkbox class=toggle id=punch>
<label for=punch>Punch It, Chewie<label>
<div><p>Here’s my content. Beep Boop Blurp.</p></div>
</div>
然后是 CSS:
input.toggle { display: none; }
input.toggle ~ div { height: 0px; margin: .2rem; overflow: hidden; }
input.toggle:checked ~ div { height: 180px; }
在纯CSS中无法识别点击。您可以使用:hover和过渡来实现,但这是最接近没有JavaScript的情况。
.hover
{
cursor: pointer;
position: relative;
z-index: 1;
}
.slide
{
position: absolute;
top: 0;
z-index: -1;
-webkit-transition: top 1s;
-moz-transition: top 1s;
}
.hover:hover + .slide
{
top: 50px;
}
http://jsfiddle.net/Kyle_/MaMu9/1/
请注意,过渡效果是CSS3的,不支持IE<9和较旧版本的浏览器。
编辑:在另一个答案中使用CSS的:focus属性后,有一点需要注意:要让它收起来,必须在元素外面点击一下,否则就可以正常工作。
请注意,元素必须具有tabindex ='1'(或根据元素在文档中的位置确定任何有意义的数字)才能正常工作。
.hover:focus + .slide
{
top: 50px;
-webkit-transition: top 1s;
}
:focus
hack或使用隐藏的复选框和分配的标签作为触发元素来实现,参见:http://codepen.io/surjithctly/pen/pLDwe - feeela您可以识别元素上的“焦点”事件并使用CSS过渡对其进行操作。
这里有一个例子,当单击时将 div 向下移动 50px。
标记
<div tabindex='1' id='box'></div>
CSS
#box {
background-color:#3a6d90;
width:100px; height:100px;
transition: margin-top 2s;
-moz-transition: margin-top 2s; /* Firefox 4 */
-webkit-transition: margin-top 2s; /* Safari and Chrome */
-o-transition: margin-top 2s; /* Opera */
}
#box:focus {
margin-top:50px;
outline:0;
}
<body>
<div id="hidden-div"></div>
<div id="main-content-div"></div>
</body>
input {
display: none;
}
label {
cursor: pointer;
display: inline-block;
padding: 10px 20px;
border: 1px solid;
border-radius: 4px;
background: tomato;
color: #FFF;
font-family: arial;
-webkit-transition: background-color 0.1s, color 0.1s;
}
label:hover {
background: #blue;
color: #blue;
}
.test {
-webkit-transition: height .3s ease;
height: 0;
overflow: hidden;
width: 200px;
background: tomato;
margin-top: 10px;
color: #FFF;
}
input:checked + .test {
height: 100px;
}
<label for="check">Click me</label>
<input id="check" type="checkbox">
<div class="test">
<p>I am some hidden text</p>
</div>
使用target
伪类来检测点击即可完成此操作。
将按钮的href设置为滑动div的id。
然后,可以在滑动div上的slidingDiv :target类中使用css3 transition
设置高度来实现下滑。
我认为没有一种纯CSS的方法可以使原始按钮更改其href以关闭滑动div,但您可以在滑动div上添加一个关闭按钮来关闭它。
这个关闭按钮通过在滑动div类上添加相同的过渡来工作。
这是一个演示。
享受。
简单:
.contents {
background: yellow;
color: rgba(0, 0, 0, .8);
padding: 20px;
margin:0;
}
.slide-up, .slide-down {
overflow:hidden
}
.slide-up > div, .slide-down > div {
margin-top: -25%;
transition: margin-top 0.4s ease-in-out;
}
.slide-down > div {
margin-top: 0;
}
另一种做同样事情的方法:
.contents {
background: yellow;
color: rgba(0, 0, 0, .8);
padding: 20px;
margin:0;
}
.slide-up, .slide-down {
overflow:hidden;
}
.slide-up > div, .slide-down > div {
transform: translateY(-100%);
transition: .4s ease-in-out;
}
.slide-down > div {
transform: translateY(0);
}