首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >隐藏/显示时列表元素动画不起作用

隐藏/显示时列表元素动画不起作用
EN

Stack Overflow用户
提问于 2015-09-15 11:19:42
回答 4查看 119关注 0票数 0

从这里可以看到li元素的动画吗:

http://jsfiddle.net/8XM3q/light/

当使用显示/隐藏功能而不是移除时进行动画?当我将"remove“更改为"hide”时,元素没有移动:http://jsfiddle.net/8XM3q/90/

我想在我的内容过滤动画中使用这个功能--这就是为什么我必须将“移除”替换为“隐藏/显示”。

我不擅长JS,但我认为它会计算所有元素,即使它们是隐藏的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function createListStyles(rulePattern, rows, cols) {
var rules = [], index = 0;
for (var rowIndex = 0; rowIndex < rows; rowIndex++) {
    for (var colIndex = 0; colIndex < cols; colIndex++) {
        var x = (colIndex * 100) + "%",
            y = (rowIndex * 100) + "%",
            transforms = "{ -webkit-transform: translate3d(" + x + ", " + y + ", 0); transform: translate3d(" + x + ", " + y + ", 0); }";
        rules.push(rulePattern.replace("{0}", ++index) + transforms);
    }
}
var headElem = document.getElementsByTagName("head")[0],
    styleElem = $("<style>").attr("type", "text/css").appendTo(headElem)[0];
if (styleElem.styleSheet) {
    styleElem.styleSheet.cssText = rules.join("\n");
} else {
    styleElem.textContent = rules.join("\n");
}

所以我的问题是,如何调整这部分代码,使其只计算"show“(显示的)元素?

EN

回答 4

Stack Overflow用户

发布于 2015-09-15 11:24:50

我编辑了你的jsFiddle:http://jsfiddle.net/8XM3q/101/

注意我修改了这一行:http://jsfiddle.net/8XM3q/101/ $( this ).closest("li").remove();

关于这个:$(this).closest("li").hide("slow",function(){$(this).detach()});

这意味着隐藏项目,速度=慢,当隐藏完成后删除它。

希望这就是你的意思。

编辑:包含的拆离。

票数 1
EN

Stack Overflow用户

发布于 2015-09-15 11:38:20

如果您想在保留动画的同时保留所有数据,则使用detach()函数而不是remove:jQuery - detach

要计算或选择元素,请尝试使用附加到每个元素的css类来执行此操作。

票数 1
EN

Stack Overflow用户

发布于 2015-09-15 11:47:32

As per your comment

我想在我的内容过滤动画中使用这个函数--这就是为什么我必须将“删除”替换为“隐藏/显示”,我根本不想删除元素。如果我的问题误导了你,我很抱歉。

您可以做的是使用缓存来存储列表项,因为它们在您进行内容过滤时是隐藏的。稍后,当您需要重置整个列表时,您可以从缓存中补充这些项。

相关代码片段...

HTML

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
<button class="append">Add new item</button>
<button class="replenish">Replenish from cache</button>
<div id="cache"></div>

JS:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
$(this).closest("li").hide(600, function() { 
    $(this).appendTo($('#cache')); 
});
...
$(".replenish").click(function () {
    $("#cache").children().eq(0).appendTo($(".items")).show();
});

演示小提琴:

代码片段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(function() {
    $(document.body).on("click", ".delete", function (evt) {
        evt.preventDefault();
        $(this).closest("li").hide(600, function() { 
            $(this).appendTo($('#cache')); 
		});
    });
    
    $(".append").click(function () {
        $("<li>New item  <a href='#' class='delete'>delete</a></li>").insertAfter($(".items").children()[2]);
    });
    $(".replenish").click(function () {
        $("#cache").children().eq(0).appendTo($(".items")).show();
    });

    // Workaround for Webkit bug: force scroll height to be recomputed after the transition ends, not only when it starts
    $(".items").on("webkitTransitionEnd", function () {
        $(this).hide().offset();
        $(this).show();
    });
});

function createListStyles(rulePattern, rows, cols) {
    var rules = [], index = 0;
    for (var rowIndex = 0; rowIndex < rows; rowIndex++) {
        for (var colIndex = 0; colIndex < cols; colIndex++) {
            var x = (colIndex * 100) + "%",
                y = (rowIndex * 100) + "%",
                transforms = "{ -webkit-transform: translate3d(" + x + ", " + y + ", 0); transform: translate3d(" + x + ", " + y + ", 0); }";
            rules.push(rulePattern.replace("{0}", ++index) + transforms);
        }
    }
    var headElem = document.getElementsByTagName("head")[0],
        styleElem = $("<style>").attr("type", "text/css").appendTo(headElem)[0];
    if (styleElem.styleSheet) {
        styleElem.styleSheet.cssText = rules.join("\n");
    } else {
        styleElem.textContent = rules.join("\n");
    }
}

createListStyles(".items li:nth-child({0})", 50, 3);
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
body { font-family: Arial; }
.items { 
    list-style-type: none; padding: 0; position: relative;
    border: 1px solid black; height: 220px; overflow-y: auto; overflow-x: hidden;
    width: 600px;
}
.items li { 
    height: 50px; width: 200px; line-height: 50px; padding-left: 20px;
    border: 1px solid silver; background: #eee; box-sizing: border-box; -moz-box-sizing: border-box;
    position: absolute; top: 0; left: 0; 
    -webkit-transition: all 0.2s ease-out; transition: all 0.2s ease-out;
}
div.cache { display: none; }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="items">
    <li>Monday <a href="#" class="delete">delete</a>
    </li><li>Tuesday <a href="#" class="delete">delete</a>
    </li><li>Wednesday <a href="#" class="delete">delete</a>
    </li><li>Thursday <a href="#" class="delete">delete</a>
    </li><li>Friday <a href="#" class="delete">delete</a>
    </li><li>Saturday <a href="#" class="delete">delete</a>
    </li><li>Sunday <a href="#" class="delete">delete</a></li>
</ul>
<button class="append">Add new item</button>
<button class="replenish">Replenish from cache</button>
<div id="cache"></div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32584688

复制
相关文章
Android控件显示、隐藏时,增加动画效果
首先还是看一下演示效果吧,不然凭什么相信我的帖子能解决你的问题呢? 效果GIF如下
晨曦_LLW
2020/09/25
5K0
jQuery框架实现元素显示及隐藏动画【附案例分析】
我之前也和小伙伴们讲过使用jQuery框架可以很好的对html中元素的属性等进行操作,所以上面显示和隐藏的也只是一个div,而并不是一个图片。下面我就来和小伙伴们讲一个如何对元素的属性进行操作,使其显示或者隐藏!
灰小猿
2021/09/14
6.4K0
jQuery框架实现元素显示及隐藏动画【附案例分析】
元素的显示与隐藏
在CSS中有三个显示和隐藏的单词比较常见,我们要区分开,他们分别是 display visibility 和 overflow。
星辰_大海
2020/09/30
4.4K0
【jQuery动画】显示与隐藏效果
在网页开发中,适当地使用动画可以使页面更加美观,进而增强用户体验。jQuery中内置了一系列方法用于实现动画,当这些方法不能满足实际要求时,用户也可以自定义动画。本期我们一起来了解一下显示与隐藏效果吧~
颜颜yan_
2022/12/01
6.7K0
【jQuery动画】显示与隐藏效果
UIPickerView显示和隐藏的动画
- (void)ViewAnimation:(UIView*)view willHidden:(BOOL)hidden { [UIView animateWithDuration:0.3 animations:^{ if (hidden) { view.frame = CGRectMake(0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.wi
用户7705674
2021/10/29
1.9K0
JQuery 隐藏和显示html元素
$(function(){ $("#bubmitBtn").click(function(){ //首先需要把提示标签全部隐藏掉 $("#nameInvalid").hide(); $("#emailInvalid").hide(); $("#pwdInvalid1").hide(); $("#pwdInvalid2").hide(); //检查用户名: 长度为6到12位, 只能输入数字和英文和下划线 //alert("--"); var $nameEle = $("#UcenterMember_account"); var reg = /^\w{6,12}$/; if(!reg.test($nameEle.val())) { $("#nameInvalid").text(" *用户名长度为6到12位, 只能输入数字和英文和下划线"); $("#nameInvalid").show(); //alert("用户名长度为6到12位, 只能输入数字和英文和下划线"); $nameEle[0].focus(); return false; } //邮箱格式必须正确, 可以不输入 var $emailEle = $("#UcenterMember_email"); reg = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; if($emailEle.val()!="" && !reg.test($emailEle.val())) { $emailEle[0].focus(); $("#emailInvalid").text(" *邮箱格式不正确!"); $("#emailInvalid").show(); //alert("邮箱格式不正确!"); return false; } //检查密码: 长度为6位, 只能输入数字和英文 var $passwordEle = $("#UcenterMember_password1"); reg = /^[a-zA-Z0-9]{6,15}$/; if(!reg.test($passwordEle.val())) { $("#pwdInvalid1").text(" *密码的最低长度为6位, 只能输入数字和英文"); $("#pwdInvalid1").show(); //alert("密码的长度为6位, 只能输入数字和英文"); $passwordEle[0].focus(); return false; } //确认密码必须与密码相同 var $password2Ele= $("#UcenterMember_password2"); if($password2Ele.val()!=$passwordEle.val()) { $password2Ele[0].focus(); $("#pwdInvalid2").text(" *确认密码必须与密码相同"); $("#pwdInvalid2").show(); //alert("确认密码必须与密码相同"); } return true; }); });
wust小吴
2019/07/05
9.3K0
vue项目中div切换显示与隐藏状态时的动画效果
这些钩子函数可以结合 CSS transitions/animations 使用,也可以单独使用。 当只用 JavaScript 过渡的时候,在 enter 和 leave 中必须使用 done 进行回调。否则,它们将被同步调用,过渡会立即完成。
裴大头
2022/01/17
3.8K0
SwiftUI:视图的显示和隐藏动画
SwiftUI最强大的功能之一是能够自定义视图的显示和隐藏方式。以前,您已经了解了如何使用常规if条件有条件地包含视图,这意味着当条件更改时,我们可以从视图层次结构中插入或移除视图。
韦弦zhy
2020/04/16
4.6K0
Rn页面滚动显示隐藏head动画
明知山
2023/10/03
2340
Rn页面滚动显示隐藏head动画
【CSS】元素显示与隐藏 ( display 隐藏对象 | visibility 隐藏对象 | overflow 隐藏对象 )
设置 display: block 可以显示元素 , 同时该样式还可以将元素转为块元素 ;
韩曙亮
2023/04/16
5.5K0
【CSS】元素显示与隐藏 ( display 隐藏对象 | visibility 隐藏对象 | overflow 隐藏对象 )
元素隐藏与显示属性及操作方式
浏览器对其渲染可是不可见,它在网页中占位置却不可点击,也就是说明元素不可见却仍然占据空间。
岳泽以
2022/10/26
1.6K0
元素隐藏与显示属性及操作方式
iOS导航栏切换界面时隐藏和显示
现如今很多App的一些模块,尤其是个人中心模块,界面设计已经习惯于不保留导航栏,而是直接将界面背景覆盖到状态栏,比如QQ的个人信息界面:
Cloudox
2021/11/23
3.9K0
iOS导航栏切换界面时隐藏和显示
#PY小贴士# 不要在遍历列表时删除元素
有一个比较少见的 bug:通过 for 循环对一个字典进行遍历的时候,如果向字典中增加新元素,就会导致报错。如图:
Crossin先生
2020/01/20
1K0
#PY小贴士# 不要在遍历列表时删除元素
不要在遍历列表时修改其中的元素
之前Q群里有人问了一个问题:如何移除列表s中的满足某个条件的元素? 很自然地写了一个
一只大鸽子
2022/12/06
8810
不要在遍历列表时修改其中的元素
WPF 动画实战 点击时显示圆圈淡出效果
本文告诉大家一个有趣的动画,在鼠标点击的时候,在点击所在的点显示一个圆圈,然后这个圆圈做动画变大,但是颜色变淡的效果。本文的控件可以让大家将对应的容器放在自己应用里面就能实现这个效果
林德熙
2020/04/16
2.5K0
Vue 根据鼠标悬停目标元素上方显示、隐藏指定元素交互实现
Vue 根据鼠标悬停目标元素上方显示、隐藏指定元素交互实现 By:授客 开发环境 win10 element-ui "2.13.1" vue "2.6.10" 需求描述 如下,鼠标移动到左侧标签
授客
2020/06/23
3.7K0
【CSS】元素的显示与隐藏 display visibility overflow 属性区别
display:none 此元素不会被显示。 display:block 此元素将显示为块级元素,此元素前后会带有换行符。
梦溪
2021/08/19
2.4K0
element 表格内容过长时设置隐藏,通过popover弹窗显示
参考 https://www.jianshu.com/p/7e7b65b99f3d
acoolgiser
2020/05/20
2.3K0
企业面试题:如何显示/隐藏一个DOM元素
前几天有一个学生来问舒克老师关于程序员未来发展的问题,因为网上爆出包括大公司在内的程序员辞退的新闻。年纪在35岁以上的程序员很容易被划入到清理的行列。
舒克
2019/08/09
1.5K0
vue 控制某个元素的显示与隐藏之v-if属性
解释: 默认showPrise和showRentPrise的状态是false,所以是隐藏的。  当你在changeStatus通过了某种条件,你就可以控制showPrise和showRentPrise的状态了。true为显示,false为隐藏。 参考:https://blog.csdn.net/qq_24147051/article/details/79771556 
acoolgiser
2019/01/17
7.6K0

相似问题

UIView显示/隐藏动画:隐藏动画似乎不起作用

126

用动画显示/隐藏元素

40

显示隐藏列表元素

12

在动画、动画和隐藏时显示

25

隐藏元素并显示元素-CSS -JS时添加微妙的动画

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文