单击时动画化图像功能,同时重叠其同级元素
animate out image on click function while overlapping its sibling elements
第一次使用,需要帮助。
我有三个li li li
元素,每个元素都有自己的<img>
。我想在单击所选元素时,将单个<img>
向外动画,同时重叠其他同级元素(在此扩展效果中,同级元素不应移动)。
我有的 HTML 标记:
<div class="wrapper">
<ul>
<li class="card">
<div class="content">
<img src="some-img.jpg">
</div>
</li>
<li class="card">
<div class="content">
<img src="some-img.jpg">
</div>
</li>
<li class="card">
<div class="content">
<img src="some-img.jpg">
</div>
</li>
</ul>
</div>
CSS 标记:
.card {
position: relative;
width: 28%;
height: 100px;
float: left;
margin: 2.5%;
overflow: hidden;
}
.content {
position: absolute;
width: 100%;
height: 100%;
top: -50%;
left: 0;
transition: all 1s ease-in;
}
img {
width: 100%;
}
.JS:
$('.card').on('click','.content',function(){
$(this).css({
'position':'fixed',
'z-index':'10'
});
});
我已经来回对这段代码进行了不同的迭代,但是将.content
的位置设置为 fixed 确实有点接近我想要做的事情,它与其他兄弟姐妹重叠......但没有任何向外流动的平滑过渡。
下面是代码笔中代码的链接:http://codepen.io/broham89/pen/WrJmyB
我非常感谢这方面的任何帮助。
z-index
和position
在技术上不是可动画的属性,因此无论哪种解决方案都必须有点笨拙。您可以通过摆弄CSS类和jQuery切换来实现这一点。我稍微更改了代码,以便主动画/过渡发生在父li
而不是.content
元素上。为了使所有三个li
都保持在同一位置,我将它们更改为具有不同:nth-child
定位声明的绝对定位元素,并给ul
一个relative
position
。目前,它是围绕三个元素设计的,但如果需要更多元素,您可以使用这些值(或使用 JS 来确定数学)。
这里的jQuery代码切换.cardhover
类,该类将元素移动到0
的位置left
(ul
容器的开始),以防止任何溢出。它还为z-index
增加了.cardactive
,以确保元素在较大/较小的过渡期间位于其他元素之上。(它会在开始时从任何其他同级中删除该类。
https://jsfiddle.net/nn454trm/11/
$('.card').on('click', '.content', function() {
$(this).parent().siblings().removeClass('cardactive');
$(this).parent().addClass('cardactive').toggleClass('cardhover');
});
ul {
position: relative;
}
.card {
position: absolute;
width: 28%;
height: 100px;
transition: 2s;
margin: 2.5%;
overflow: hidden;
}
.card:nth-child(1) {
left: 0;
}
.card:nth-child(2) {
left: 33.3%;
}
.card:nth-child(3) {
left: 66.66%;
}
.content {
position: absolute;
width: 100%;
height: 100%;
left: 0;
transition: all 1s ease-in;
}
img {
width: 100%;
}
.cardhover {
width: 95%;
left: 0% !important;
}
.cardactive {
z-index: 20;
background: blue; //for demo purposes
}
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<div class="wrapper">
<ul>
<li class="card">
<div class="content">
<img src="some-img.jpg" alt="" />
</div>
</li>
<li class="card">
<div class="content">
<img src="some-img.jpg" alt="" />
</div>
</li>
<li class="card">
<div class="content">
<img src="some-img.jpg" alt="" />
</div>
</li>
</ul>
</div>
对于平滑过渡,您不想要animate
而不是css
吗?
http://api.jquery.com/animate/
- HighCharts长标题文本在某些元素上重叠
- 如何检测重叠元素下的单击
- 当静态元素与滚动上的固定元素位置重叠时进行检测
- jQuery 可调整大小:如何在调整大小拖动期间获取重叠元素
- 检查两个或多个 DOM 元素是否重叠
- 如何使用可调整大小的元素重叠其他元素
- 如何定位自动重叠的元素
- 正在检测Html元素是否与另一个Html元件重叠
- Svg文本元素被另一个Svg元素重叠
- 根据两个元素的重叠宽度动态设置左填充
- 与另一个子元素重叠列表项
- 使用内联块设置的 Safari/Chrome 重叠元素
- 在重叠元素上注册鼠标事件
- 如何防止重叠元素的冒泡事件
- HTML和需要下拉菜单来重叠元素
- 如何使用CSS3 rotate3d和transformZ控制重叠元素的绘制顺序
- D3js重叠元素:如何“穿过”点击“下”键;元素
- jQuery关于重叠元素的mouseleave问题
- 捕获svg中重叠g元素中的指针事件
- jquery可调整大小,拖动完成后获取重叠元素