day49 jQuery webUI库
内容回顾
1.事件流
事件捕获阶段
处于目标阶段
事件冒泡:
阻止事件冒泡: event.stopPropagation()
阻止默认事件: envet.preventDefault()
简写为: return false;
2.事件对象
每个事件的回调函数, 都会默认有一个事件对象event
event.type:事件类型
event.target:触发目标的对象
event.keyCode:键码
3.事件代理
自己完成不了的事情, 交给别人去做
原理: 运用的是冒泡的机制, 给父加事件,子冒泡去执行
on(事件类型,子标签,回调函数)
4.事件
click 单击事件
dblclick 双击事件
mouseenter
mouseleave
mouseover
mouseout
mousedown
mouseup
change
select
submit
addEventListener(事件类型,回调函数): 原理是用的这个, 而不是onclick这些
5.合成事件
hover()
mouseenter
mouseleave
6.位置信息:
width()
height()
innerWidth()
outerWidth()
offset().top //获取的是盒子到页面顶部的距离
scrollTop()
scrollLeft()
今日内容
webUI库
零.解决单双击的问题
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<button>按钮</button>
<script src="jquery.js"></script>
<script>
$(function () {
var timer = null;
$('button').click(function (event) {
clearTimeout(timer); //双击的话,清第一次的单击
timer = setTimeout(function () {
console.log('click'); //单击的话: 300ms后执行
}, 300)
});
$('button').dblclick(function () {
clearTimeout(timer); //双击的话,清第二次的单击
console.log('dblclick');
})
})
</script>
</body>
</html>
一.css3 动画的库:
animate.css https://github.com/daneden/animate.css
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.2/animate.min.css">
<title>Document</title>
<style>
div{
width: 200px;
height: 200px;
background-color: red;
color: #fffdef;
line-height: 200px;
text-align: center;
position: absolute;
top: 1000px;
}
</style>
</head>
<body >
<div>wukong</div>
<h2 class="animated infinite bounce delay-2s">bajie</h2> //(infinite 无限地)
<script src="jquery.js"></script>
<script>
$(function () {
// $('div').addClass('animated bounceOutLeft')
$(document).scroll(function () {
var scrollTop = $(this).scrollTop();
console.log(scrollTop);
if(scrollTop>=800) {
$('div').addClass('animated infinite bounce delay-2s');
}
})
});
</script>
</body>
</html>
jqueryUI www.jqueryui.org.cn
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI 排序(Sortable) - 默认功能</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
<style>
#sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#sortable li { margin: 0 3px 3px 3px; padding: 0.4em; padding-left: 1.5em; font-size: 1.4em; height: 18px; }
#sortable li span { position: absolute; margin-left: -1.3em; }
</style>
<script>
$(function() {
$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection();
});
</script>
</head>
<body>
<ul id="sortable">
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 3</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 4</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 5</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 6</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 7</li>
</ul>
</body>
</html>
velocity.js 比jquery动画和css-transitions性能更好的javascript动画库
二.移动端响应式
响应式页面 @media介绍: (media 媒体)
css3的@media查询: 使用这个,你可以针对不同的屏幕大小定义不同的样式
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!--准备工作一:-->
<!--做响应式要写上下面这个, user-scalable用户缩放,:当是移动端的时候,是否允许用户缩放-->
<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>
<style>
@media screen and (min-width: 800px){
body{
background-color: red;
}
}
@media screen and (min-width: 1200px){
body{
background-color: green;
}
}
@media screen and (max-width: 0px) and (min-width: 800px){
body{
background-color: yellow;
}
}
</style>
</head>
<body>
<script src="jquery.js"></script>
<script>
</script>
</body>
</html>
移动端单位介绍
px是绝对单位
em是相对单位:相对当前盒子
rem相对单位:相对根(root: html)元素来调整
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, minimal-ui">
<title>移动端布局</title>
<style type="text/css">
*{
padding: 0;
margin: 0;
}
ul{
list-style: none;
}
.clearfix:after{
content: '';
display: block;
clear: both;
}
html{
width: 100%;
height: 100%;
/*font-size: 30px; rem的单位在这 , 默认字体是16px*/
overflow: hidden;
}
body{
width: 100%;
height: 100%;
overflow: auto;
}
.head-box{
width: 100%;
height: 4rem;
background-color: red;
position: absolute;
top: 0;
left: 0;
}
.list{
margin-top: 4rem;
font-size: 1.5rem;
}
.list .item{
float: left;
width: 5rem;
height: 5rem;
border: 1px solid black;
margin: 0.25rem;
}
</style>
</head>
<body>
<header class="head-box">
<div class="head-top"></div>
<div class="head-bottom"></div>
</header>
<ul class="list clearfix">
<li class="item">1111111</li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
</ul>
</body>
<script src="./js/resize.js"></script> //动态的修改根元素的font-size,需要通过js去控制
</html>
<script>
//三元运算符
var a = 1 == 1 ? 'true' : 'false';
console.log(a);
</script>
resize.js 用来动态计算html: font-size
/*获得页面宽度后动态修改html上的fontsize
* 320为iphone5设计稿下的页面宽度,如下设置后页面的页面在iphone5等宽屏幕上html
* 的font-size会变为20px,即 1rem = 100px 1px=0.05rem
* 所以设置元素尺寸的时候,如果测量设计稿 15px 则需设置尺寸为 (0.05*15)rem = 0.75rem
*/
!(function(doc, win) {
var docEle = doc.documentElement,
evt = "onorientationchange" in window ? "orientationchange" : "resize",
fn = function() {
var width = docEle.clientWidth;
console.log(width);
width && (docEle.style.fontSize = 20 * (width / 375) + "px");
};
win.addEventListener(evt, fn, false);
doc.addEventListener("DOMContentLoaded", fn, false);
}(document, window));
三.Bootstrap 全局的css样式
bootstrap: 简洁,直观,强悍的前端开发框架, 让web开发更迅速,简单 www.bootcss.com
.container 类用于固定宽度并支持响应式布局的容器。
<div class="container">
...
</div>
.container-fluid 类用于 100% 宽度,占据全部视口(viewport)的容器。
<div class="container-fluid">
...
</div>
栅格系统
栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局,你的内容就可以放入这些创建好的布局中
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->
<!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
<style>
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-lg-3 col-md-4 col-sm-6">
jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边)
</div>
<div class="col-lg-3 col-md-4 col-sm-6">
jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边)
</div>
<div class="col-lg-3 col-md-4 col-sm-6">
jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边)
</div>
<div class="col-lg-3 col-md-4 col-sm-6">
jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边)
</div>
</div>
</div>
<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
<script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
<!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
</body>
</html>
三.Bootstrap的组件
简单的复制粘贴, 根据需求来更改对应代码
jquery miniUI 做的比较好
jquery easyUI