返回总目录页

jquery使用案例

 

jq实现点击一级菜单div,有且只有它下面的二级菜单进行伸缩展开

还可以作为点击指定的标签,然后选择某个标签做其它的操作,比如选择某处的标签,生成子标签,生成其它内容等

访问时如下:

 当点击一级菜单时,点击的菜单有的二级菜单展开,其它的二级菜单收缩,再次点击这个菜单,二级菜单收缩。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us">
<head>
    <title>DL Demo</title>
    <script src="http://code.jquery.com/jquery-1.1.3.1.pack.js"></script>
    <script>
    $(document).ready(function(){
        $("dd").hide();
        $("dt").css({cursor:"pointer"});
        $.each($("dt"), function(){
            $(this).click(function(){
                $("dd").not($(this).next()).hide();
                $(this).next().toggle(500);
                //$(this).next().toggle();
            });
        });
    });
    </script>
    <style>
    body { font-family: Arial; font-size: 16px; }
    dl { width: 300px; }
    dl,dd { margin: 0; }
    dt { background: #F39; font-size: 18px; padding: 5px; margin: 2px; width: 100%;}
    dt a { color: #FFF; }
    dd a { color: #000; }
    ul { list-style: none; padding: 5px;margin:0; }
    </style>
</head>
<body>
<dl>
    <dt><a href="">jQuery</a></dt>
    <dd>
        <ul>
            <li><a href="">Download</a></li>
            <li><a href="">Documentation</a></li>
            <li><a href="">Blog</a></li>
        </ul>
    </dd>
    <dt><a href="">Community</a></dt>
    <dd>
        <ul>
            <li><a href="">Mailing List</a></li>
            <li><a href="">Tutorials</a></li>
            <li><a href="">Demos</a></li>
            <li><a href="">Plugins</a></li>
            <li><a href="">Plugins</a></li>
            <li><a href="">Plugins</a></li>
            <li><a href="">Plugins</a></li>
            <li><a href="">Plugins</a></li>
            <li><a href="">Plugins</a></li>
        </ul>
    </dd>
    <dt><a href="">Development</a></dt>
    <dd>
        <ul>
            <li><a href="">Source Code</a></li>
            <li><a href="">Bug Tracking</a></li>
            <li><a href="">Recent Changes</a></li>
        </ul>
    </dd>
</dl>
</body>
</html>
程序
  • 如下图,整个菜单栏都在dl标签下,菜单栏下面就是一级菜单和二级菜单的标签。一级菜单和二级菜单并不是包含关系,是同级关系。
  • 它们的顺序是一个一级菜单,下面一个二级菜单的标签;然后再一个一级菜单,再一个二级菜单的标签。
  • 二级菜单同属于一个一级菜单下的。所以二级菜单下还有个ul列表。二级菜单的每个元素都是一个li标签,每个元素都是一个li标签下的a标签。一级菜单也是在a标签的包裹下。也就是我们点击菜单上的字是能实现get请求的。我们点击菜单的a标签的外层标签,是能实现菜单栏的收缩和展开的。

 再研究一下js和css。

  • js程序这里是放到了head里,css样式上面。整体在 $(document).ready(function(){})这个函数里面。这个ready应该是加载jq程序用的。函数里面就是放js对元素的具体操作了
  • 选择dd标签,也就是所有二级菜单标签,执行hide方法,也就是将所有二级菜单隐藏。
  • 选中dt标签,也就是所有一级菜单标签,给它加个css属性对儿。
  • $.ench($("dt"),function(){}) 循环每个dt标签,也就是一级菜单标签。然后函数里面写对每个一级菜单标签的操作。
  • 这里对每个一级菜单标签的操作是查看是否触发点击动作$(this).click(function(){}),如果对某个一级菜单触发了点击动作,那么点击后的行为写在函数中。然后选中二级菜单,判断这个二级菜单是不是这个一级菜单标签的下一个元素,不是的话就隐藏,即社设置了display是none。是的话就点toggle,用了这个方法就相当于给这个二级菜单下的元素设置了display是block,就不再隐藏了。这样就实现了点击一级菜单,实现当前一级菜单的展开,其它一级菜单的收缩。
  • 我们在看看css,是对整个dl做了样式,对body做了样式,对单个dt二级菜单做了样式,而二级菜单下的a标签做了样式吗,还有所有的ul标签设置none

 

 

上面是对下一个标签产生行为,下面参考程序是对子标签产生一个行为

<script type="text/javascript">
$(document).ready(function()
{
 $(".menu_list ul li").click(function()
 {
 if($(this).children(".div1").is(":hidden"))
 //判断对象是显示还是隐藏
 {
  if(!$(this).children(".div1").is(":animated")){
  //如果当前没有进行动画,则添加新动画
  $(this).children(".div1").animate({height:'show'},1000)
  .end().siblings().find(".div1").hide(1000);}
 }else{
  if(!$(this).children(".div1").is(":animated")){
  $(this).children(".div1").animate({height:'hide'},1000)
  .end().siblings().find(".div1").hide(1000);}
  }
  }
 );
});

 下拉菜单的实现方法(鼠标进入和离开的事件)

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="C:\mcw\testt\static\js\jquery-3.3.1.min.js">
    <style>
                * {margin: 0px;padding: 0px;}

        ul {list-style-type: none;}

        a {text-decoration: none;color: black;}

        .wrapper {width: 300px;}

        .wrapper ul.nav::after {
            content: "";
            display: block;
            clear: both;
        }

        .wrapper ul li {
            height: 30px;
            /*  此处height是功能实现的关键,固定高度height==line-hieght使得:
             *  当ul.detail display时呈现overflow效果,不会额外占据地方,不会将wrapper撑大,
             */
            float: left;
            text-align: center;
            font-size: 14px;
            width: 100px;
            line-height: 30px;
            background-color: rgb(88, 187, 190);
            cursor: pointer;
        }

        .wrapper ul li:hover{color: white;}

        .wrapper ul li ul.detail {display: none;}

        .wrapper ul li ul li {background-color: rgb(129, 221, 224);}

        .wrapper ul li ul li:hover {background-color: rgb(178, 246, 248);}
    </style>
</head>
<body>
    <div class="wrapper">
        <ul class="nav">
            <li>
                <a href="#">明星</a>
                <ul class="detail">
                    <li><a href="#">胡歌</a></li>
                    <li><a href="#">黄晓明</a></li>
                    <li><a href="#">马思纯</a></li>
                </ul>
            </li>
            <li>
                <a href="#">演员</a>
                <ul class="detail">
                    <li><a href="#">李幼斌</a></li>
                    <li><a href="#">何冰</a></li>
                    <li><a href="#">胡军</a></li>
                </ul>
            </li>
            <li>
                <a href="#">歌手</a>
                <ul class="detail">
                    <li><a href="#">蔡徐坤</a></li>
                    <li><a href="#">刀郎</a></li>
                    <li><a href="#">鹿晗</a></li>
                </ul>
            </li>
        </ul>
    </div>
</body>
    <script src="http://libs.baidu.com/jquery/1.7.1/jquery.min.js"></script>
    <script>
        $(function () {
            // stop很重要,试验了好久.......这种写法算是比较满意的动画效果
            $("div ul.nav>li").mouseenter(function () {
                $(this).find(".detail").stop(true, true)
                    .show("fast");
            }).mouseleave(function () {
                $(this).find(".detail").hide("fast");
            })
        });
    </script>
</html>
程序

下拉菜单是个动画。如下,当没有动作时就这样显示。

 当你鼠标悬浮时就会产生下拉菜单

 

 当你光标往下滑动时,滑动到的可以当做被选中,这里颜色也做了修改。这样就可以做成超链接的方式,点击跳转页面等等的了。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="C:\mcw\testt\static\js\jquery-3.3.1.min.js">
    <style>
                * {margin: 0px;padding: 0px;}

        ul {list-style-type: none;}

        a {text-decoration: none;color: black;}

        .wrapper {width: 300px;}

        .wrapper ul.nav::after {
            content: "";
            display: block;
            clear: both;
        }

        .wrapper ul li {
            height: 30px;
            /*  此处height是功能实现的关键,固定高度height==line-hieght使得:
             *  当ul.detail display时呈现overflow效果,不会额外占据地方,不会将wrapper撑大,
             */
            float: left;
            text-align: center;
            font-size: 14px;
            width: 100px;
            line-height: 30px;
            background-color: rgb(88, 187, 190);
            cursor: pointer;
        }

        .wrapper ul li:hover{color: white;}

        .wrapper ul li ul.detail {display: none;}

        .wrapper ul li ul li {background-color: rgb(129, 221, 224);}

        .wrapper ul li ul li:hover {background-color: rgb(178, 246, 248);}
    </style>
</head>
<body>
    <div class="wrapper">
        <ul class="nav">
            <li>
                <a href="#">明星</a>
                <ul class="detail">
                    <li><a href="#">胡歌</a></li>
                    <li><a href="#">黄晓明</a></li>
                    <li><a href="#">马思纯</a></li>
                </ul>
            </li>
            <li>
                <a href="#">演员</a>
                <ul class="detail">
                    <li><a href="#">李幼斌</a></li>
                    <li><a href="#">何冰</a></li>
                    <li><a href="#">胡军</a></li>
                </ul>
            </li>
            <li>
                <a href="#">歌手</a>
                <ul class="detail">
                    <li><a href="#">蔡徐坤</a></li>
                    <li><a href="#">刀郎</a></li>
                    <li><a href="#">鹿晗</a></li>
                </ul>
            </li>
        </ul>
    </div>
</body>
    <script src="http://libs.baidu.com/jquery/1.7.1/jquery.min.js"></script>
    <script>
        $(function () {
            // stop很重要,试验了好久.......这种写法算是比较满意的动画效果
            $("div ul.nav>li").mouseenter(function () {
                $(this).find(".detail").stop(true, true)
                    .show("fast");
            }).mouseleave(function () {
                $(this).find(".detail").hide("fast");
            })
        });
    </script>
</html>
程序

查看它的标签结构。

  • 首先,一级菜单和下拉菜单都在同一个div下的ul下。ul下有多个li标签。一级菜单都在li标签下,并且包裹在a标签中。
  • 然后,下拉菜单在一级菜单li标签下,是个ul,每个下拉菜单元素都是其下的一个子li标签,这个下拉菜单的ul起个类名,详细。
  • 下拉菜单每个元素都是一级菜单li标签下ul的一个li标签,并且用a标签包裹着。

 这里暂且将ul和li标签分别称为,一级ul,一级li标签,二级ul,二级li标签,方便后面描述。然后我们再看看js语句

  • js都在$(function(){})的花括号中。
  • 然后是触发鼠标进入和鼠标离开的事件,$("选中一级li标签").mouseenter(function(){}).mouseleave(function(){}) 。即选中标签点数标进入,函数里面写进入这个标签后的行为,再点鼠标离开,函数里面写鼠标离开这个标签的行为。
  • 当鼠标进入一级li标签后,点find找有detail类名的标签,也就是找到二级ul标签,然后点stop点展示。
  • 当鼠标离开的时候,找到这个一级li标签下的二级ul标签。点hide隐藏起来

再看看css设置:

一级ul这里哟领的好像是叫伪元素清除法的清除浮动。

 

  • 一级li标签在ul中是向左浮动,这使li标签元素都在同一行显示,否则会换行显示的。这个游标不知道是干啥的
  • 一级li标签添加悬浮字体颜色,这里好像没有生效,二级ul标签设置display是none,这是使得二级ul的内容默认是不可见的。然后通过js动画show和hide来显示和隐藏的。
  • 二级li标签添加悬浮颜色透明度变化,这使我们将光标悬浮选中某个二级li标签时,让我们分辨出是选中了哪个li标签。

 

 三级菜单,下拉方式展示

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="C:\mcw\testt\static\js\jquery-3.3.1.min.js">
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        /*一级菜单*/
        .navMenu {
            width: 570px;
            margin: 0 auto;
        }

        .navMenu ul li {
            float: left;
            position: relative;
        }

        li {
            list-style: none;
            background-color: #eee;
            width: 140px;
            height: 40px;
            text-align: center;
            margin-right: 2px;
            margin-bottom: 2px;
        }

        ul li a {
            line-height: 40px;
            text-align: center;
            font-size: 20px;
            color: #000;
            text-decoration: none;
            display: block;
            padding: 0 10px;
        }

        /*二级菜单*/
        .navMenu ul li ul {
            display: none;
            position: absolute;
            left: 0;
            top: 0;
            margin-top: 42px;
        }

        .navMenu ul li ul li {
            float: none;
        }

        /*三级菜单*/
        .navMenu ul li ul li ul {
            display: none;
            left: 140px;
            top: -42px;
        }
    </style>
</head>
<body>
<div class="navMenu">
    <ul>
        <li><a href="#">首页</a>
            <ul>
                <li><a href="#">JavaScript+</a>
                    <ul>
                        <li><a href="#">三角函数</a></li>
                        <li><a href="#">矩形</a></li>
                    </ul>
                </li>
                <li><a href="#">语文</a>
                    <ul>
                        <li><a href="#">唐诗</a></li>
                        <li><a href="#">宋词</a></li>
                    </ul>
                </li>
                <li><a href="#">英语</a></li>
            </ul>
        </li>
        <li><a href="#">课程大厅</a></li>
        <li><a href="#">学习中心+</a>
            <ul>
                <li><a href="#">JavaScript+</a>
                    <ul>
                        <li><a href="#">三角函数</a></li>
                        <li><a href="#">矩形</a></li>
                    </ul>
                </li>
                <li><a href="#">语文</a>
                    <ul>
                        <li><a href="#">三角函数</a></li>
                        <li><a href="#">矩形</a></li>
                    </ul>
                </li>
                <li><a href="#">英语</a></li>
            </ul>
        </li>
        <li><a href="#">帮助</a></li>
    </ul>
</div>
</body>
<script src="http://libs.baidu.com/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
    $(function () {
        $("li").has("ul").mouseover(function () {
            $(this).children("ul").css("display", "block");
            $(this).css("backgroundColor", "#0066FF");
        }).mouseout(function () {
            $(this).children("ul").css("display", "none");
            $(this).css("backgroundColor", "#eee");
        })
    })
</script>
</html>
程序

正常情况下:

 

 悬浮到首页上,下拉二级菜单出来

 

 悬浮到二级子菜单上,三级菜单悬浮出来。然后可以去点击三级菜单了。

 

 查看代码结构如下:

  • 整体包含在navMenu这个div中。这里按照菜单分级,将标签也分级来称呼。
  • 在这个div下是一级ul。一级菜单是一级ul的li标签中,并且是被a标签包裹。
  • 二级菜单在一级菜单a标签后面,对应同一个li标签下的二级ul.
  • 二级ul下有二级li标签,二级li标签下有对应的二级菜单,并且在a标签包裹中。
  • 如果二级菜单下有三级菜单,那么三级菜单ul在二级li标签下,和二级菜单a标签同级。然后三级ul标签下的每个li标签就是三级三级菜单。这里英语没有三级菜单,就没有三级ul标签跟它同级

 

 js程序如下:

  • 整体程序在$(funtion(){})函数 中。
  • 选中li标签,如果li标签有ul子标签,那么当触发鼠标移动到li标签上,就执行如下函数 ,当鼠标离开li标签,就执行另一个函数。  $("li").has("ul").mouseover(function () {}).mouseout(function({})
  • ul就在当前li标签里面,当鼠标移到li标签上,这个li标签的子标签ul的样式修改display为block,显示出来,并且加个背景色
  • 当鼠标离开这个有ul子标签的li标签时,那么就将这个li标签的子标签ul设置样式display为none,即隐藏起来,然后设置背景色为#eee。

 

 

 

 再看看css样式:

<style>
        * {
            padding: 0;
            margin: 0;
        }

        /*一级菜单*/
        .navMenu {
            width: 570px;
            margin: 0 auto;
        }

        .navMenu ul li {
            float: left;
            position: relative;
        }   //一级ul下一级li标签是向左浮动,这样实现了li标签一级li标签排在一行,一级li标签设置了相对定位。

        li {
            list-style: none;
            background-color: #eee;
            width: 140px;
            height: 40px;
            text-align: center;
            margin-right: 2px;
            margin-bottom: 2px;
        }  //所有的li标签都设置list-style: none;  这应该是li标签前面的序号或无序的点点之类的标记都取消掉了

        ul li a {
            line-height: 40px;
            text-align: center;
            font-size: 20px;
            color: #000;
            text-decoration: none;
            display: block;
            padding: 0 10px;
        }  //所有ul下li标签下的a标签都设置为block显示。

        /*二级菜单*/
        .navMenu ul li ul {
            display: none;
            position: absolute;
            left: 0;
            top: 0;
            margin-top: 42px;
        }  //二级ul设置为绝对定位。子绝父相。实现了父元素在哪里,子元素的位置以父元素的位置为依据去调整。
//子元素默认设置display为none,默认不显示。也就是二级菜单默认不显示 .navMenu ul li ul li {
float: none; } //二级菜单,也就是二级ul下的二级li标签,浮动设置为none,设置对象不浮动。二级li标签不浮动,
//那么li标签独占一行,会往下排,这样就是我们看到的二级菜单是往下排的。
       //因为二级ul设置为不显示了,所以li标签也是看不到的
/*三级菜单*/ .navMenu ul li ul li ul { display: none; left: 140px; top: -42px; } //三级菜单,三级ul设置display是none,也就是三级菜单默认不显示。
//三级菜单在二级菜单右边显示,二级菜单宽140,所以三级菜单要距离父标签也就是二级菜单左边140px。
//顶部-42px,这个跟二级菜单,二级ul 的
margin-top: 42px;有关
</style>

 左侧导航栏三级菜单带加减号的

效果

当加载后,没有点击时,如下。有子菜单的有个加号

 

 点击带加号的一级菜单,可以看到一级菜单后面加号变成减号,表示它已经展开了子菜单。子菜单颜色变浅。

二级子菜单美协机关还有子菜单,也就是它下面有三级子菜单没有展开,此时这个二级菜单后面显示是加号。而没有子菜单的杂志社后面没有加减号

 

 点击二级菜单美协机关,二级菜单展开它下面的三级菜单,二级菜单后面的加号变减号,表示已经展开它下面的子菜单了。三级菜单比如办公室,是没有子菜单的,它后面没有加减号。三级菜单颜色更浅

 

 点击一级菜单组织机构。一级菜单团体会员展开的二级三级菜单都收缩起来,一级菜单组织机构下子菜单,也就是它下面的二级菜单都展开来。

 

 点击一级菜单下的两个子菜单,也就是两个有三级菜单的二级菜单。那么两个二级菜单都会展开它下面的三级菜单,此时是同时是展开状态的。也就是说同一个一级菜单下的三级菜单都能同时展开,不会说展开一个二级菜单下的三级菜单,令一个二级菜单就收缩起来

程序 

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="http://libs.baidu.com/jquery/1.7.1/jquery.min.js"></script>
    <title>三级菜单</title>

<style>
*{margin: 0;padding: 0}
body{font-size: 12px;font-family: "宋体","微软雅黑";}
ul,li{list-style: none;}
a:link,a:visited{text-decoration: none;}
.list{width: 210px;border-bottom:solid 1px #316a91;margin:40px auto 0 auto;}
.list ul li{background-color:#467ca2; border:solid 1px #316a91; border-bottom:0;}
.list ul li a{padding-left: 10px;color: #fff; font-size:12px; display: block; font-weight:bold; height:36px;line-height: 36px;position: relative;
}
.list ul li .inactive{ background:url(off.png) no-repeat 184px center;}
.list ul li .inactives{background:url(on.png) no-repeat 184px center;}
.list ul li ul{display: none;}
.list ul li ul li { border-left:0; border-right:0; background-color:#6196bb; border-color:#467ca2;}
.list ul li ul li ul{display: none;}
.list ul li ul li a{ padding-left:20px;}
.list ul li ul li ul li { background-color:#d6e6f1; border-color:#6196bb; }
.last{ background-color:#d6e6f1; border-color:#6196bb; }
.list ul li ul li ul li a{ color:#316a91; padding-left:30px;}
</style>



<script type="text/javascript" >
$(document).ready(function() {
    $('.inactive').click(function(){
        if($(this).siblings('ul').css('display')=='none'){
            $(this).parent('li').siblings('li').removeClass('inactives');
            $(this).addClass('inactives');
            $(this).siblings('ul').slideDown(100).children('li');
            if($(this).parents('li').siblings('li').children('ul').css('display')=='block'){
                $(this).parents('li').siblings('li').children('ul').parent('li').children('a').removeClass('inactives');
                $(this).parents('li').siblings('li').children('ul').slideUp(100);

            }
        }else{
            //控制自身变成+号
            $(this).removeClass('inactives');
            //控制自身菜单下子菜单隐藏
            $(this).siblings('ul').slideUp(100);
            //控制自身子菜单变成+号
            $(this).siblings('ul').children('li').children('ul').parent('li').children('a').addClass('inactives');
            //控制自身菜单下子菜单隐藏
            $(this).siblings('ul').children('li').children('ul').slideUp(100);

            //控制同级菜单只保持一个是展开的(-号显示)
            $(this).siblings('ul').children('li').children('a').removeClass('inactives');
        }
    })
});
</script>

</head>

<body>
<div class="list">
    <ul class="yiji">
        <li><a href="#">中国美协章程</a></li>
        <li><a href="#" class="inactive">团体会员</a>
            <ul style="display: none">
                <li><a href="#" class="inactive active">美协机关</a>
                    <ul>
                        <li><a href="#">办公室</a></li>
                        <li><a href="#">人事处</a></li>
                        <li><a href="#">组联部</a></li>
                        <li><a href="#">外联部</a></li>
                        <li><a href="#">研究部</a></li>
                        <li><a href="#">维权办</a></li>
                    </ul>
                </li>
                <li class="last"><a href="#">《美术》杂志社</a></li>
            </ul>
        </li>
        <li><a href="#" class="inactive">组织机构</a>
            <ul style="display: none">
                <li><a href="#" class="inactive active">美协机关</a>
                    <ul>
                        <li><a href="#">办公室</a></li>
                        <li><a href="#">人事处</a></li>
                        <li><a href="#">组联部</a></li>
                        <li><a href="#">外联部</a></li>
                        <li><a href="#">研究部</a></li>
                        <li><a href="#">维权办</a></li>
                    </ul>
                </li>
                <li><a href="#" class="inactive active">中国文联美术艺术中心</a>
                    <ul>
                        <li><a href="#">综合部</a></li>
                        <li><a href="#">大型活动部</a></li>
                        <li><a href="#">展览部</a></li>
                        <li><a href="#">艺委会工作部</a></li>
                        <li><a href="#">信息资源部</a></li>
                        <li><a href="#">双年展办公室</a></li>
                    </ul>
                </li>
                <li class="last"><a href="#">《美术》杂志社</a></li>
            </ul>
        </li>
    </ul>
</div>

</body>


</html>

加号减号图片

 

 

分析

 查看div情况:

  • 左侧导航栏都在有类名list的div下。下面将ul li根据菜单级别分成三级。
  • 一级ul下每个li是一级li标签,一级li标签放一级菜单的a标签。似乎有子菜单的一级菜单a标签,都设置了 inactive类名
  • 一级菜单下有子菜单,那么就在一级li标签下的一级菜单a标签,同级有个二级ul标签。
  • 二级ul标签下是二级li标签,二级li标签下是二级菜单a标签,二级菜单有三级子菜单的,在二级菜单a标签后面有个三级ul标签,三级ul标签下面是三级li标签,三级li标签里面是三级菜单a标签。
  • 下面有三级菜单的二级菜单a标签,都设置了类名inactive 和active,也就是一级li标签下有二级ul标签的,那么一级菜单a标签只设置inactive;二级li标签下有三级ul标签的,不只是将二级菜单a标签添加类名inactive,还加个active。
  •  一级ul和和三级ul在标签内不加样式。二级ul在标签上加个display是none的样式,不让它显示。
  • 二级li标签的最后一个li标签,都加了一个类名last。一级和三级的没有加。这里不知道这个是干啥用的。
  • 注意:1、父菜单a标签的要注释掉访问地址,a href="#",不然点击一下父标签,即使是空的地址,它也会当成一次请求,导致无法展开它的子菜单;2、使用Python模板继承的方式,左侧导航栏你点开之后,点击三级菜单,get访问三级菜单的页面,那么因为这个三级菜单的页面加载过来是带着左侧导航栏的,因为默认二级三级菜单是不展开的,所以当你点击三级菜单跳到三级菜单页面后,你点开的左侧导航栏菜单就会消失,成为新的没有展开的页面。如果设置成内容页是局部加载,菜单栏不需要重新加载,这样才不会对菜单栏点击后的效果弄没

这里似乎有子菜单的一级菜单a标签,都设置了 inactive类名

 下面有三级菜单的二级菜单a标签,都设置了类名inactive 和active,也就是一级li标签下有二级ul标签的,那么一级菜单a标签只设置inactive;二级li标签下有三级ul标签的,不只是将二级菜单a标签添加类名inactive,还加个active。

 一级ul和和三级ul在标签内不加样式。二级ul在标签上加个display是none的样式,不让它显示

 下面看一下js,下面分析有点问题,看下下面那个分析:

  • 整体都在$(document).ready(function(){})函数中。
  • 一级菜单和二级菜单有子菜单的,都有inactive类名,在a标签上。当点击一级菜单和二级菜单时,让它触发点击事件。所以这里对有inactive类名的标签绑定了点击事件。点击事件的程序如下:$('.inactive').click(function(){})。即点击包含inactive类名的标签(inactive是收缩的off图片,是加号样式),就让它触发点击事件。触发事件后的行为在后面的函数中定义。
  • 事件函数中是这样的,看下下张图片:如果点击的元素(必定是一级菜单或者二级菜单a标签,因为inactive类名只有这两个有。这个a标签必定有兄弟元素ul,ul是作为这个菜单的下级子菜单,因为inactive就是收缩的off图片,是加号样式)的兄弟元素ul的样式display是none(只有二级ul才有这个样式),那么就将这个标签的父标签li(一级li)的兄弟标签,移除掉inactives类名(展开的on图片,减号图片)。然后给当前点击的这个标签添加类名inactives(展开的on图片,减号图片)。再将这个被点击的a标签(一级菜单a标签)的兄弟标签ul标签(二级ul),以向下滑动方式显示出来,再点children它的li标签,这步没懂;如果点击的这个a标签(一级菜单a)的父标签li标签(一级li)的兄弟标签li(被点击的一级li的兄弟li)的子标签ul(一级兄弟li下的二级ul)的样式是display等于block,(首先要明白一点,这里的$(this)点击的是确定的一级菜单的a标签,因为前面判断只有一级菜单的a标签兄弟元素ul标签样式才有display不显示的样式),也就是点击的一级菜单a标签的的父标签li(一级li)的兄弟标签li(一级li)下的子标签ul标签(当前点击一级菜单同级的其它一级菜单,判断是不是展开,是展开就清除展开的类名样式并且将它向上收缩起来)的display是不是block,这个ul标签是二级ul,默认是不显示,如果一级li下的二级ul有是显示的,那么就表明一级菜单已经是展开了这个二级菜单的,判断后面需要做 操作,这里的操作应该是把其它展开的一级菜单收缩起来,清除掉展开的on图片,减号样式。点击的一级菜单a标签的父标签li的兄弟元素li的子标签的a标签移除掉inactives样式(也就是移除展开on图片减号类名样式,即移除减号图片,可以看样式inactive是有加号的图片,即有下级菜单未展开的off图片;inactives是展开了下级菜单的图片,即on状态的图片,减号图片),然后当前点击的一级菜单a标签的父标签li的兄弟标签li(其它一级li)的子标签ul标签(一级兄弟li下的二级ul)让它向上滑动,隐藏显示出来的兄弟一级li标签下的子标签二级ul标签。
  • 否则执行如下的操作,也就是当判断点击的不是一级菜单a标签(点击的菜单的兄弟元素没有display是none的样式时)时,因为点击操作是对含有inactive的标签触发的,有inactive类的只有一级菜单a标签和二级菜单a标签,既然判断不是一级菜单,那么肯定点击的是二级菜单。做如下操作:
  • 控制自身(二级菜单a标签)变成加号,这个点击的标签移除inactives类名(展开的on图片,减号图片),如果二级菜单a标签有inactives类名,那么就说明它是展开的,这里再次点击就是将它移除,也就是点击展开的二级菜单就会将它收缩起来,应该是这样;控制这个菜单(二级菜单a标签)下的子菜单隐藏起来,点击的菜单(二级菜单a标签)的兄弟元素ul(三级ul)向上隐藏起来;控制自身菜单(二级菜单a标签)变成加号,点击的菜单的兄弟元素ul标签(二级ul),的子标签li标签(三级li)下的子标签ul(三级ul)下的父标签li(三级li)下的子标签a标签添加类名inactives(展开的on图片,减号图片);控制自身菜单下的子菜单隐藏,点击的菜单的兄弟标签ul(二级ul)的子标签li(二级li)的子标签ul(三级ul),向上滑动隐藏起来;控制同级菜单只保持一个是展开的(减号显示),点击的标签(二级菜单a标签)的兄弟标签ul(三级ul)的子标签li(三级li)的子标签a标签移除inactives类名(展开on图片,减号),这个分号有点问题,需要重新分析
  • 一级菜单a标签同级的ul标签是二级ul,代表需要显示一级菜单下的二级菜单;二级菜单a标签同级的ul标签是三级ul,代表需要显示二级菜单下的三级菜单
  • 有下级菜单的默认有off收缩图片,加号类名样式。后面这个菜单展开,也只是添加了展开on图片,减号类名样式,实现展开的样式;然后展开的再收缩,是移除这个展开on图片,减号样式,回归它自身标签行设置的收缩off图片,加号类名样式。这里应该是添加覆盖,和移除类名覆盖的样式的方式实现切换的,好像是。

 事件函数如下逻辑

 下面分析应该才是正确的:

  • 一级菜单a标签和二级菜单如果有下级子菜单,a标签在标题行都默认配置了inactive类名,也就是收缩off图片,加号的类名。
  • 二级菜单和三级菜单标签行或者是css样式中都设置了display是none,是不显示的
  • 如果点击的是有子菜单的(有加号的)菜单。那么将这个菜单的a标签的兄弟元素ul样式display是none,是不显示的,就做下面的操作。否则就是block,是显示的,就做另一种操作。
  • 先说点击的菜单的子菜单不显示的情况做的操作,这里被点击的菜单包含一级菜单和二级菜单:点击的菜单a标签的父标签li的兄弟标签li,都移除掉inactives类名,也就是移除掉展开on的减号的样式;然后点击的这个菜单a标签添加类名inactives,也就是让点击的菜单a标签添加展开的on减号图片样式;然后让点击的这个菜单a标签的兄弟元素ul(这个点击的菜单的下级菜单)向下从隐藏状态显示出来,包括下面的子菜单li。如果点击的菜单a标签的父标签li的兄弟标签的子标签ul的样式的display是block,也就是展开了的,那么我将做如下操作:将这个菜单a标签的父标签的兄弟元素li标签的子标签ul的父标签li的子标签a标签移除类名inactives,即将点击的菜单的同级菜单下的子菜单移除展开on 减号的样式;然后将点击的菜单父标签li的兄弟标签的子标签ul从显示状态变为向上隐藏。
  • 再说点击的菜单的子菜单为display block,即已经展开时的情况做的操作,这里被点击的菜单包含一级菜单和二级菜单:1、控制自身变成加号,点击的这个菜单元素肯定是有inactives样式了,因为它已经展开了,所以有了展开on减号的图片,所以要移除这个减号样式;2、控制自身菜单下子菜单隐藏,我点击这个菜单,是想让它的子菜单隐藏起来,减号样式没了,接着需要将点击的菜单的兄弟元素ul向上收缩从显示变为隐藏,因为点击的这个菜单是a标签,和它后面的ul子菜单是同级的;3、控制自身子菜单变成加号,点击的菜单的兄弟元素ul的子标签li的子标签下的ul标签下li标签的子标签a添加类名inactives,即展开on减号图片;4、控制自身菜单下子菜单隐藏,点击的菜单的兄弟元素ul的子标签的li的子标签ul向上收缩从显示改为隐藏;5、控制同级菜单只保持一个是展开的(-号显示)点击的这个菜单的兄弟标签ul的子菜单li标签的子菜单a标签移除inactives样式,移除的是展开on减号样式
一级菜单a标签和二级菜单如果有下级子菜单,a标签在标题行都默认配置了inactive类名,也就是收缩off图片,加号的类名。
二级菜单和三级菜单标签行或者是css样式中都设置了display是none,是不显示的

$(document).ready(function() {
    $('.inactive').click(function(){
        if($(this).siblings('ul').css('display')=='none'){
        //如果点击的是有子菜单的(有加号的)菜单。那么将这个菜单的a标签的兄弟元素ul样式display是none,是不显示的,就做下面的操作。
        //这里被点击的菜单包含一级菜单和二级菜单
            $(this).parent('li').siblings('li').removeClass('inactives');
            //点击的菜单a标签的父标签li的兄弟标签li,都移除掉inactives类名,也就是移除掉展开on的减号的样式;
            $(this).addClass('inactives');
            //然后点击的这个菜单a标签添加类名inactives,也就是让点击的菜单a标签添加展开的on减号图片样式
            $(this).siblings('ul').slideDown(100).children('li');
            //然后让点击的这个菜单a标签的兄弟元素ul(这个点击的菜单的下级菜单)向下从隐藏状态显示出来,包括下面的子菜单li。
            if($(this).parents('li').siblings('li').children('ul').css('display')=='block'){
            //如果点击的菜单a标签的父标签li的兄弟标签的子标签ul的样式的display是block,也就是展开了的,那么我将做如下操作:
                $(this).parents('li').siblings('li').children('ul').parent('li').children('a').removeClass('inactives');
                //将这个菜单a标签的父标签的兄弟元素li标签的子标签ul的父标签li的子标签a标签移除类名inactives,即将点击的菜单的同级菜单下的子菜单移除展开on 减号的样式
                $(this).parents('li').siblings('li').children('ul').slideUp(100);
                //然后将点击的菜单父标签li的兄弟标签的子标签ul从显示状态变为向上隐藏

            }
        }else{
        //否则就是block,是显示的,就做另一种操作。已经展开时的情况做的操作,这里被点击的菜单包含一级菜单和二级菜单
            $(this).removeClass('inactives');
            //控制自身变成+号:点击的这个菜单元素肯定是有inactives样式了,因为它已经展开了,所以有了展开on减号的图片,所以要移除这个减号样式;
            $(this).siblings('ul').slideUp(100);
            //控制自身菜单下子菜单隐藏:控制自身菜单下子菜单隐藏,我点击这个菜单,不只是自身变加号为收缩未展开off状态图片,也是想让它的子菜单隐藏起来,
            //接着需要将点击的菜单的兄弟元素ul向上收缩从显示变为隐藏,因为点击的这个菜单是a标签,和它后面的ul子菜单是同级的;
            
            $(this).siblings('ul').children('li').children('ul').parent('li').children('a').addClass('inactives');
            //控制自身子菜单变成+号:我不只是将自己变成加号收缩off状态图片,也要让子下面子菜单也收缩变成加号off状态图片。
            //点击的这个菜单的兄弟标签ul下的子菜单li下的子标签下的ul下的父标签下的li下的子标签下的a标签,添加类名inactives样式,展开on减号图片
            
            $(this).siblings('ul').children('li').children('ul').slideUp(100);
            //控制自身菜单下子菜单隐藏:我不仅将自身菜单操作吗,还将自身菜单下展开的子菜单(二级菜单下展开的三级菜单)隐藏起来。这个点击的菜单的兄弟元素ul下的子标签li下的子标签ul向上隐藏起来
            $(this).siblings('ul').children('li').children('a').removeClass('inactives');
            //控制同级菜单只保持一个是展开的(-号显示):这个点击的菜单的兄弟元素ul的子菜单li的子菜单a标签移除inactives展开on减号图片样式
        }
    })
});

 再看看css样式:

a标签link和被访问的默认样式去掉

 

<style>
*{margin: 0;padding: 0}
body{font-size: 12px;font-family: "宋体","微软雅黑";}
ul,li{list-style: none;}    //设置列表项目样式为不使用项目符号
a:link,a:visited{text-decoration: none;}  //a标签link和被访问的默认样式去掉
.list{width: 210px;border-bottom:solid 1px #316a91;margin:40px auto 0 auto;}  //整个菜单所在的div设置
.list ul li{background-color:#467ca2; border:solid 1px #316a91; border-bottom:0;}  //一级li标签设置
.list ul li a{padding-left: 10px;color: #fff; font-size:12px; display: block; font-weight:bold; height:36px;line-height: 36px;position: relative;
}   //一级li标签下的菜单a标签设置为显示,字体加粗,相对定位
.list ul li .inactive{ background:url(off.png) no-repeat 184px center;} //收缩off子菜单的图片样式
.list ul li .inactives{background:url(on.png) no-repeat 184px center;}   //展开on子菜单的图片样式
.list ul li ul{display: none;}  //二级ul标签默认display none ,不显示
.list ul li ul li { border-left:0; border-right:0; background-color:#6196bb; border-color:#467ca2;} //二级li白起背景色和边框色修改一下
.list ul li ul li ul{display: none;}  //三级ul标签默认display none,不显示
.list ul li ul li a{ padding-left:20px;}  //
.list ul li ul li ul li { background-color:#d6e6f1; border-color:#6196bb; } //三级li标签背景色修改
.last{ background-color:#d6e6f1; border-color:#6196bb; }  //最后一个背景色和边框色变化
.list ul li ul li ul li a{ color:#316a91; padding-left:30px;}  
</style>

jq实现拖动改变表格宽度的插件使用

插件下载地址  colResizable-1.6.js

 程序使用案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script>
<script  src="colResizable-1.6.js"></script>
</head>
<body>
<table id="myTable" border="1" cellspacing="0" width="100%" >
    <thead>
      <tr>
        <th data-resizable-column-id="a"><input type="checkbox" /></th>
        <th data-resizable-column-id="b">栏目类型 </th>
        <th data-resizable-column-id="c">活动名称 </th>
        <th data-resizable-column-id="d">状态 </th>
        <th data-resizable-column-id="e">操作选项</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><input type="checkbox" /></td>
        <td>青春日记</td>
        <td>2014年度青春日记征文 </td>
        <td>提交 </td>
        <td>审核</td>
      </tr>
      <tr>
        <td><input type="checkbox" /></td>
        <td>我和孩子的成长故事</td>
        <td>成长故事 </td>
        <td>通过 </td>
        <td>审核</td>
      </tr>
    </tbody>
  </table>
</div>
</body>
<script>
    $(function() {
    $("table").colResizable({
        liveDrag: true, //实时显示滑动位置
        gripInnerHtml: "<div class='grip'></div>",
        postbackSafe: true, //刷新后保留之前的拖拽宽度
    });
})
</script>
</html>

colResizable.js

  • 与鼠标和触摸设备 (PC、平板电脑和手机) 兼容

  • 与百分比和基于像素的表布局的兼容性

  • 调整列大小不改变总表宽度 (可选)

  • 无需外部资源 (如图像或样式表)

  • 页面刷新或回发后的可选布局持久性

  • 列锚点的自定义

  • 占用体积小(colResizable 1.0只有2kb)

  • 事件

使用用法

要使用此插件,一旦jQuery被加载,脚本引用必须被添加到文档的头部分中的colResizable.min.js文件中。为了增强一个表(或表的集合),用jQuery包装器指向它并应用colResizable()方法。

1
2
<script  src="colResizable-1.6.js"></script>

 

js。导入jq,导入这个插件,然后引用下面的js。这个table是table标签。所以是表格就能使用。在母板页引用下面js,继承母版页的里面有表格就都实现了

1
2
3
4
5
6
7
$(function() {
    $("table").colResizable({
        liveDrag: true//实时显示滑动位置
        gripInnerHtml: "<div class='grip'></div>",
        postbackSafe: true//刷新后保留之前的拖拽宽度
    });
})

访问页面:

 

 当鼠标经过列边框时,就会成为横躺着的双向箭头,然后可以按住鼠标拖动调整宽度。这个的宽度可以调整到很小。调整之后,后面继续请求,宽度还是你调整的大小。想让它自动恢复原来的宽度,需要重启浏览器访问或者开启无痕模式进行访问

 实现表格滚动条和固定行列

效果查看

我首先写了个布局,这里分顶部导航栏,左部导航栏和内容部分。而表格是放在内容部分黄颜色中。表格右边滚动条可以往下拖动查看下面没有显示的记录,向下拖动时,第一行标题保持不动,我们依然可以知道是那列数据。表格下面有滚动条,向右滚动时,左侧第一列固定不变,知道是看的那条数据。也就是标题和序号我们都固定住了,即使我们拖动滚动条查看数据,也能知道是那条数据哪个字段了。而且不会出现列数太多导致整个表格不太规则的展示,不方便查看信息。

 

 

 

 程序

<script src="jquery-1.7.1.js"></script>
<script type="text/javascript" src="jquery-migrate-1.2.1.js"></script>
<script type='text/javascript'>
$(document).ready(function(){
    $(".mcwtb").FrozenTable(1,0,1);
});
</script>

<style type='text/css'> 
table{empty-cells:show;border-collapse:collapse;border-spacing:0}
table{font-family:宋体; font-size:10pt;border:1px green solid;background-color:white;}
table td{height:20px;text-align:center;border:1px green solid;}
table .tabTh{color:green;font-weight:bold;background-color:#f1faee;}
</style>
表格上面得加个div,给个这个样式才有效果的,貌似得用jq1.7
                <div id="div_Test3" style="OVERFLOW: auto;width:718px;height:229px;padding:0px;">  #这里宽度设置100%,占满内容页。高度百分比看着调整。有没有thead tbody标签好像影响不大
                    <table id="tab_Test3" class="mcwtb" border="1" width='900'>  #id 类名只是提供选中表格用,也可以用标签选择器的。
                        <tr class='tabTh'>  #标题行加个类名,提供背景色样式用的;标题行列不用th,会得不到想要的效果。其他行的价格center应该只是样式,加没加影响不太大
                            <td width="100px">序号</td>
                            <td width="100px">用户名</td>
                 .......
                            <td width="100px">备注</td>
                        </tr>
                        <tr align='center'>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JQeury实现表格行列冻结3</title>
 
<style type='text/css'> 
table{empty-cells:show;border-collapse:collapse;border-spacing:0}
table{font-family:宋体; font-size:10pt;border:1px green solid;background-color:white;}
table td{height:20px;text-align:center;border:1px green solid;}
table .tabTh{color:green;font-weight:bold;background-color:#f1faee;}
</style>
 
<script src="jquery-1.7.1.js"></script>
<script type="text/javascript" src="jquery-migrate-1.2.1.js"></script>
<script type='text/javascript'>
$(document).ready(function(){
    $(".mcwtb").FrozenTable(1,0,1);
});
</script>
</head>
<body>
    <div id="dingbu" style="width: 100%;height: 100px;background-color: black;"></div>
    <div id="xiamian" style="background-color: red;width: 100%;height: 500px">
        <div id="zuoce" style="background-color: blue;height: 400px;width: 10%;float: left"></div>
        <div id="neirong" style="background-color: yellow;height: 450px;width: auto;float: right;padding-right: 100px">

                <h3>例三:1行1列固定 $("#tab_Test3").FrozenTable(1,0,1);</h3>
                <div id="div_Test3" style="OVERFLOW: auto;width:718px;height:229px;padding:0px;">
                    <table id="tab_Test3" class="mcwtb" border="1" width='900'>
                        <tr class='tabTh'>
                            <td width="100px">序号</td>
                            <td width="100px">用户名</td>
                            <td width="100px">姓名</td>
                            <td width="100px">归属机构</td>
                            <td width="100px">密码</td>
                            <td width="100px">用户类型</td>
                            <td width="200px">状 态(0无效/1有效)</td>
                            <td width="100px">备注</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>1</td>
                            <td>admin</td>
                            <td>admin</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员</td>
                            <td>1</td>
                            <td>it管理员</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>2</td>
                            <td>admin2</td>
                            <td>admin2</td>
                            <td>92</td>
                            <td>******</td>
                            <td>系统管理员2</td>
                            <td>1</td>
                            <td>it管理员2</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>3</td>
                            <td>admin3</td>
                            <td>admin3</td>
                            <td>93</td>
                            <td>******</td>
                            <td>系统管理员3</td>
                            <td>1</td>
                            <td>it管理员3</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>4</td>
                            <td>admin4</td>
                            <td>admin4</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员4</td>
                            <td>14</td>
                            <td>it管理员4</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>5</td>
                            <td>admin5</td>
                            <td>admin5</td>
                            <td>95</td>
                            <td>******</td>
                            <td>系统管理员</td>
                            <td>1</td>
                            <td>it管理员</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>6</td>
                            <td>admin6</td>
                            <td>admin6</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员6</td>
                            <td>1</td>
                            <td>it管理员6</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>7</td>
                            <td>admin7</td>
                            <td>admin7</td>
                            <td>7</td>
                            <td>******</td>
                            <td>系统管理员7</td>
                            <td>1</td>
                            <td>it管理员7</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>8</td>
                            <td>admin8</td>
                            <td>admin8</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员8</td>
                            <td>1</td>
                            <td>it管理员8</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>9</td>
                            <td>admin9</td>
                            <td>admin9</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员</td>
                            <td>1</td>
                            <td>it管理员</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>10</td>
                            <td>admin10</td>
                            <td>admin</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员10</td>
                            <td>1</td>
                            <td>it管理员</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>11</td>
                            <td>admin11</td>
                            <td>admin11</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员11</td>
                            <td>1</td>
                            <td>it管理员11</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>12</td>
                            <td>admin12</td>
                            <td>admin12</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员12</td>
                            <td>1</td>
                            <td>it管理员</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>13</td>
                            <td>admin</td>
                            <td>admin</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员</td>
                            <td>1</td>
                            <td>it管理员</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>14</td>
                            <td>admin4</td>
                            <td>admin4</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员4</td>
                            <td>1</td>
                            <td>it管理员</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>15</td>
                            <td>admin</td>
                            <td>admin</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员5</td>
                            <td>1</td>
                            <td>it管理员5</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>16</td>
                            <td>admin</td>
                            <td>admin6</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理6</td>
                            <td>1</td>
                            <td>it管理员6</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>17</td>
                            <td>admin</td>
                            <td>admin</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员</td>
                            <td>1</td>
                            <td>it管理员</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>18</td>
                            <td>admin</td>
                            <td>admin</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员</td>
                            <td>1</td>
                            <td>it管理员</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>19</td>
                            <td>admin19</td>
                            <td>admin19</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员</td>
                            <td>1</td>
                            <td>it管理员</td>
                        </tr>
                        <tr align='center'>
                            <td><input type=checkbox>20</td>
                            <td>admin20</td>
                            <td>admin20</td>
                            <td>9</td>
                            <td>******</td>
                            <td>系统管理员</td>
                            <td>1</td>
                            <td>it管理员</td>
                        </tr>
                    </table>
                </div>


        </div>
    </div>
</body>
</html>
View Code

程序使用分析

  • js部分:只需要导入这个版本的jq和jq migrate插件,然后下面写一行js就可以使用了。导入的juery目前知道的只是支持下面这个版本的,好像是3点几的试过了不支持
  • 需要通过选择器选中表格,可以通过id,类名等选中表格。然后给表格使用冻结表格的函数,函数三个传参。
  • 函数第一个传参是冻结前面几行,第二个是冻结最下面几行,第三个是冻结左边几列
  • 我们再看看,我们先设置了顶部导航和下面的div部分。下面的部分分左侧导航栏和内容部分。左侧导航栏让它左浮,指定宽度;内容部分让它右浮,给个右部padding。
  • 然后在看表格的外部div,设置了overflow了,设置了宽度,这里的宽度要比下面table的表格宽度小,这样才能在数据少时,看到滚动条效果。这里的padding设置为0,如果设置了数值,可能会导致表格内部数据混乱

 

再看下表格部分,标题thead  th tbody都不需要。都是tr和td。标题行加了个类名,只是单纯的加了个样式,每行表数据加了个align不知道是干啥用的,有时间研究下

 

 再看看样式,没啥特别地方,这样修改之后就能正常使用上功能了

 jq间接调用方法

当我们引入地址栏的jq时,会执行下面的写方法,然后加载下面的jq源地址,地址栏的那个相当于一个跳转用的,实际访问的还是下面标蓝的那个

 

 下面是标蓝的那个

 

posted @ 2022-10-13 11:34  马昌伟  阅读(327)  评论(0编辑  收藏  举报
博主链接地址:https://www.cnblogs.com/machangwei-8/