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文件打勾,就可以了。
在开发过程中,发现一个较长的流程操作,需要分步来执行,我感觉微信公众平台的处理方式比较好,其界面如下:
要实现这个效果,本来打算用图片来实现的,后来发现用CSS+JS也可以实现,我实现的效果如下
这里实现的也非常简单,用了框架的属性来生成了箭头,实际上是两个div,生成了两个类似箭头的东西,下面可以看到效果
其css样式如下
.arrow-next {
height: 0px;
width: 0px;
border: solid 1.5em;
border-color: #fff;
border-left-color: #54b003;
}
.arrow-current {
height: 0px;
width: 0px;
border: 1.5em solid;
border-color: #54b003;
border-left-color: #fff;
}
arrow-next产生一个箭头,arrow-current产生一个凹陷,原理也很简单,一个长宽为0的div,border很宽,通过其颜色配置,产生这种效果,剩下的就是通过js将这两个div的位置移动到相应的步骤前后,注意处理一下第一步,就可以了,所有代码如下
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>流程导航范例</title>
<!-- Bootstrap -->
<link href="css/bootstrap.css" rel="stylesheet">
<style type="text/css">
.row.row-nav {
border: solid 1px #54b003;
}
.col-nav {
height: 3em;
padding: 0px;
border: 0px;
text-align: center;
font-size: 14px;
line-height: 3em;
}
.col-nav.current {
background-color: #54b003;
}
.arrow-next {
height: 0px;
width: 0px;
border: solid 1.5em;
border-color: #fff;
border-left-color: #54b003;
}
.arrow-current {
height: 0px;
width: 0px;
border: 1.5em solid;
border-color: #54b003;
border-left-color: #fff;
}
</style>
</head>
<body>
<br>
<br>
<br>
<br>
<div class="container">
<div class="row row-nav">
<div class="col-md-3 col-nav current" id="nav-1">
第一步
</div>
<div class="col-md-3 col-nav" id="nav-2">
第二步
</div>
<div class="col-md-3 col-nav" id="nav-3">
第三步
</div>
<div class="col-md-3 col-nav" id="nav-4">
第四步
</div>
</div> <div class='row'>
<div class="arrow-next" id='arrow-next'></div>
<div class='arrow-current' id='arrow-current'></div>
</div>
<br>
<br>
<div class='row'>
<div class="col-xs-6 col-sm-4 col-md-3">
<button id='b1' class='btn btn-success'>第一步</button>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<button id='b2' class='btn btn-success'>第二步</button>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<button id='b3' class='btn btn-success'>第三步</button>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<button id='b4' class='btn btn-success'>第四步</button>
</div>
</div>
<br>
<br>
<div class='row'>
<div class='col-md-4 col-md-offset-4'>
<button id='clear_all' class='btn btn-success form-control'>清除样式</button>
</div>
</div>
</div> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="js/jquery-1.11.1.min.js"></script> <script>
$(function () { $('[id^=nav-]').click(function () {
var position = $(this).position();
var str = 'left:' + position.left + ",top" + position.top;
str = str + ',heigth:' + $(this).height() + ',width:' + $(this).width();
alert(str);
}); $('button[id^=b]').click(function () {
clearClass();
var b = $(this).attr('id');
var index = b.substr(-1, 1);
var current_div = 'nav-' + index;
var next_div = 'nav-' + (parseInt(index) + 1);
$('#' + current_div).addClass('current');
cposition = $('#' + current_div).position();
nposition = $('#' + next_div).position(); cwidth = $('#' + current_div).width();
left = parseInt(cposition.left) + parseInt(cwidth); if (parseInt(index) === 1)
{
$('#arrow-next').css({'position': 'absolute', 'left': left, 'top': nposition.top, 'zindex': 10}).show();
$('#arrow-current').hide();
}
else if (parseInt(index) === 4)
{
$('#arrow-next').css({'position': 'absolute', 'left': (left + 1) + 'px', 'top': cposition.top}).show();
$('#arrow-current').css({'position': 'absolute', 'left': cposition.left, 'top': cposition.top}).show();
} else
{
$('#arrow-next').css({'position': 'absolute', 'left': left, 'top': nposition.top, 'zindex': 10}).show();
$('#arrow-current').css({'position': 'absolute', 'left': cposition.left, 'top': cposition.top}).show();
} if ($(window).width() < 992)
{
$('#arrow-next').hide();
$('#arrow-current').hide();
}
}); $('#clear_all').click(function () {
clearClass();
});
}); function clearClass()
{
$('[id^=nav-]').each(function () {
$(this).removeClass('current').removeClass('arrow-current').removeClass('arrow-next');
});
}
</script>
</body>
</html>
这段代码也挺简单了,虽然花了我一下午的时间,水平有限,努力学习吧。
Bootstrap学习笔记(二)---常见工具和流程导航范例的更多相关文章
- Bootstrap学习笔记(二) 表单
在Bootstrap学习笔记(一) 排版的基础上继续学习Bootstrap的表单,编辑器及head内代码不变. 3-1 基础表单 单中常见的元素主要包括:文本输入框.下拉选择框.单选按钮.复选按钮.文 ...
- bootstrap学习笔记<二>(标题,段落样式)
标题.样式:class="h1"~class="h6" bootstrap中重新定义了h1~h6标签,具体差别如下: 在bootstrap中其他任何标签使用cl ...
- Bootstrap学习笔记(8)--响应式导航栏
说明: 1. 响应式导航栏,就是右上角的三道杠,点一下下方出现隐藏的导航栏.如果屏幕够大就显示所有的导航选项,如果屏幕小比如手机,就显示部分,剩下的放到三道杠里隐藏. 2. 外面套一个大的div,其实 ...
- bootstrap学习笔记<十>(按钮组,导航)
1)按钮组.样式:class="btn-group" <div class="btn-group"> <button class=" ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...
- python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码
python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...
随机推荐
- [转载] Redis资料汇总专题
转载自http://www.cnblogs.com/tommyli/archive/2011/12/14/2287614.html 1.Redis是什么? 十五分钟介绍 Redis数据结构 Redis ...
- Struts2初探
我记得美妙的瞬间:在我的面前出现了你,有如昙花一现的幻影 今天写一篇Struts2框架的,在很久很久以前,Struts2可谓是称霸江湖,纵然现在有后起之秀,但Struts2依然可以成为老牌的主流框架, ...
- 使用JavaMail发送带附件的邮件
所需jar包 链接:http://pan.baidu.com/s/1dFo4cDz 密码:akap 工具类: package com.javamail.utils; import java.util. ...
- 在PHP中,将一个汉字数组按照拼音首字母进行排序
(之前发的这篇博文因为含有敏感关键字,只好重发一遍了) <?php $str = "我们可以在浏览器中看到,当鼠标移到元素上时,元素开始向右移动,开始比较慢,之后则比较快,移开时按原曲 ...
- 为你解读2017年Java开发前景如何
社会上普遍认为程序员是一份高薪职业,确实,相较于其他行业,大多数工作1-3年的程序员年收入都在10-20万.据权威机构统计,在所有的软件开发类人才中对Java开发人才的需求量最大,达到了60%-70% ...
- 负载均衡手段之DNS轮询
大多数域名注册商都支持对统一主机添加多条A记录,这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上,这样就完成了简单的负载均衡.下图的例子是:有3台联通服务器.3台电信服 ...
- IBM的websphere MQ的c#使用
1.关于websphere MQ的常用名词(针对Websphere MQ7.5版本) 队列管理器:为应用程序提供消息传递服务的程序.使用消息队列接口(MQI)的应用程序可以将消息放置到队列并可从队列中 ...
- (11.28)Java小知识!
关于继承的继承机制:继承中最常使用的两个关键字是exteds和implements.今天主要和大家分享extends的知识点.这两个关键字的使用决定了一个对象和另一个对象是否是IS-A关系.同时我们还 ...
- Html5如何自学 只需这几步
Html5在整个行业卷起了一场大潮流,好多人都,但是很多人都不知道该怎么学习Html5,不知道Html5该如何自学?不知道Html5开发多久才会学会?接下来将从以下几点内容详细讲述. 第一,很多人建议 ...
- 字节、十六进制字符串相互转换(asc2hex、hex2asc)
//================================================================== /** 功能: 将16进制数组转换成asc字符数组(短转长) ...