- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个我创建的 Accordion 样本;问题很简单:第一次单击任何 Accordion 项目时,slideUp()
动画不起作用。我在链接 jquery 方法方面仍然不太熟练,所以我的问题是:我应该在哪里链接 slideUp()
方法?因为在 .accordion-item
父级上添加和删除类名 .active
会使事情变得复杂。
$(document).ready(function() {
$("[class^='accordion-item'] > button").on('click', function() {
$(this).next().slideDown(400).parent().addClass('active').siblings().removeClass('active').children('div').slideUp(400);
})
})
* {
box-sizing: border-box;
outline: none;
}
#accordion {
width: 100%;
}
#accordion .accordion-item-1 button {
width: 100%;
border: none;
background: cornflowerblue;
color: #fff;
padding: 1rem 0;
position: relative;
-webkit-transition: box-shadow 400ms ease-in-out;
transition: box-shadow 400ms ease-in-out;
}
#accordion .accordion-item-1 button i {
position: absolute;
left: 1rem;
top: .6rem;
font-size: 2rem;
-webkit-transition: -webkit-transform 400ms ease-in-out;
transition: -webkit-transform 400ms ease-in-out;
transition: transform 400ms ease-in-out;
transition: transform 400ms ease-in-out, -webkit-transform 400ms ease-in-out;
}
#accordion .accordion-item-1 button:hover {
background: #3676e8;
cursor: pointer;
}
#accordion .accordion-item-1 div {
padding: 1rem;
background: #92b4f2;
color: #fff;
line-height: 2;
display: none;
}
#accordion .accordion-item-1.active button {
background: #3676e8;
box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.4);
}
#accordion .accordion-item-1.active button i {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
#accordion .accordion-item-1.active div {
display: block;
}
#accordion .accordion-item-2 button {
width: 100%;
border: none;
background: salmon;
color: #fff;
padding: 1rem 0;
position: relative;
-webkit-transition: box-shadow 400ms ease-in-out;
transition: box-shadow 400ms ease-in-out;
}
#accordion .accordion-item-2 button i {
position: absolute;
left: 1rem;
top: .6rem;
font-size: 2rem;
-webkit-transition: -webkit-transform 400ms ease-in-out;
transition: -webkit-transform 400ms ease-in-out;
transition: transform 400ms ease-in-out;
transition: transform 400ms ease-in-out, -webkit-transform 400ms ease-in-out;
}
#accordion .accordion-item-2 button:hover {
background: #f85441;
cursor: pointer;
}
#accordion .accordion-item-2 div {
padding: 1rem;
background: #fcaca3;
color: #fff;
line-height: 2;
display: none;
}
#accordion .accordion-item-2.active button {
background: #f85441;
box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.4);
}
#accordion .accordion-item-2.active button i {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
#accordion .accordion-item-2.active div {
display: block;
}
#accordion .accordion-item-3 button {
width: 100%;
border: none;
background: seagreen;
color: #fff;
padding: 1rem 0;
position: relative;
-webkit-transition: box-shadow 400ms ease-in-out;
transition: box-shadow 400ms ease-in-out;
}
#accordion .accordion-item-3 button i {
position: absolute;
left: 1rem;
top: .6rem;
font-size: 2rem;
-webkit-transition: -webkit-transform 400ms ease-in-out;
transition: -webkit-transform 400ms ease-in-out;
transition: transform 400ms ease-in-out;
transition: transform 400ms ease-in-out, -webkit-transform 400ms ease-in-out;
}
#accordion .accordion-item-3 button:hover {
background: #21653f;
cursor: pointer;
}
#accordion .accordion-item-3 div {
padding: 1rem;
background: #3bb16f;
color: #fff;
line-height: 2;
display: none;
}
#accordion .accordion-item-3.active button {
background: #21653f;
box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.4);
}
#accordion .accordion-item-3.active button i {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
#accordion .accordion-item-3.active div {
display: block;
}
#accordion .accordion-item-4 button {
width: 100%;
border: none;
background: violet;
color: #fff;
padding: 1rem 0;
position: relative;
-webkit-transition: box-shadow 400ms ease-in-out;
transition: box-shadow 400ms ease-in-out;
}
#accordion .accordion-item-4 button i {
position: absolute;
left: 1rem;
top: .6rem;
font-size: 2rem;
-webkit-transition: -webkit-transform 400ms ease-in-out;
transition: -webkit-transform 400ms ease-in-out;
transition: transform 400ms ease-in-out;
transition: transform 400ms ease-in-out, -webkit-transform 400ms ease-in-out;
}
#accordion .accordion-item-4 button:hover {
background: #e855e8;
cursor: pointer;
}
#accordion .accordion-item-4 div {
padding: 1rem;
background: #f4aff4;
color: #fff;
line-height: 2;
display: none;
}
#accordion .accordion-item-4.active button {
background: #e855e8;
box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.4);
}
#accordion .accordion-item-4.active button i {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
#accordion .accordion-item-4.active div {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet"/>
<div id="accordion">
<div class="accordion-item-1 active">
<button><i class="fa fa-caret-right"></i><span>Item 1</span></button>
<div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident consectetur debitis a ipsam animi necessitatibus optio itaque amet? Aliquam quo nobis quis, quisquam necessitatibus commodi consequuntur dolor quae fugit numquam.</div>
</div>
<div class="accordion-item-2">
<button><i class="fa fa-caret-right"></i><span>Item 2</span></button>
<div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident consectetur debitis a ipsam animi necessitatibus optio itaque amet? Aliquam quo nobis quis, quisquam necessitatibus commodi consequuntur dolor quae fugit numquam.</div>
</div>
<div class="accordion-item-3">
<button><i class="fa fa-caret-right"></i><span>Item 3</span></button>
<div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident consectetur debitis a ipsam animi necessitatibus optio itaque amet? Aliquam quo nobis quis, quisquam necessitatibus commodi consequuntur dolor quae fugit numquam.</div>
</div>
<div class="accordion-item-4">
<button><i class="fa fa-caret-right"></i><span>Item 4</span></button>
<div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident consectetur debitis a ipsam animi necessitatibus optio itaque amet? Aliquam quo nobis quis, quisquam necessitatibus commodi consequuntur dolor quae fugit numquam.</div>
</div>
</div>
最佳答案
问题是因为您立即删除了同级 div 上的 active
类。这会导致第一次跳跃。相反,您应该在幻灯片动画完成后删除该类。您可以使用 slideUp()
的回调来执行此操作。
另请注意,您的 CSS 重复次数过多。您可以通过使用基类对常见规则进行分组来简化它,然后将特定颜色添加到目标元素,如下所示:
$(function() {
$("[class^='accordion-item'] > button").on('click', function() {
var $btn = $(this);
$btn.next().slideDown(400);
$btn.closest('div').addClass('active').siblings().find('div').slideUp(400, function() {
$(this).closest('.accordion-item').removeClass('active')
});
});
})
* {
box-sizing: border-box;
outline: none;
}
#accordion {
width: 100%;
}
#accordion .accordion-item button {
width: 100%;
border: none;
color: #fff;
padding: 1rem 0;
position: relative;
-webkit-transition: box-shadow 400ms ease-in-out;
transition: box-shadow 400ms ease-in-out;
}
#accordion .accordion-item-1 button {
background: cornflowerblue;
cursor: pointer;
}
#accordion .accordion-item button i {
position: absolute;
left: 1rem;
top: .6rem;
font-size: 2rem;
-webkit-transition: -webkit-transform 400ms ease-in-out;
transition: -webkit-transform 400ms ease-in-out;
transition: transform 400ms ease-in-out;
transition: transform 400ms ease-in-out, -webkit-transform 400ms ease-in-out;
}
#accordion .accordion-item.active button {
box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.4);
}
#accordion .accordion-item.active button i {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
#accordion .accordion-item div {
padding: 1rem;
color: #fff;
line-height: 2;
display: none;
}
#accordion .accordion-item.active div {
display: block
}
;
#accordion .accordion-item-1 button {
background: cornflowerblue;
}
#accordion .accordion-item-1 button:hover,
#accordion .accordion-item-1.active button {
background: #3676e8;
}
#accordion .accordion-item-1 div {
background: #92b4f2;
}
#accordion .accordion-item-2 button {
background: salmon;
}
#accordion .accordion-item-2 button:hover,
#accordion .accordion-item-2.active button {
background: #f85441;
}
#accordion .accordion-item-2 div {
background: #fcaca3;
}
#accordion .accordion-item-3 button {
background: seagreen;
}
#accordion .accordion-item-3 button:hover,
#accordion .accordion-item-3.active button {
background: #21653f;
}
#accordion .accordion-item-3 div {
background: #3bb16f;
}
#accordion .accordion-item-4 button {
background: violet;
}
#accordion .accordion-item-4 button:hover,
#accordion .accordion-item-4.active button {
background: #e855e8;
}
#accordion .accordion-item-4 div {
background: #f4aff4;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet" />
<div id="accordion">
<div class="accordion-item accordion-item-1 active">
<button><i class="fa fa-caret-right"></i><span>Item 1</span></button>
<div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident consectetur debitis a ipsam animi necessitatibus optio itaque amet? Aliquam quo nobis quis, quisquam necessitatibus commodi consequuntur dolor quae fugit numquam.</div>
</div>
<div class="accordion-item accordion-item-2">
<button><i class="fa fa-caret-right"></i><span>Item 2</span></button>
<div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident consectetur debitis a ipsam animi necessitatibus optio itaque amet? Aliquam quo nobis quis, quisquam necessitatibus commodi consequuntur dolor quae fugit numquam.</div>
</div>
<div class="accordion-item accordion-item-3">
<button><i class="fa fa-caret-right"></i><span>Item 3</span></button>
<div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident consectetur debitis a ipsam animi necessitatibus optio itaque amet? Aliquam quo nobis quis, quisquam necessitatibus commodi consequuntur dolor quae fugit numquam.</div>
</div>
<div class="accordion-item accordion-item-4">
<button><i class="fa fa-caret-right"></i><span>Item 4</span></button>
<div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident consectetur debitis a ipsam animi necessitatibus optio itaque amet? Aliquam quo nobis quis, quisquam necessitatibus commodi consequuntur dolor quae fugit numquam.</div>
</div>
</div>
关于javascript - SlideUp() 动画在第一次单击时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46788615/
我希望用户能够单击该 div,向下滑动另一个子 div。当用户单击该子 div 内的按钮时,子 div 将向上滑动。 使用下面的 JQuery,div 可以很好地向下滑动。但是,当我单击按钮时,它会向
我有这行 JavaScript,我看到的行为是 selectedLi 立即消失而没有“向上滑动”。这不是我预期的行为。 我应该怎么做才能让 selectedLi 在被移除之前向上滑动? selecte
$(".item").hover( function () { $(this).slideDown().append( $("Yes/No") );
这个问题已经有答案了: Callback of .animate() gets called twice jquery (2 个回答) 已关闭 9 年前。 我正在使用 jQuery 创建一个多选项卡
我正在使用包含 ul 和 li 标签的 side-nav。 看起来像: Mobile PLATFORM SPECIFIC GUIDES Magento Extensi
是否可以使用.slideUp,但对象只能向上滑动(例如)20px,而不是消失在屏幕之外? HTML: Hide Tab 1 Tab 2 JQUERY: $(".
我正在使用 jQuery/Ajax 脚本来提交表单而无需重新加载页面。我的页面上有多个表单,它们都具有相同的类(并且没有 ID)。使用以下方式提交表单效果很好: $('document').r
我在从事这个项目时似乎正在自学 jquery。 我以为会有一种非常简单的方法来实现这种技术,但我到处搜索都没有成功。这是我们正在查看的页面: http://igs.link-networkonline
单击 div 对象时,slideUp 不起作用。 Jquery 代码: $('#show-about-btn').click(function() { $('#show-about-btn')
当 div 悬停在右侧时,我有一个列表会在右侧弹出。我想使用 jqueries SlideUp/Down 来显示和隐藏列表,这在大多数情况下都有效。但有时该功能会重复触发。不断地打开和关闭。我不知道为
$(document).ready(function() { $('#arrow').click(function () { if ($('#slide1').is(":hid
我将创建一个每周日历。当我切换星期时,我想将旧的星期向左或向右滑动以获取新内容。有谁能够帮助我?目前我没有好主意来实现这个。 非常感谢。 最佳答案 例如向左滑动而不是 .slideUp()您可以使用.
我想做的就是: 有7个数字和7个div,它们相互关联(nr 0与div 0有关系) 当点击其中一个数字时,它应该折叠所有其他未被选中的 div 可以一次多选 综上所述,基本上,页面有一些带有数字的标签
在表格行中显示或隐藏一些 div 后,如何为高度调整设置动画?基本上,在用户在单选组中进行选择并将鼠标悬停在该行之外后,其他单选选项将被隐藏以压缩表单。如果他们将鼠标移回该行,所有单选选项将再次出现。
当我滚动页面时,我想为页眉设置动画。它应该slideUp,添加一个类和slideDown。 slideUp 和 slideDown 按预期工作,但未添加类 header-small。怎么会? $(fu
我有一个我创建的 Accordion 样本;问题很简单:第一次单击任何 Accordion 项目时,slideUp() 动画不起作用。我在链接 jquery 方法方面仍然不太熟练,所以我的问题是:我应
如何确保多个 div 向上滑动?现在我有这个功能: $("div#personal").click(function() { $("div.1").slideUp("slow", function
我创建了一个带有旋转木马导航的 Flexslider。导航被设计为移动屏幕尺寸的垂直列表。 在移动设备上:我想隐藏列表(点击的幻灯片标题除外),以便用户可以看到所选的幻灯片。 在大屏幕上:我只想让简单
我在使用 jQuery slideUp() 方法时遇到问题。我有一个计时器设置为在 1 秒内向上滑动一个 div,然后显示一个段落。我的 div 中有一个位于屏幕中央的 h1 元素。问题是当这个 h1
我有一个图标可以同时触发向上滑动和向下滑动的效果,但是在向下滑动之后,如果我再次按下同一个图标,它就不再起作用了。 $(document).ready(function(){ $('.subc
我是一名优秀的程序员,十分优秀!