Day048--jQuery自定义动画和DOM操作练习

1. 自定义动画

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            position: absolute;
            left: 20px;
            top: 30px;
            width: 100px;
            height: 100px;
            background-color: green;
        }
    </style>
    <script src="libs/jquery-3.3.1.js"></script>
    <script src="libs/jquery-color.js"></script>
    <script>
        $(function () {
            $('button').click(function () {
                let json = {'width':500, 'height':500, 'left':300, 'top':300, 'border-radius':100};
                let json2 = {
                    width:100,
                    height:100,
                    left:100,
                    top:100,
                    borderRadius:100,
                    backgroundColor:'red'
                };

                //自定义动画
                $('div').stop().animate(json, 1000, function () {
                    $('div').stop().animate(json2, 1000, function () {
                        alert('动画执行完毕');
                    })
                })
            })
        })
    </script>
</head>
<body>
<button>自定义动画</button>
<div></div>

</body>
</html>
View Code

 

2. 下拉菜单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            list-style: none;
        }

        .wrap{
            width: 330px;
            height: 30px;
            margin: 100px auto 0;
            padding-left: 10px;
            background-color: pink;
        }

        .wrap li{
            background-color: green;
        }
        
        .wrap > ul > li{
            float: left;
            margin-right: 10px;
            position: relative;
        }
        
        .wrap a{
            display: block;
            height: 30px;
            width: 100px;
            text-decoration: none;
            color: #000;
            line-height: 30px;
            text-align: center;
        }
        
        .wrap li ul{
            position: absolute;
            top: 30px;
            display: none;
        }
    </style>
    <script src="libs/jquery-3.3.1.js"></script>
    <script>
        //入口函数
        $(document).ready(function () {
            //需求: 鼠标已放入一级li中, 让它里面的ul显示. 移开隐藏.
            var jqli = $('.wrap>ul>li');

            //绑定事件
            jqli.mouseenter(function () {
                $(this).children('ul').stop().slideDown(1000);
            });

            //绑定事件(移开隐藏)
            jqli.mouseleave(function () {
                $(this).children('ul').stop().slideUp(1000);
            })

        })
    </script>
</head>
<body>
<div class="wrap">
    <ul>
        <li>
            <a href="javascript:void(0)">一级菜单1</a>
            <ul>
                <li><a href="javascript:void(0)">一级菜单2</a></li>
                <li><a href="javascript:void(0)">一级菜单3</a></li>
                <li><a href="javascript:void(0)">一级菜单4</a></li>
            </ul>
        </li>
        <li>
            <a href="javascript:void(0)">二级菜单1</a>
            <ul>
                <li><a href="javascript:void(0)">二级菜单2</a></li>
                <li><a href="javascript:void(0)">二级菜单3</a></li>
                <li><a href="javascript:void(0)">二级菜单4</a></li>
            </ul>
        </li>
        <li>
            <a href="javascript:void(0)">三级菜单1</a>
            <ul>
                <li><a href="javascript:void(0)">三级菜单2</a></li>
                <li><a href="javascript:void(0)">三级菜单3</a></li>
                <li><a href="javascript:void(0)">三级菜单4</a></li>
            </ul>
        </li>
    </ul>
</div>

</body>
</html>
View Code

 

3. 标签属性操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .active{
            border: 3px solid red;
        }
    </style>
</head>
<body>
    <img src="花.jpg" alt="" class="box">
    <script src="libs/jquery-3.3.1.js"></script>
    <script>
        $(function () {
            //attr  标签属性
            //获取值
            console.log($('img').attr('src')); //./花.jpg 标签属性获取相对路径
            //设置值
            $('img').attr('alt','');

            //设置多个标签属性值
            $('img').attr({
                'aaa':'你好啊',
                'bbb':'哈哈'
            });

            $('img').click(()=> {
                $('img').attr('class', 'box active');
                setTimeout(function () {
                    ///console.log(this); // this是window, 因为用了()=>
                    $('img').removeAttr('class');
                },2000)
            })

        })
    </script>
</body>
</html>
View Code

 

4. 对象属性操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .active{
            border: 3px solid red;
        }
    </style>
</head>
<body>
<img src="花.jpg" alt="">
<script src="libs/jquery-3.3.1.js"></script>
<script>
    $(function () {
        // prop 对象属性
        // 获取值
        console.log($('img').prop('src'));
        $('img').prop('aaa','花花');
        $('img').prop({
            'bbb':'元气满满',
            'aa':'嘿嘿哈'
        });

        console.log($('img'));
        // 如果没设置定时器,测试语句返回的是最后的对象,即下面删除操作执行完的对象

        setTimeout(()=>{

           //移除 removeProp() 删除一个属性  ### 不能一次性删除多个
            $('img').removeProp('aa');

            $('img').removeProp('bbb');
        },2000)


    })
</script>
</body>
</html>
View Code

 

5. 类的操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box{
            width: 200px;
            height: 200px;
            background-color: red;
            display: none;
        }

        div.active{
            display: block;
        }
    </style>
