JavaScript 操作内联样式,图片切换,全选练习和div盒子跟随鼠标移动

一、操作内联样式

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            #box1{
                width: 150px;
                height: 150px;
                background-color: red;
            }
        </style>
        <script type="text/javascript">
            window.onload = function(){
    // 点击按钮以后修改box1的大小
                // 获取box1
                var box1 = document.getElementById("box1");
                // 为按钮绑定点击响应函数
                var btn01 = document.getElementById("btn01");
                btn01.onclick = function(){
                    // 修改box1的宽度
                    // 通过js修改元素样式
                    // 语法:元素.style.样式明=样式值
                    // 我们通过style属性设置的样式都是内联样式
                    // 而内联样式有较高的优先级,所以通过js修改的样式往往会立即显示
                    // 但是如果在样式中写了!important,则此时样式会有最高的优先级
                    // 即使通过js也不能覆盖改样式
                    box1.style.width = "300px";
                    box1.style.height = "300px";
                    // 注意:如果CSS的样式中含有 - 号
                    // 这种名称在js中是不合法的,比如background-color
                    // 我们需要将这种样式名修改为驼峰命名法
                    // 方法:去掉 - 号,然后将 - 号后的字母大写
                    box1.style.backgroundColor = "yellowgreen";
                };
                
                
    // 点击按钮以后读取box1的样式
                // 获取box1
                var box1 = document.getElementById("box1");
                // 为按钮绑定点击响应函数
                var btn01 = document.getElementById("btn01");
                btn01.onclick = function(){
                    // 使用style只能读取内联样式的属性样式
                    // 语法:元素.style.样式明,例box1.style.width
                    
                    // 获取元素当前显示的样式
                    // 语法:元素.currentStyle.样式名
                    // 它可以用来读取当前元素正在显示的样式
                    // currentStyle只有IE浏览器支持,其他的都不支持
                    alert(box1.currentStyle.width);
                    
                    // 在其他浏览器中可以使用getComputedStyle()来获取元素当前样式
                    // 这个方法是window的方法,可以直接使用
                    // 需要两个参数
                    // 第一个:要获取样式的元素
                    // 第二个:可以传递一个伪元素,一般都传null
                    // 该方法会返回一个对象对象中封装了当前元素对应的样式
                    // 可以通过对象.样式名来读取样式
                    // 如果获取的样式没有设置,则会获取到真实的值,而不是默认值
                    // 比如:没有设置width,他不会获取到auto,而是一个长度
                    alert(getComputedStyle(box1,null).width);
                    // 但是该方法不支持IE8及以下的浏览器
                };
            };
            
            
    // 其他样式的相关属性!!!
            // clientWidth和clientHeight
            // 这两个属性可以获取元素的可见宽度和高度(包括内容区和内边距)
            // 这些属性都是不带px的,返回的都是数字,可以直接进行计算
            
            // offsetWidth和offsetHeight
            // 获取元素整个的宽高大小,包括内容区、内边距和边框
            
            // offsetParent
            // 可以用来获取当前元素的定位父元素
            // 会获取到离当前元素最近的开启了定位的祖先元素
            
            // offsetLeft 当前元素相对于其定位元素的水平偏移量
            // offsetTop 当前元素相对于其定位元素的垂直偏移量
            
            // scrollWidth和scrollHeight
            // 可以获取元素整个滚动区域的宽度和高度
            
            // scrollLeft
            // 可以获取水平滚动条滚动的距离
            // scroolTop
            // 可以获取垂直滚动条滚动的距离
            
            // 当满足scrollHeight - scrollTop == clientHeight
            // 说明垂直滚动条滚动到底了
            // 当满足scrollWidth - scrollLeft == clientWidth
            // 说明水平滚动条滚动到底了
            
            // onscroll
            // 该事件会在元素的滚动条滚动时触发
        </script>
    </head>
    <body>
        <button id="btn01">点我一下</button>
        <br /><br />
        <div id="box1"></div>
    </body>
</html>

二、图片的切换练习

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            div img{
                width: 500px;
                height: 400px;
            }
            #outer{
                width: 500px;
                margin: 50px auto;
                padding: 10px;
                background-color: greenyellow;
                /* 设置文本居中 */
                text-align: center;
            }
        </style>
        <script type="text/javascript">
            window.onload = function(){
                // 点击按钮切换图片
                // 获取两个按钮
                var prev = document.getElementById("prev");
                var next = document.getElementById("next");
                // 获取img标签
                var img = document.getElementsByTagName("img")[0];
                // 创建一个数组保存图片路径
                var imgArr = ["images/img1.jpg","images/img2.jpg","images/img3.jpg","images/img4.jpg","images/img5.jpg"];
                // 创建一个变量,来保存当前正在显示的图片的索引
                var index = 0;
                // 获取id为info的p元素
                var info = document.getElementById("info");
                // 设置提示文字
                info.innerHTML = "一共"+imgArr.length+"张图片,当前第"+(index+1)+"";
                // 分别为两个按钮绑定单击响应函数
                prev.onclick = function(){
                    // 要切换到上一张,索引自减
                    index --;
                    // 判断index是否小于0
                    if (index < 0){
                        index = imgArr.length - 1;
                    }
                    img.src = imgArr[index];
                    // 当点击按钮后,重新设置信息
                    info.innerHTML = "一共"+imgArr.length+"张图片,当前第"+(index+1)+"";
                };
                next.onclick = function(){
                    // 要切换到下一张,索引自增
                    index ++;
                    if (index > imgArr.length - 1){
                        index = 0;
                    }
                    // 切换图片就是要修改img标签的src属性
                    // 要修改一个属性的元素,属性=属性值
                    img.src = imgArr[index];
                    // 当点击按钮后,重新设置信息
                    info.innerHTML = "一共"+imgArr.length+"张图片,当前第"+(index+1)+"";
                };
            };
        </script>
    </head>
    <body>
        <div id="outer">
            <p id="info"></p>
            <img src="images/img1.jpg" alt="鹿">
            <button id="prev">上一张</button>
            <button id="next">下一张</button>
        </div>
    </body>
