手机端左滑显示删除

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>js侧滑显示删除按钮</title>
    <style>
        *{margin:0;padding:0;}
        body{font-size:.14rem;}
        li{list-style:none;}
        i{font-style:normal;}
        a{color:#393939;text-decoration:none;}
        .list{overflow:hidden;padding-left:.3rem;}
        .list li{width:120%;border-bottom:1px solid #ddd;}
        .list li p{overflow:hidden;height:.88rem;line-height:.88rem;-webkit-transition:all 0.3s linear;transition:all 0.3s linear;}
        .list li a{display:inline-block;width:85%;}
        .list li i{float:right;width:15%;text-align:center;background:#E2421B;color:#fff;}
        .swipeleft{transform:translateX(-15%);-webkit-transform:translateX(-15%);}
    </style>
    <script>
        //计算根节点HTML的字体大小
        function resizeRoot(){
            var deviceWidth = document.documentElement.clientWidth,
                num = 750,
                num1 = num / 100;
            if(deviceWidth > num){
                deviceWidth = num;
            }
            document.documentElement.style.fontSize = deviceWidth / num1 + "px";
        }
        //根节点HTML的字体大小初始化
        resizeRoot();

        window.onresize = function(){
            resizeRoot();
        };
    </script>
</head>
<body>
<section>
    <div class="list">
        <ul>
            <li><p><a href="#">侧滑显示删除按钮</a><i>删除</i></p></li>
            <li><p><a href="#">侧滑显示删除按钮</a><i>删除</i></p></li>
            <li><p><a href="#">侧滑显示删除按钮</a><i>删除</i></p></li>
        </ul>
    </div>
    <script>
        //侧滑显示删除按钮
        var expansion = null; //是否存在展开的list
        var container = document.querySelectorAll('.list li p');
        for(var i = 0; i < container.length; i++){
            var x, y, X, Y, swipeX, swipeY;
            container[i].addEventListener('touchstart', function(event) {
                x = event.changedTouches[0].pageX;
                y = event.changedTouches[0].pageY;
                swipeX = true;
                swipeY = true ;
                if(expansion){   //判断是否展开,如果展开则收起
                    expansion.className = "";
                }
            });
            container[i].addEventListener('touchmove', function(event){
                X = event.changedTouches[0].pageX;
                Y = event.changedTouches[0].pageY;
                // 左右滑动
                if(swipeX && Math.abs(X - x) - Math.abs(Y - y) > 0){
                    // 阻止事件冒泡
                    event.stopPropagation();
                    if(X - x > 10){   //右滑
                        event.preventDefault();
                        this.className = "";    //右滑收起
                    }
                    if(x - X > 10){   //左滑
                        event.preventDefault();
                        this.className = "swipeleft";   //左滑展开
                        expansion = this;
                    }
                    swipeY = false;
                }
                // 上下滑动
                if(swipeY && Math.abs(X - x) - Math.abs(Y - y) < 0) {
                    swipeX = false;
                }
            });
        }

        var i = document.querySelectorAll('.list li i');
        i.forEach(function(item, index){
            i[index].onclick = function(){
                this.parentNode.parentNode.remove();
            };
        });
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现 RecyclerView 左滑显示删除按钮的功能,你可以按照以下步骤进行操作: 1. 首先,在你的 RecyclerView 的 Adapter 中添加一个接口,例如 `OnItemSwipeListener`,用于处理左滑显示删除按钮的事件。 ```java public interface OnItemSwipeListener { void onItemSwiped(int position); } ``` 2. 在你的 RecyclerView 的 ViewHolder 中添加一个滑动删除的手势检测器,并在 `onBindViewHolder` 方法中为每个 ViewHolder 设置这个手势检测器。 ```java public class YourViewHolder extends RecyclerView.ViewHolder { private GestureDetectorCompat gestureDetector; private View deleteButton; // 删除按钮 public YourViewHolder(View itemView, final OnItemSwipeListener listener) { super(itemView); deleteButton = itemView.findViewById(R.id.delete_button); // 初始化删除按钮 gestureDetector = new GestureDetectorCompat(itemView.getContext(), new GestureDetector.SimpleOnGestureListener() { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // 判断是向左滑动 if (distanceX < 0 && Math.abs(distanceX) > Math.abs(distanceY)) { deleteButton.setVisibility(View.VISIBLE); // 显示删除按钮 return true; } return false; } }); } public void bindData() { // 绑定数据到 ViewHolder deleteButton.setVisibility(View.GONE); // 隐藏删除按钮 } public boolean onTouchEvent(MotionEvent event) { return gestureDetector.onTouchEvent(event); } } ``` 3. 在你的 RecyclerView 的 Adapter 中实现 `OnItemSwipeListener` 接口,并在对应的方法中处理左滑显示删除按钮的事件。 ```java public class YourAdapter extends RecyclerView.Adapter<YourViewHolder> implements OnItemSwipeListener { // 其他代码 @Override public void onItemSwiped(int position) { // 处理左滑显示删除按钮事件,可以在这里更新对应位置的 ViewHolder 的 UI // 例如,你可以调用 notifyItemChanged(position) 更新 UI } } ``` 通过以上步骤,你就可以实现 RecyclerView 左滑显示删除按钮的功能了。当用户向左滑动某个 ViewHolder 时,会触发滑动事件,你可以在相应的方法中处理显示删除按钮的逻辑并更新 UI。当用户滑动回原始位置时,你可以隐藏删除按钮。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值