</head>
<body>
<button>显示</button>
<div class="box  aa bb cc"></div>
<script src="libs/jquery-3.3.1.js"></script>
<script>
    $(function () {
        var isHidden = true;
        $('button').click(()=>{
            /*if (isHidden){
                $('div').addClass('active  aaa hhh'); //一次可以添加多个类名
                isHidden = false;
                $('button').text('隐藏');
            }else{
                $('div').removeClass('active aaa hhh'); //一次可以删除多个类名
                isHidden = true;
                $('button').text('显示')
            }*/
            $('div').toggleClass('active aa bb cc'); //增加或删除多个类名. 如果类名中没有active,有aa,bb,cc,那么一次操作将增加active并删除aa,bb,cc
        })
    })
</script>
</body>
</html>
View Code

 

6. 值的操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box{
            width: 200px;
            height: 200px;
            background-color: red;
            display: none;
        }

        div.active{
            display: block;
        }

        .ac{
            font-size: 24px;
        }
        .box > ul{
            margin: 0;
        }
    </style>
</head>
<body>
<button id="show">显示</button>
<button id="del">移除标签</button>
<div class="box"></div>

<input type="text" value="'嘿嘿嘿">
<script src="libs/jquery-3.3.1.js"></script>
<script>
    $(function () {
        var isHidden = true;
        $('#show').click(function () {
           if (isHidden){
                $('.box').addClass('active');
            isHidden = false;
            //获取文本的值
            console.log($(this).text());
            //设置文本的值
            $(this).text('隐藏');

            var name = 'alex666';

            $('.box').html(`
            <ul>
            <li id="" class="ac"><a href="">哈哈哈</a></li>
            <li>${name}</li>
            <li>你好啊</li>
            <li>alex酱</li>
            </ul>

            `)
           } else {
               $('.box').removeClass('active');
               isHidden = true;
               $(this).text('显示');
           }
        });


        $('#del').mouseenter(function () {
            $('.box').html('');

          });
            //获取值
            console.log($('input[type=text]').val());
            //设置值
            $('input[type=text]').val('alex');

            console.log($('input[type=text]').val());

    })
</script>

</body>
</html>
View Code

 

7. 操作input的值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="">
    <input type="radio" name="gender" value="male"/><!-- 设置cheked属性表示选中当前选项 -->
    <input type="radio" name="gender" value="female" checked=""/><input type="radio" name="gender" value="unknown"/>gay

    <input type="checkbox" value="eat" checked=""/>吃饭
    <input type="checkbox" value="sleep"/>睡觉
    <input type="checkbox" value="play" checked=""/>打豆豆

    <!-- 下拉列表 option标签内设置selected属性 表示选中当前
        总结: 如果option中没有value 设置当前的值 通过标签的文本设置
               如果有值通过value设置


    -->
    <select name="timespan" id="timespan" class="Wdate" multiple="multiple">
        <option value="1" selected>7:30-8:00</option>
        <option value="2" selected="">8:00-8:30</option>
        <option value="3">8:30-9:00</option>

    </select>

    <select name="" id="fruit" multiple>
        <option>香蕉</option>
        <option>苹果</option>
        <option>柿子</option>
        <option>草莓</option>
    </select>
    </select>
    <input type="text" name="" id="" value="你吃了吗?"/>
</form>

<script src="libs/jquery-3.3.1.js"></script>
<script>

    $(function () {

        // 一、获取值
        //1.获取单选框被选中的value值
        console.log($('input[type=radio]:checked').val());

        // //2.复选框被选中的value,获取的是第一个被选中的值,如果用了选择器eq(),可以根据索引选择. 如果选择器中索引超范围,显示undefined.
        console.log($('input[type=checkbox]:checked').val());
        console.log($('input[type=checkbox]:checked').eq(1).val());

        //3.下拉列表被选中的值, 有多个则默认返回第一个,或者用multiple全部显示

        var obj = $('#timespan option:selected');
        // 获取被选中的值
        var time = obj.val();
        console.log(time);
        //获取文本, 多选的返回全部
        var time_text = obj.text();
        console.log('val:'+time+'text'+time_text);  //val:7:30-8:00text7:30-8:008:00-8:30

        //4. 获取文本框的value值
        console.log($('input[type=text]').val()); //获取文本框的值

        // 二.设置值
        //1.设置单选按钮和多选按钮被选中项
        $('input[type=radio]').val(['male']);
        $('input[type=checkbox]').val(['eat', 'sleep']);

        //2.设置下拉列表框的选中值,必须使用select
        /*因为option只能设置单个值,当给select标签设置multiple,
        那么我们设置多个值,就没有办法了,但是使用select设置单个值和多个值都可以
        */
        $('select').val([2,3]);

        $('select').val(['柿子','草莓','桃子']); //没有就不会选中

        //3.设置文本框的value值
        $('input[type=text]').val('试试看');




    })
</script>

</body>
</html>
View Code

 

8. JS封装模块

$(function () {

    headerWeather();
    changeFu();
















    //导航栏 天气事件处理
    function headerWeather() {
        
    }


    //换肤事件
    function changeFu(){

    }


})
简单示例

 

posted @ 2018-11-13 17:16  SuraSun  阅读(220)  评论(0编辑  收藏  举报