zoukankan      html  css  js  c++  java
  • [Python自学] day-18 (1) (JS正则、第三方组件)

    一、JS的正则表达式

    JS正则提供了两个方法:

      test():用于判断字符串是否符合规定;

      exec():获取匹配的数据;

    1.test()

    定义一个正则表达式:

    reg = /d+/;   // 用于判断多个数字
    reg.test("akshdjkf78snjdkf");  // 返回true,因为中间含有数字

    上述的字符串能够满足正则表达式,所以返回true,但这种匹配无法用于验证手机号。

    reg = /^d+$/;   // 匹配从开头到结尾都是数字
    reg.test("13928787837");  // 返回true
    reg.test("1237h39284");  //返回false

    这样就可以检验是否全是数字。

    2.exec()

    同样定义一个正则表达式:

    reg = /d+/;
    reg.exec("sdufh_67_nsjkd_89_djkjs");  // 返回["67"]

    我们得到的结果是["67"],也就是说只匹配到第一个数字。

    全局匹配:

    如果我们要想拿到所有符合规则的内容,则需要使用全局匹配:

    reg = /d+/g;
    reg.exec("sdufh_67_nsjkd_89_djkjs");  // 返回["67"]
    reg.exec("sdufh_67_nsjkd_89_djkjs");  // 返回["89"]
    reg.exec("sdufh_67_nsjkd_89_djkjs");  // 返回null
    
    reg.exec("sdufh_67_nsjkd_89_djkjs");  // 再次执行返回["67"]

    当匹配到最后一个符合规则的内容后,下一次再次执行会返回null,我们可以用此来判断是否查找完毕。如果在返回null后再次执行,又会从头开始。

    分组:

    text = "JavaScript is more fun than Java or JavaBeans!";
    reg = /Java(w*)/g;
    reg.exec(text);  //返回["JavaScript","Script"]
    reg.exec(text);  //返回["Java",""]
    reg.exec(text);  //返回["JavaBeans","Beans"]
    reg.exec(text);  //返回null
    
    reg.exec(text);  //返回["JavaScript","Script"]

    使用"()"将需要提取的部分括起来就可以获取内容。

    匹配模式:

    前面我们使用了全局匹配"g",其他还有"i"和"m"模式。

    "i"模式:不区分大小写。这个很好理解。

    "m"模式:多行模式。这里的多行,不是指可以匹配多行文本("g"默认就可以匹配带换行的文本)。这里的多行是说当在正则表达式中要匹配开头和结尾("^"和"$")的时候,对每一行都生效。例如:

    text = "JavaScript is more fun than 
    Java or JavaBeans!"
    reg = /^Java(w*)/g;  //匹配以Java开头的单词
    reg.exec(text);  //返回["JavaScript","Script"]
    reg.exec(text);  //返回null

    我们可以看到,如果只是全局模式,只能匹配到JavaScript,因为只有这个单词是位于开头。

    我们加上"m"模式:

    text = "JavaScript is more fun than 
    Java or JavaBeans!"
    reg = /^Java(w*)/gm;  //匹配以Java开头的单词
    reg.exec(text);  //返回["JavaScript","Script"]
    reg.exec(text);  //返回["Java",""]
    reg.exec(text);  //返回null

    加上"m"后,位于换行符后面的Java也被当做位于开头的单词。

    二、回顾默认事件和绑定事件

    回顾:https://www.cnblogs.com/leokale-zz/p/12001523.html#maodian_12

    在<a>标签和<form>中的<input type="submit"/>中,我们自定义绑定的事件是优先于默认事件执行的。所以我们可以在自定义绑定事件中实现对内容的验证。

    这里还有一个标签是例外,例如<input type="checkbox"/>标签。点击打钩是他的默认事件。如果我们绑定一个自定义事件,这个事件是在默认事件之后才执行的。例如:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>test1</title>
    </head>
    <body>
        <input type = "checkbox"/>
    
        <script src="jquery-1.12.4.js"></script>
        <script>
            // 绑定自定义事件,检查checkbox是否被选中,如果选中则打印true,未选中打印false
            $(":checkbox").click(function(){
                var v = $(this).prop("checked");
                console.log(v);
            });
        </script>
    </body>
    </html>

    checkbox默认是未选中的,当我们勾选checkbox时,如果打印的是true,那说明是默认事件(勾选)先于打印事件执行的。如果打印false,表示打印事件先执行,然后checkbox才被勾选上。

    结果:

    结果是打印的true,说明默认事件(勾选)是先于打印事件执行的。

    三、几种常用组件

    所谓前端组件,就是别人给你实现好的UI效果,包含CSS样式和JS代码。

    EasyUI:提供了比较全的UI效果,但是要对其进行修改时,要求相对较高一些。

    jQueryUI:较EasyUI功能相对不那么齐全,但使用比较简单。

    以上两个UI组件,比较适合用于后台管理

    BootStrap:效果最好看,目前使用广泛。适合实现网站首页等效果比较绚的地方。可以找许多模板直接使用。

    以上三个UI组件,官方网站都有大量的Demo,下载的源码中也有demo效果可以参考。

    对于bootstrap组件,我们了解三点:

    1.响应式

      对于CSS来说,我们可以根据某个条件是否成立,来决定哪个CSS效果生效。

    例如:当页面宽度缩小到一定的像素,页面顶部的菜单就会全部归入一个纵向列表中。如下所示:

    缩小前:

     缩小后:

    这是通过在CSS中使用一个叫@media的关键字来实现的:

    <head>
        <meta charset="UTF-8">
        <title>test1</title>
        <style>
            .c1{
                background-color: green;
                height: 50px;
            }
            @media (min- 700px){
                .c2{
                    background-color: red;
                }
            }
        </style>
    </head>
    <body>
        <div class="c1 c2"></div>
    </body>

    当页面宽度大于等于700时,显示红色,当小于700时,显示绿色:

    大于700px:

    小于700px:

    除了以上这个简单的颜色变化,@media还可以用于form表单中<input>标签横向排列和纵向排列的切换等场景。

    2.图标

    我们以前在页面中添加图标都是用图片的形式来做的,如果使用bootstrap等组件,则使用@font-face来实现。

    @font-face的图标是使用字体文件来实现的,我们只需要引用他规定好的标签即可,例如:

    <span class="glyphicon glyphicon-camera" aria-hidden="true"></span>

    这个标签代表的就是:

    我们可以在 https://v3.bootcss.com/components/ 中找到这个图标,使用右键->检查来查看他的标签。

    该图标是通过这个<span>标签中的class样式来实现的,bootstrap帮我们通过样式找到位于字体文件中的相应图标,并显示在标签所在位置。

    这些图标存在于以下文件中:

     在css文件中,我们可以找到:

    .glyphicon-camera:before {
      content: "e046";
    }

    这里面的content: "e046"代表的就是这个相机图标。。

    3.基本使用

    首先将bootstrap包拷贝到项目中:

    导入bootstrap.css和bootstrap.js:

    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.css"/>
        <link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap-theme.css"/>
    </head>
    <body>
        <script src="jquery-1.12.4.js"></script>
        <script src="../test1210/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
    </body>

    在bootstrap的demo中找到需要的组件,将代码复制在需要的位置:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.css"/>
        <link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap-theme.css"/>
    </head>
    <body>
        <!-- 导航 -->
        <nav class="navbar navbar-default">
          <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              <a class="navbar-brand" href="#">Brand</a>
            </div>
    
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
              <ul class="nav navbar-nav">
                <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
                <li><a href="#">Link</a></li>
                <li class="dropdown">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                  <ul class="dropdown-menu">
                    <li><a href="#">Action</a></li>
                    <li><a href="#">Another action</a></li>
                    <li><a href="#">Something else here</a></li>
                    <li role="separator" class="divider"></li>
                    <li><a href="#">Separated link</a></li>
                    <li role="separator" class="divider"></li>
                    <li><a href="#">One more separated link</a></li>
                  </ul>
                </li>
              </ul>
              <form class="navbar-form navbar-left">
                <div class="form-group">
                  <input type="text" class="form-control" placeholder="Search">
                </div>
                <button type="submit" class="btn btn-default">Submit</button>
              </form>
              <ul class="nav navbar-nav navbar-right">
                <li><a href="#">Link</a></li>
                <li class="dropdown">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                  <ul class="dropdown-menu">
                    <li><a href="#">Action</a></li>
                    <li><a href="#">Another action</a></li>
                    <li><a href="#">Something else here</a></li>
                    <li role="separator" class="divider"></li>
                    <li><a href="#">Separated link</a></li>
                  </ul>
                </li>
              </ul>
            </div><!-- /.navbar-collapse -->
          </div><!-- /.container-fluid -->
        </nav>
        <!-- 图标 -->
        <div>
            <span class="glyphicon glyphicon-heart" aria-hidden="true"></span>
            <span class="glyphicon glyphicon-flash" aria-hidden="true"></span>
            <span class="glyphicon glyphicon-console" aria-hidden="true"></span>
        </div>
        <!-- button -->
        <div class="btn-group">
            <button type="button" class="btn btn-danger">Action</button>
            <button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true"
                    aria-expanded="false">
                <span class="caret"></span>
                <span class="sr-only">Toggle Dropdown</span>
            </button>
            <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li role="separator" class="divider"></li>
                <li><a href="#">Separated link</a></li>
            </ul>
        </div>
        <script src="jquery-1.12.4.js"></script>
        <script src="../test1210/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
    </body>
    </html>

    效果:

    在上面的效果中,我们发现导航条是带圆角的:

    所以,我们经常要修改第三方组件的一些css效果,为了避免CSS覆盖不成功,我们可以使用"! important"关键字,如下:

    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .no-radius{
                border-radius: 0 !important;
            }
        </style>
        <link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.css"/>
        <link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap-theme.css"/>
    </head>

    然后在相应的<nav>标签中使用这个".no-radius"样式:

    <body style="background-color: red;">
        <!-- 导航 -->
        <nav class="navbar navbar-default no-radius">
        ......
        </nav>
    </body>

    四、利用插件做一个轮播图

    利用一个叫bxSlider的插件,做一个主站轮播图效果:

    下载bxSlider插件:

    下载地址:https://bxslider.com/install/

    复制进项目:

    导入并使用:

    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="bxslider-4-4.2.12/src/css/jquery.bxslider.css"/>
    </head>
    <body>
        <div class="bxslider">
          <div><img src="images/car1.png" title="Car 1"></div>
          <div><img src="images/car2.png" title="Car 2"></div>
          <div><img src="images/car3.png" title="Car 3"></div>
          <div><img src="images/car4.png" title="Car 4"></div>
          <div><img src="images/car5.png" title="Car 5"></div>
        </div>
        <script src="jquery-1.12.4.js"></script>
        <script src="../test1210/bxslider-4-4.2.12/src/js/jquery.bxslider.js"></script>
        <script>
          $(function(){
            $('.bxslider').bxSlider({
              mode: 'fade',   // 图片轮播的方向,'horizontal'横向,'vertical'纵向,'fade'消失
              captions: true,   // 是否显示每张图下面的信息
              slideWidth: 1200   // 图的宽度,一般和图片一样
            });
          });
        </script>
    </body>

    由于bxSlider是jQuery的扩展插件,所以必须导入jQuery。然后使用扩展方法bxSlider来实现轮播效果;

  • 相关阅读:
    降龙十八掌之三:(见龙在田)优化查询性能
    完整的项目工程目录结构
    降龙十八掌之一:(亢龙有悔)SQL Server Profiler和数据库引擎优化顾问
    ASP.NET状态管理的总结
    LINQ 图解
    获取IP城市
    Eclipse 编译StanfordNLP
    Centos JAVA Eclipse
    关掉PUTTY后,进程仍可以运行。
    centos lnmp 安装笔记
  • 原文地址:https://www.cnblogs.com/leokale-zz/p/12018327.html
Copyright © 2011-2022 走看看