JavaScript+css+html鼠标指针经过某些元素时背景变色

Posted 橘猫吃不胖~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript+css+html鼠标指针经过某些元素时背景变色相关的知识,希望对你有一定的参考价值。

1 案例1说明

【案例】以表格为例,使用javascript+css+html,设置鼠标指针经过某行时,该行变色。

【案例分析】当表格中的单元格比较多时,可以在用户鼠标指针经过时把当前行添加背景色,使表格内容显得清晰和一目了然,容易阅读。

本案例使用排他思想来分析,并且使用鼠标指针经过事件onmouseover和鼠标指针离开事件onmouseout实现案例效果。

1.1 编写HTML结构体代码

在HTML页面中,编写一个表格,其中含有学号、姓名、性别、年龄、地址等信息。

    <!-- 编写一个div,将其上下外边距调整为50像素 -->
    <div style="margin: 50px auto;">
        <!-- 编写一个表格,显示边框,并且居中 -->
        <table border="1" align="center">
            <!-- 编写表头 -->
            <thead>
                <!-- 第一行 -->
                <tr align="center">
                    <th width="50">学号</th>
                    <th width="100">姓名</th>
                    <th width="50">性别</th>
                    <th width="50">年龄</th>
                    <th width="200">地址</th>
                </tr>
            </thead>
            <!-- 表格主体 -->
            <tbody>
                <!-- 第二行 -->
                <tr align="center">
                    <td>1001</td>
                    <td>小明</td>
                    <td></td>
                    <td>19</td>
                    <td>北京</td>
                </tr>
                <!-- 第三行 -->
                <tr align="center">
                    <td>1002</td>
                    <td>小红</td>
                    <td></td>
                    <td>18</td>
                    <td>天津</td>
                </tr>
                <!-- 第四行 -->
                <tr align="center">
                    <td>1003</td>
                    <td>小徐</td>
                    <td></td>
                    <td>19</td>
                    <td>上海</td>
                </tr>
            </tbody>
        </table>
    </div>

效果图如下:

1.2 编写CSS样式

css样式编写很简单,设置鼠标经过时的样式即可,这里我将背景色设置为粉色。

    .bg 
        background-color: pink;
    

1.3 编写js代码

首先获取每一行tr元素,然后给每一行绑定注册事件,鼠标经过时变成粉色,鼠标离开变回原来的颜色,使用循环排他思想设计。

        //1、获取tbody下全部tr元素,返回值为一个数组
       var trs = document.querySelector("tbody").querySelectorAll("tr");
        //循环给每个tr绑定事件
        for (var i = 0; i < trs.length; i++) 
            //给每个tr绑定鼠标经过时的事件
            trs[i].onmouseover = function () 
                this.className = "bg";//鼠标经过时将背景修改为粉色
            
            trs[i].onmouseout = function () 
                this.className = "";
            
        

效果图如下:当鼠标移动到第二行时

1.4 总代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    .bg 
        background-color: pink;
    
</style>

<body>
    <!-- 编写一个div,将其上下外边距调整为50像素 -->
    <div style="margin: 50px auto;">
        <!-- 编写一个表格,显示边框,并且居中 -->
        <table border="1" align="center">
            <!-- 编写表头 -->
            <thead>
                <!-- 第一行 -->
                <tr align="center">
                    <th width="50">学号</th>
                    <th width="100">姓名</th>
                    <th width="50">性别</th>
                    <th width="50">年龄</th>
                    <th width="200">地址</th>
                </tr>
            </thead>
            <!-- 表格主体 -->
            <tbody>
                <!-- 第二行 -->
                <tr align="center">
                    <td>1001</td>
                    <td>小明</td>
                    <td></td>
                    <td>19</td>
                    <td>北京</td>
                </tr>
                <!-- 第三行 -->
                <tr align="center">
                    <td>1002</td>
                    <td>小红</td>
                    <td></td>
                    <td>18</td>
                    <td>天津</td>
                </tr>
                <!-- 第四行 -->
                <tr align="center">
                    <td>1003</td>
                    <td>小徐</td>
                    <td></td>
                    <td>19</td>
                    <td>上海</td>
                </tr>
            </tbody>
        </table>
    </div>
    <script>
        //1、获取tbody下全部tr元素,返回值为一个数组
        var trs = document.querySelector("tbody").querySelectorAll("tr");
        //循环给每个tr绑定事件
        for (var i = 0; i < trs.length; i++) 
            //给每个tr绑定鼠标经过时的事件
            trs[i].onmouseover = function () 
                this.className = "bg";//鼠标经过时将背景修改为粉色
            
            trs[i].onmouseout = function () 
                this.className = "";
            
        
    </script>
</body>

</html>

2 案例2说明

上面的例子说明了怎样设置每行在鼠标经过时变色,接下来说明每个单元格怎样设置在鼠标经过时变色。

html和css代码与上面代码相同,需要改变的时JavaScript代码部分,因此以下代码都只修改了js部分。

方法1:直接获取所有的td元素,并且绑定事件。

        //获取所有的td元素
        var tds = document.querySelector("tbody").querySelectorAll("td");
        //循环给每个td注册事件
        for (var i = 0; i < tds.length; i++) 
            //当鼠标移动到单元格上时,设置背景色
            tds[i].onmouseover = function () 
                this.className = "bg";
            
            //当鼠标移出单元格时,去掉背景色
            tds[i].onmouseout = function () 
                this.className = "";
            
        

方法2:获取每一行中的所有td元素,并且绑定事件

        //获取所有tr元素
        var trs = document.querySelector("tbody").querySelectorAll("tr");
        //循环每个tr,获取每个tr下的td元素
        for (var i = 0; i < trs.length; i++) 
            //获取每个td元素
            var tds = trs[i].querySelectorAll("td");
            //循环给每个td绑定注册事件
            for (var j = 0; j < tds.length; j++) 
                tds[j].onmouseover = function () 
                    this.className = "bg";
                
                tds[j].onmouseout = function () 
                    this.className = "";
                
            
        

以上是关于JavaScript+css+html鼠标指针经过某些元素时背景变色的主要内容,如果未能解决你的问题,请参考以下文章

javascript特效问题 页面上有许多点一直跟随着鼠标指针的移动。如何实现这个这个效果.

css 如何改变鼠标图标

如何用CSS实现鼠标经过 图片放大的效果

HTML和Javascript高手进,图片总重复加载的问题

css的 cursor 属性

HTML+css 鼠标滑过二级导航时想保留一级导航的滑过 求大神解答