jquery - 为什么我不能用 animate 打开/关闭多个 div?

标签 jquery html css

所以我的代码遇到了一些问题。

预期会发生什么: - 用户点击“打开”= 幻灯片放映“内容”。 - 用户再次点击“打开”= 隐藏“内容”。

我希望这适用于多个实例。 (它在一个实例中有点移动)但现在我无法......

1.) 打开/关闭 和 2.) 使用多个实例。

我做错了什么? :\

$(document).ready(function(){
    $("#id_open_button").click(function(){
        var layer = $("#id_faded_layer");
        var hiddenButtons = $('#id_open');
        layer.animate({
            bottom: 0,
            height: '7em',
            top: '-97px'
        });
        hiddenButtons.css('display','block');
    });
});

Fiddle here展示我正在使用的东西。

提前致谢,感谢您的帮助。

最佳答案

基本上,您似乎不太了解 HTML 布局的工作原理。您已将容器高度限制为 100 像素(溢出“隐藏”),然后使用绝对定位显示“打开”按钮,使其完全覆盖应该打开的“抽屉”。您还设置了高度、顶部和底部属性的动画,但如果您还打算显式设置高度,则显式设置顶部和底部没有意义。您还将抽屉的顶部设置为 -97px,将高度设置为 7em(几乎肯定小于 97px),因此它完全呈现在 div 之外(在可见的上方和上方)。

你把这个设计严重地过度复杂化了。我建议您从更简单得多的事情重新开始。

我已经重写了一些 HTML/CSS 并让它工作得很好,虽然我不知道你的最终目标是什么。

$(document).ready(function(){
  	$("#id_open_button").click(function(){
		var layer = $("#id_faded_layer");
		var hiddenButtons = $('#id_open_hidden');
		layer.animate({
			height: '200px'
        });
        hiddenButtons.css('display','block');
	});
});
.faded {
    overflow: hidden;
    height: 0;
    background: -webkit-linear-gradient( rgba(255, 255, 255, 0) 0%, rgba(21, 20, 20, 0.37) 100% );
    background-image: -moz-linear-gradient( rgba(255, 255, 255, 0) 0%, rgba(21, 20, 20, 0.37) 100% );
    background-image: -o-linear-gradient( rgba(255, 255, 255, 0) 0%, rgba(21, 20, 20, 0.37) 100% );
    background-image: linear-gradient( rgba(255, 255, 255, 0) 0%, rgba(21, 20, 20, 0.37) 100% );
    background-image: -ms-linear-gradient( rgba(255, 255, 255, 0) 0%, rgba(21, 20, 20, 0.37) 100% );
}

.prompt{
    top: 0; 
    padding: 8px; 
    font-size: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div style="">
    <div class="columns three image">
        <div class="faded" id="id_faded_layer">
            <div id="id_open">
                <a>Show content</a>
            </div>
        </div>
        <div class="prompt">
            <a id="id_open_button" style="">Open</a>
        </div>
        <div style="clear: both"></div>
    </div>
</div>
<div>
    <div class="columns three image">
        <div class="faded" id="id_faded_layer">
            <div id="id_open">
                <a>Show content</a>
            </div>
        </div>
        <div class="prompt">
            <a id="id_open_button" style="">Open</a>
        </div>
        <div style="clear: both"></div>
    </div>
</div>

关于jquery - 为什么我不能用 animate 打开/关闭多个 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27989964/

相关文章:

javascript - 显示 div 按钮后进入新页面

javascript - 如何在删除元素时保持选择框的宽度不变?

jQuery Accordion 无法将高度设置为内容

php - MySQL 查询运行两次

eclipse - 如何在 Eclipse (Helios) 上获得 CSS3 属性的自动完成

jquery - 如何使用 GreenSock 同时为 2 个或更多元素设置动画?

javascript - 使时间轴 slider 循环

html - 将大图像设置为与图像标签的高度宽度相同而不拉伸(stretch)

php - 从 2 个不同的表以用户或管理员身份登录

html - 调整图像大小以适合显示 :flex divs