博客列表 >模仿课堂案例, 编写一个自己的动态相册管理器(利用jQuery添加DOM操作)2019年5月21日20点

模仿课堂案例, 编写一个自己的动态相册管理器(利用jQuery添加DOM操作)2019年5月21日20点

Nick的博客
Nick的博客原创
2019年05月23日 16:24:34620浏览

模仿课堂案例, 编写一个自己的动态相册管理器:

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>在线相册</title>
    <style>
        .warp {
            width: 360px;
            height: auto;
            background-color: linen;
            border: 3px double grey;
            color: #363636;
            border-radius: 2%;
            box-shadow: 2px 2px 2px #888;
        }
        .warp .header {
            padding: 15px;
        }
        .warp .header h2 {
            text-align: center;
        }
        .add {
            width: 100px;
            height: 30px;
            border: none;
            cursor: pointer;
            background-color: deepskyblue;
            color: white;
        }
        .add:hover {
            background-color: orange;
            font-size: 1.1rem;
        }
        .main {
            overflow: hidden;
        }

        .main ul {
            padding: 0;
            margin: 0;
        }

        .main ul li {
            list-style-type: none;
            float: left;
            margin-left: 20px;
            margin-bottom: 10px;
            width: 150px;
            height: 200px;
            text-align: center;
        }

        .main ul li button {
            margin: 3px;
            border: none;
            border-radius: 5%;
            background-color: deepskyblue;
        }
        .main ul li button:hover {
            background-color: orange;
            color: white;
            cursor: pointer;
        }

    </style>
</head>
<body>
<div class="warp">
    <div class="header">
        <h2>私人相册</h2>
        <p>
            <label for="img_url">输入图片地址</label>
            <input type="file" name="img_url" id="img_url" placeholder="图片地址">
        </p>
        <p>
            图片类型:
            <input type="radio" id="rect" name="border" value="0" checked><label for="rect">直角</label>
            <input type="radio" id="radius" name="border" value="10%"><label for="radius">圆角</label>
            <input type="radio" id="circle" name="border" value="50%"><label for="circle">圆形</label>
        </p>
        <p>
            <label for="shadow">是否添加阴影:</label>
            <select name="shadow" id="shadow">
                <option value="0" selected>不添加</option>
                <option value="1">添加</option>
            </select>
        </p>
        <p><button class="add">添加图片</button></p>
    </div>
    <div class="main">
        <ul>

        </ul>
    </div>
</div>
<script src="static/js/jquery-3.4.1.js"></script>

<script>
    //用jQuery来实现按钮功能
    $(function () {
        //分三步完成
        $('.add').on('click',function () {    //利用class选择器获取页面中的按钮,设定点击事件和回调函数
            // alert('点击了按钮')//测试是否获取按钮和点击事件是否触发

            //1.获取图片信息
            //判断用户是否选择了图片
            var img_url = $('#img_url').val();//利用id选择获取用户选择图片的input中的值
            //利用if语句判断
            if (img_url.length === 0){   //当img_url.length等于0时,用户没有选择图片
                alert('请选择图片上传');    //提示用户选择图片
                $('#img_url').focus();  //将焦点落在id为img_url的input中
                return false;
            }

            //获取图片的特征属性
            var img_type = $('input[type="radio"]:checked').val();//利用属性选择器获取input的中的值
            var shadow = 'none'//获取设置阴影
            if ($(':selected').val() === '1') {     //用if语句判断当前是否设置了阴影显示
                shadow = '2px 2px 2px #888';       //当值为'1'时设置的阴影样式
            }

            //创建图片并添加到页面中
            console.log(img_url);           //控制台中测试是否获取到图片
            //split():将字符串按照指定字符切割为数组
            console.log(img_url.split('\\')[2]);//将返回值切割后,输出数组中的第三个值

            var realImgUrl = img_url.split('\\')[2];
            img_url = 'http://html.io/5.21/static/images/' + realImgUrl;   //获取图片的真实地址
            console.log(img_url);//查看现在获取的图片地址是否可用

            //创建图片和按钮,并打包到一个容器,添加到页面中
            var img = $('<img>').attr({
                src:img_url,
                width: 150,
                height: 150,
                alt:'明星相册'
            }).css({
                'border-radius': img_type,
                'box-shadow': shadow
            });

            //三个操作按钮
            var before = $('<button>').text('前移');
            var after = $('<button>').text('后移');
            var del = $('<button>').text('删除');

            var container = $('<li>');    //创建容器

            container.append(img, before, after, del);   //打包把需要在页面中创建的图片和按钮放到容器中
            container.appendTo('ul');//将打包的容器添加到页面中


            //为三个按钮添加功能
            //前移
            before.on('click',function () {
                //拿到移动的图片和按钮的父元素
                var current = $(this).parent();
                // console.log(current);//查看是否获取到图片和按钮的父元素
                //拿到移动元素的前一个元素
                var prev = current.prev();//获取前面一个元素
                prev.before(current);//在prev之前插入
            });

            //后移
            after.on('click',function () {
                //拿到移动的图片和按钮的父元素
                var current = $(this).parent();
                // console.log(current);//查看是否获取到图片和按钮的父元素
                //拿到移动元素的后一个元素
                var next = current.next();//获取后面一个元素
                next.after(current);//在next之后插入
            });
            
            //删除
            del.on('click', function () {
                //用if语句判断用户手否确认删除当前添加的图片
                if (confirm('确定要删除这张照片吗')) {
                    $(this).parent().remove();//返回true时确认删除,直接连同父元素一起删除
                }
            })

        })

    })
</script>

</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


添加了5张图片:

全部图片添加.png


第二张图片前移:

将第二张图片前移.png



将第二张图片后移:

将第二张图片后移.png



删除第四张图片时弹窗:

删除第四张图片的弹窗提示.png



成功删除第四张图片:

成功删除第四张图片.png

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议