Correction status:Uncorrected
Teacher's comments:
jQuery编写一个自己的动态相册管理器
详细内容以代码注释介绍,代码如下:
<!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> <!-- <li>--> <!-- <img src="http://html.io/0521/static/images/2.jpg" alt="" width="150">--> <!-- <button>前移</button>--> <!-- <button>后移</button>--> <!-- <button>删除</button>--> <!-- </li>--> </ul> </div> </div> <script src="static/js/jquery-3.4.1.js"></script> <script> $(function () { $('.add').on('click',function () { // 1. 获取图片信息 // 判断用户是否选择了图片? var img_url = $('#img_url').val(); if (img_url.length === 0){ alert('请选择一张图片上传'); $('#img_url').focus(); // console.log($(this)); return false; } //获取图片的外观特征 var img_type = $('input[type="radio"]:checked').val(); var shadow = 'none'; if ($(':selected').val() === 1){ shadow = '2px 2px 2px #888'; } console.log(img_type); //2. 创建图片并添加到页面中 // 这里图片真实地址的获取是一个小难点 console.log(img_url); console.log(img_url.split('\\')); // ["C:", "fakepath", "3.jpg"] // 最后一个值,满足要求 console.log(img_url.split('\\')[2]); // var realImgUrl = img_url.split('\\')[2]; // console.log('http://html.io/0521/static/images/'+img_url.split('\\')[2]); img_url = 'http://html.io/0521/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 remove = $('<button>').text('删除'); // 创建一个<li>用来放所有的内容 var contaier = $('<li>'); //将图片和三个按钮打包到<li>中 contaier.append(img,before,after,remove); //将<li>添加到页面中的<ul>中 contaier.appendTo('ul'); /**************************************************************/ //3. 为三个操作添加功能 //前移功能: before.on('click',function () { //获取到要移动的图片 // 按钮的父元素,才是<li>就是当前要移动的图片 var current = $(this).parent(); var prev = current.prev();// 前一个元素 // 在前一个元素之前将当前元素插入,实际上就是交换一下位置 prev.before(current); }); //后移功能: after.on('click',function () { //获取到要移动的图片 // 按钮的父元素,才是<li>就是当前要移动的图片 var current = $(this).parent(); var next = current.next();// 后一个元素 // 在后一个元素之后将当前元素插入,实际上就是交换一下位置 next.after(current); }); //删除 remove.on('click', function () { if (confirm('确认删除吗?')) { $(this).parent().remove(); } return false; }) }) }) </script> </body> </html>
点击 "运行实例" 按钮查看在线实例