• Bootstrap学习笔记(二)---常见工具和流程导航范例


        使用bootstrap框架避免不了写CSS,当CSS文件较大时,会发现维护起来很麻烦,一些默认值,如行高、背景色、标注颜色、字号等信息往往反复出现,还有一些大体上一致,只有小部分不同的样式定义,这就需要css预处理器的帮助,常见的有两种Sass和Less,前者使用ruby写的,需要安装ruby,后者似乎是用js开发,用npm直接安装就可以了。考虑到安装过程,我比较喜欢less。

        less最好先安装nodejs,使用其带的npm来安装,nodejs从nodejs.org下载,这是一个服务器端的JS框架,可以用来提供Web服务和做后端开发。less入门可以参考http://less.bootcss.com/,这里有较为详细的描述。这里就不描述了。

        安装之后,我在netbeans里使用less,它会调用系统的lessc来生成的css程序,当保存less文件时,会自动生成css文件。这需要配置一下,在项目上右键-》属性-》css预处理程序,将保存时编译LESS文件打勾,就可以了。

    yaobl@jz)br

        在开发过程中,发现一个较长的流程操作,需要分步来执行,我感觉微信公众平台的处理方式比较好,其界面如下:

    %u)yd3}y)nj

        要实现这个效果,本来打算用图片来实现的,后来发现用CSS+JS也可以实现,我实现的效果如下

    dv0ejx$j551

        这里实现的也非常简单,用了框架的属性来生成了箭头,实际上是两个div,生成了两个类似箭头的东西,下面可以看到效果

    y{u4(0}4a12

    其css样式如下

     1           .arrow-next {
     2                 height: 0px;
     3                 width: 0px;
     4                 border: solid 1.5em;
     5                 border-color: #fff;
     6                 border-left-color: #54b003;
     7             }
     8             .arrow-current {
     9                 height: 0px;
    10                 width: 0px;
    11                 border: 1.5em solid;
    12                 border-color: #54b003;
    13                 border-left-color: #fff;
    14             }

        arrow-next产生一个箭头,arrow-current产生一个凹陷,原理也很简单,一个长宽为0的div,border很宽,通过其颜色配置,产生这种效果,剩下的就是通过js将这两个div的位置移动到相应的步骤前后,注意处理一下第一步,就可以了,所有代码如下

      1 <html>
      2     <head>
      3         <meta charset="utf-8">
      4         <meta http-equiv="X-UA-Compatible" content="IE=edge">
      5         <meta name="viewport" content="width=device-width, initial-scale=1">
      6         <title>流程导航范例</title>
      7         <!-- Bootstrap -->
      8         <link href="css/bootstrap.css" rel="stylesheet"> 
      9         <style type="text/css">
     10             .row.row-nav {
     11                 border: solid 1px #54b003;
     12             }
     13             .col-nav {
     14                 height: 3em;
     15                 padding: 0px;
     16                 border: 0px;
     17                 text-align: center;
     18                 font-size: 14px;
     19                 line-height: 3em;
     20             }
     21             .col-nav.current {
     22                 background-color: #54b003;
     23             }
     24             .arrow-next {
     25                 height: 0px;
     26                 width: 0px;
     27                 border: solid 1.5em;
     28                 border-color: #fff;
     29                 border-left-color: #54b003;
     30             }
     31             .arrow-current {
     32                 height: 0px;
     33                 width: 0px;
     34                 border: 1.5em solid;
     35                 border-color: #54b003;
     36                 border-left-color: #fff;
     37             }
     38         </style>
     39     </head>
     40     <body>
     41         <br>
     42         <br>
     43         <br>
     44         <br>
     45         <div class="container">
     46             <div class="row row-nav">
     47                 <div class="col-md-3 col-nav current" id="nav-1">
     48                     第一步
     49                 </div>
     50                 <div class="col-md-3 col-nav" id="nav-2">
     51                     第二步
     52                 </div>
     53                 <div class="col-md-3 col-nav" id="nav-3">
     54                     第三步
     55                 </div>
     56                 <div class="col-md-3 col-nav" id="nav-4">
     57                     第四步
     58                 </div>
     59             </div>
     60 
     61             <div class='row'>
     62                 <div class="arrow-next" id='arrow-next'></div>
     63                 <div class='arrow-current' id='arrow-current'></div>
     64             </div>
     65             <br>
     66             <br>
     67             <div class='row'>
     68                 <div class="col-xs-6 col-sm-4 col-md-3">
     69                     <button id='b1' class='btn btn-success'>第一步</button>
     70                 </div>
     71                 <div class="col-xs-6 col-sm-4 col-md-3">
     72                     <button id='b2' class='btn btn-success'>第二步</button>
     73                 </div>
     74                 <div class="col-xs-6 col-sm-4 col-md-3">
     75                     <button id='b3' class='btn btn-success'>第三步</button>
     76                 </div>
     77                 <div class="col-xs-6 col-sm-4 col-md-3">
     78                     <button id='b4' class='btn btn-success'>第四步</button>
     79                 </div>
     80             </div>
     81             <br>
     82             <br>
     83             <div class='row'>
     84                 <div class='col-md-4 col-md-offset-4'>
     85                     <button id='clear_all' class='btn btn-success form-control'>清除样式</button>
     86                 </div>
     87             </div>
     88         </div>
     89 
     90         <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 
     91         <script src="js/jquery-1.11.1.min.js"></script> 
     92 
     93         <script>
     94             $(function () {
     95                 
     96                 $('[id^=nav-]').click(function () {
     97                     var position = $(this).position();
     98                     var str = 'left:' + position.left + ",top" + position.top;
     99                     str = str + ',heigth:' + $(this).height() + ',' + $(this).width();
    100                     alert(str);
    101                 });
    102 
    103                 $('button[id^=b]').click(function () {
    104                     clearClass();
    105                     var b = $(this).attr('id');
    106                     var index = b.substr(-1, 1);
    107                     var current_div = 'nav-' + index;
    108                     var next_div = 'nav-' + (parseInt(index) + 1);
    109                     $('#' + current_div).addClass('current');
    110                     cposition = $('#' + current_div).position();
    111                     nposition = $('#' + next_div).position();
    112 
    113                     cwidth = $('#' + current_div).width();
    114                     left = parseInt(cposition.left) + parseInt(cwidth);
    115 
    116                     if (parseInt(index) === 1)
    117                     {
    118                         $('#arrow-next').css({'position': 'absolute', 'left': left, 'top': nposition.top, 'zindex': 10}).show();
    119                         $('#arrow-current').hide();
    120                     }
    121                     else if (parseInt(index) === 4)
    122                     {
    123                         $('#arrow-next').css({'position': 'absolute', 'left': (left + 1) + 'px', 'top': cposition.top}).show();
    124                         $('#arrow-current').css({'position': 'absolute', 'left': cposition.left, 'top': cposition.top}).show();
    125                     } else
    126                     {
    127                         $('#arrow-next').css({'position': 'absolute', 'left': left, 'top': nposition.top, 'zindex': 10}).show();
    128                         $('#arrow-current').css({'position': 'absolute', 'left': cposition.left, 'top': cposition.top}).show();
    129                     }
    130 
    131                     if ($(window).width() < 992)
    132                     {
    133                         $('#arrow-next').hide();
    134                         $('#arrow-current').hide();
    135                     }
    136                 });
    137 
    138                 $('#clear_all').click(function () {
    139                     clearClass();
    140                 });
    141             });
    142 
    143             function clearClass()
    144             {
    145                 $('[id^=nav-]').each(function () {
    146                     $(this).removeClass('current').removeClass('arrow-current').removeClass('arrow-next');
    147                 });
    148             }
    149         </script>
    150     </body>  
    151 </html>

    这段代码也挺简单了,虽然花了我一下午的时间,水平有限,努力学习吧。

  • 相关阅读:
    C#获取Excel Sheet名称,对特殊字符、重名进行了处理
    10个你必须知道的jQueryMobile代码片段
    HTML 5 学习之应用程序缓存
    JS取地址栏参数的两种方法
    关于AJAX+HTML5+ASHX进行全静态页面的数据交互
    重病后的重生
    非常值得学习的java 绘图板源代码
    C#开发者通用性代码审查清单
    【week3】四人小组项目—东师论坛
    【week2】结对编程-四则运算 及感想
  • 原文地址:https://www.cnblogs.com/stone-fly/p/4107845.html
Copyright © 2020-2023  润新知