所以我有一个div应该扩展以显示切换时的列表。可以在这里查看之前和之后的状态http://reversl.net/box/,但是为了实现这一点,我还需要添加哪些样式?我想使用css过渡来增加效果。我并不担心浏览器兼容性,因为它仅用于学习目的。有什么提示吗?
<div class="box"><img src="http://www.placehold.it/250x300" alt="" />
<div class="section progress">
<h4>
<a href="#">Div Before</a>
</h4>
<div class="metrics">
<div class="meter">
<span style="width: 75%"></span>
</div><!--.meter-->
</div><!--.metrics-->
</div><!--.section-progress-->
</div><!--.box-->
<div class="box"><img src="http://www.placehold.it/250x300" alt="" />
<div class="section progress">
<h4>
<a href="#">Div After</a>
</h4>
<div class="metrics">
<div class="meter">
<span style="width: 75%"></span>
</div><!--.meter-->
</div><!--.metrics-->
</div><!--.section-progress-->
<div class="sub_section">
<ul class="list">
<li>Item 1</li>
<li class="last">Item 2</li>
</ul>
</div><!--.sub_section-->
</div><!--.box-->
.boxes {
width: 100%;
padding: 1%;
}
.box {
width: 20%;
padding: 1%;
background: #fff;
-moz-box-shadow: 2px 3px 4px 0px #e9e9e9;
-webkit-box-shadow: 2px 3px 4px 0px #e9e9e9;
box-shadow: 2px 3px 3px 0px #e9e9e9;
display: inline-block;
margin-top: 1em;
}
.box img {
margin-bottom: 1%;
}
.progress a {
margin: 0;
padding: 0;
color: #999;
text-decoration: none;
}
.metrics {
margin: -1em 0 0 0;
padding: 0;
background: #c0c0c0;
}
.accordion .progress .meter {
background: #555;
width: 100%;
position: relative;
}
.meter > span {
height: 10px;
display: block;
background-color: #777;
position: relative;
overflow: hidden;
}
.sub_section {
margin-top: 1em;
border-bottom: none;
}
.list {
padding: 0;
margin: 0;
}
.list li {
background: #dcdcdc url('http://placehold.it/40x40') no-repeat;
font-size: 11px;
color: #999;
list-style: none;
padding: 1.3em 1em 1.3em 4.5em;
margin-bottom: 5px;
}
.list .last {
border-bottom: none;
}
答案 0 :(得分:5)
我担心我无法解决您的示例代码和图片,您想要点击的内容以及您想要展示的内容。但是,以下内容适用于具有纯CSS的onclick
- 类似事件:
<div id="wrapper">
<ul id="top">
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
</ul>
<div class="box" id="one">
<p>One</p>
<span><a href="#top">Close</a></span>
</div>
<div class="box" id="two">
<p>Two</p>
<span><a href="#top">Close</a></span>
</div>
</div>
CSS:
.box {
position: absolute;
top: 20%;
left: 50%;
width: 50%;
margin-left: -25%;
border: 4px solid #000;
background-color: #f90;
/* the CSS, above, is all for aesthetic purposes, what matters is the following */
opacity: 0;
-webkit-transition: all 1s linear;
-ms-transition: all 1s linear;
-moz-transition: all 1s linear;
-0-transition: all 1s linear;
transition: all 1s linear;
}
.box:target {
opacity: 1;
-webkit-transition: all 1s linear;
-ms-transition: all 1s linear;
-moz-transition: all 1s linear;
-0-transition: all 1s linear;
transition: all 1s linear;
}
不幸的是,似乎(在Chromium 17 / Ubuntu 11.04中)无法从display: none;
动画到display: block;
同样,从height: 0
到height: auto
的过渡也会失败(尝试任何一个结果突然出现而不是转换。所以演示中的内容总是“存在”,但只是隐藏(带有不透明度),然后在点击相关链接后显示。
但是对于像幻灯片一样的效果:
.box {
/* aesthetic stuff excised for brevity */
opacity: 0;
height: 0;
overflow: hidden;
-webkit-transition: all 1s linear;
-ms-transition: all 1s linear;
-moz-transition: all 1s linear;
-0-transition: all 1s linear;
transition: all 1s linear;
}
.box:target {
opacity: 1;
height: 3em;
-webkit-transition: all 1s linear;
-ms-transition: all 1s linear;
-moz-transition: all 1s linear;
-0-transition: all 1s linear;
transition: all 1s linear;
}
答案 1 :(得分:3)
您可以使用“Checkbox Hack”:http://css-tricks.com/the-checkbox-hack/
答案 2 :(得分:2)
对代码进行这些修改将为您提供CSS转换。
在<div class="box">
内,在内容周围添加一个容器<div class="trans">
,如下所示:
<div class="box">
<div class="trans">
<img src="http://www.placehold.it/250x300" alt="" />
<div class="section progress">
<h4>
<a href="#">Div After</a>
</h4>
<div class="metrics">
<div class="meter">
<span style="width: 75%"></span>
</div><!--.meter-->
</div><!--.metrics-->
</div><!--.section-progress-->
<div class="sub_section">
<ul class="list">
<li>Item 1</li>
<li class="last">Item 2</li>
</ul>
</div><!--.sub_section-->
</div><!--.trans-->
</div><!--.box-->
然后,在你的CSS中,添加:
.box > .trans {
height:365px;
overflow:hidden;
}
.box > .trans:hover{
height: 500px;
-webkit-transition: height .25s linear;
transition: height .25s linear;
}
这将为您提供mouseenter / mouseleave类型效果。我不认为你能够做一个“onclick”类型的效果,只用CSS就可以打开它。
答案 3 :(得分:1)
除非您希望在悬停时应用,否则您将需要使用javascript来侦听触发转换的事件。所以,你可以从这样的事情开始:
$('.box').click(function(){
$(this).toggleClass('show');
});
然后在css中,您需要使用新大小的类并应用转换:
.show
{
height: 300px;
-webkit-transition: height .25s ease-in-out;
transition: height .25s linear;
}
如果你想要一个纯粹的CSS解决方案,那么你必须使用像redlena这样的':hover'伪类来处理这个问题。我唯一的区别是你不需要额外的div(.trans),你也不需要在CSS中指定子选择器(.box&gt; .trans)。
答案 4 :(得分:-1)
使用纯JavaScript,尝试使用JavaScript或jQuery
无法实现此example会让您关闭,但点击后它不会保持活动状态。