</html>

三、全选练习

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script type="text/javascript">
            window.onload = function(){
                // 获取四个多选框items
                var items = document.getElementsByName("items");
                
                // 全选,为id为checkedAllBtn的函数绑定一个点击响应函数
                var checkedAllBtn = document.getElementById("checkedAllBtn");
                checkedAllBtn.onclick = function(){
                    // 遍历items
                    for(var i=0 ; i<items.length ; i++){
                        // 通过多选框的checked属性可以来获取或设置多选框的选中状态
                        // 设置四个多选框变成选中状态
                        items[i].checked = true;
                    }
                };
                // 全不选,为id为checkedNoBtn的函数绑定一个点击响应函数
                var checkedNoBtn = document.getElementById("checkedNoBtn");
                checkedNoBtn.onclick = function(){
                    // 遍历items
                    for(var i=0 ; i<items.length ; i++){
                        // 通过多选框的checked属性可以来获取或设置多选框的选中状态
                        // 设置四个多选框变成没选中状态
                        items[i].checked = false;
                    }
                };
                // 反选
                var checkedRevBtn = document.getElementById("checkedRevBtn");
                checkedRevBtn.onclick = function(){
                    // 遍历items
                    for(var i=0 ; i<items.length ; i++){
                        // 判断多选框状态
                        // if(items[i].checked){
                        //     证明多选框已选中,则设置为没选中状态
                        //     items[i].checked = false;
                        // }else{
                        //     证明多选框没选中,则设置为选中状态
                        //     items[i].checked = true;
                        // }
                        // 等于下面的式子(更简单)
                        items[i].checked = !items[i].checked;
                    }
                };
                // 提交,为sendBtn绑定点击响应函数
                var sendBtn = document.getElementById("sendBtn");
                sendBtn.onclick = function(){
                    // 遍历items
                    for(var i=0 ; i<items.length ; i++){
                        // 判断多选框是否选中
                        if(items[i].checked){
                            alert(items[i].value);
                        }
                    }
                };
                // 全选/全不选
                var checkedAllBox = document.getElementById("checkedAllBox");
                checkedAllBox.onclick = function(){
                    // alert(this === checkedAllBox);
                    // 在事件的响应函数中,响应函数是给谁绑定的this就是谁
                    // 所以this 和 checkedAllBox全等,可以替换
                    // 设置多选框的选中状态
                    for(var i=0 ; i<items.length ; i++){
                        items[i].checked = this.checked;
                    }
                };
                // 如果四个多选框全都选中,则checkedAllBox也应该选中
                // 如果四个多选框没都选中,则checkedAllBox也应该不选中
                // 为四个多选框分别绑定点击响应函数
                for(var i=0 ; i<items.length ; i++){
                    items[i].onclick = function(){
                        // 将checkedAllBox设置为选中状态
                        checkedAllBox.checked = true;
                        for(var j=0 ; j<items.length ; j++){
                            // 判断四个多选框是否全选
                            // 只要有一个没选,就不是全选
                            if(!items[j].checked){
                                // 一旦进入判断,则证明不是全选状态
                                // 将checkedAllBox设置为没选中状态
                                checkedAllBox.checked = false;
                                // 一旦进入判断,则已经得出结果,不用在继续循环
                                break;
                            }
                        }
                    };
                }
                
            };
        </script>
    </head>
    <body>
        <form method="post" action="">你爱好的运动是?
            <input type="checkbox" id="checkedAllBox" />全选/不选
            <br/>
            <input type="checkbox" name="items" value="足球" />足球
            <input type="checkbox" name="items" value="篮球" />篮球
            <input type="checkbox" name="items" value="羽毛球" />羽毛球
            <input type="checkbox" name="items" value="乒乓球" />乒乓球
            <br/>
            <input type="button" id="checkedAllBtn" value="全 选" />
            <input type="button" id="checkedNoBtn" value="全不选" />
            <input type="button" id="checkedRevBtn" value="反 选" />
            <input type="button" id="sendBtn" value="提 交" />
            </form>
        </form>
    </body>
</html>

四、div盒子跟随鼠标移动

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            #box1{
                width: 150px;
                height: 150px;
                background-color: gold;
                /* 开启box1的绝对定位 */
                position: absolute;
            }
        </style>
        <script type="text/javascript">
            window.onload = function(){
                // 使div可以跟随鼠标移动
                // 获取box1
                var box1 = document.getElementById("box1");
                // 绑定鼠标移动事件
                document.onmousemove = function(event){
                    console.log();
                    // 解决兼容问题
                    event = event || window.event;
                    // 获取鼠标的坐标
                    // clientX和clientY用于获取坐标在当前可见窗口的坐标
                    // div的偏移量是相对于整个页面的
                    var left = event.clientX;
                    var top = event.clientY;
                    
                    // pageX和pageY可以获取鼠标相对于当前页面的坐标
                    // var left = event.pagetX;
                    // var top = event.pagetY;
                    
                    // 设置div偏移量
                    box1.style.left = left + "px";
                    box1.style.top = top + "px";
                };
            };
        </script>
    </head>
    <body>
        <div id="box1"></div>
    </body>
</html>

 

posted @ 2021-04-27 17:37  hapuluosi  阅读(151)  评论(0编辑  收藏  举报