jquery属性操作

1、html() 取出或设置html内容

// 取出html内容
var $htm = $('#div1').html();
// 设置html内容
$('#div1').html('<span>添加文字</span>');

2、text() 取出或设置text内容

// 取出文本内容
var $htm = $('#div1').text();
// 设置文本内容
$('#div1').text('<span>添加文字</span>');

3、attr() 取出或设置某个属性的值

// 取出图片的地址
var $src = $('#img1').attr('src');
// 设置图片的地址和alt属性
$('#img1').attr({ src: "test.jpg", alt: "Test Image" });

4.prop() 取出或设置某个属性的值

//取出图片的地址
var $src = $("#img01").prop("src")
//设置图片的地址和alt属性
$("#img01").prop({src: "test.jpg", alt: "test img"});

元素属性操作示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function () {
var $a = $('.link');
var $img = $('#img01');
var $div = $('#div1'); // 读取class属性值
console.log($a.prop('class'));
// 没有设置的属性读取为空
console.log($a.prop('title')); // 获取是图片的绝对地址
console.log($img.prop('src'));
//alert($img.prop('src'));
// 设置属性
$a.prop({'href': 'http://www.baidu.com', 'title': '百度网链接'});
//console.log( $a.prop('title') ); //读取标签内包含的内容
console.log($a.html());
$div.html('<span>div里面的span元素</span>');
})
</script>
</head>
<body>
<a href="#" class="link">这是一个链接</a>
<img src="data:images/002.jpg" id="img01" alt="水果"> <div id="div1"></div>
</body>
</html>

元素属性操作示例

jquery循环

jquery循环示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function () {
var $li = $('.list li');
//$li.css({'backgroundColor':'gold'}); $li.each(function (a) {
//alert(a);
//alert( $(this).html() );
//alert($(this).index());
if ($(this).index() % 2 == 0) {
$(this).css({'backgroundColor': 'gold'});
}
})
})
</script>
</head>
<body>
<ul class="list">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
</body>
</html>

jquery循环示例

图片手风琴示例

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<style>
* {
margin: 0;
padding: 0;
} body {
font-size: 12px;
} #accordion {
width: 727px;
height: 350px;
margin: 100px auto 0 auto;
position: relative;
overflow: hidden;
border: 1px solid #CCC;
} #accordion ul {
list-style: none;
} #accordion ul li {
width: 643px;
height: 350px;
position: absolute;
background: #FFF;
} #accordion ul li span {
display: block;
width: 20px;
height: 350px;
float: left;
text-align: center;
color: #FFF;
padding-top: 5px;
cursor: pointer;
} #accordion ul li img {
display: block;
float: right;
} .bar01 {
left: 0px;
} .bar02 {
left: 643px;
} .bar03 {
left: 664px;
} .bar04 {
left: 685px;
} .bar05 {
left: 706px;
} .bar01 span {
background: #09E0B5;
} .bar02 span {
background: #3D7FBB;
} .bar03 span {
background: #5CA716;
} .bar04 span {
background: #F28B24;
} .bar05 span {
background: #7C0070;
}
</style> <script type="text/javascript">
$(function () {
var $li = $('#accordion li');
$li.click(function () {
//alert($(this).html());
$(this).animate({'left': 21 * $(this).index()}); //点击的li前面的li向左运动到各自的位置
$(this).prevAll().each(function () {
//这里的$(this)指的是循环选择的每个li
$(this).animate({'left': 21 * $(this).index()});
});
// 第5个li在右边的left值 727-21*1 等同于 727-21*(5-$(this).index())
// 第4个li在右边的left值 727-21*2 等同于 727-21*(5-$(this).index())
// 第3个li在右边的left值 727-21*3 等同于 727-21*(5-$(this).index()) $(this).nextAll().each(function () {
$(this).animate({'left': 727 - 21 * (5 - $(this).index())});
});
})
})
</script>
<title>手风琴效果</title>
</head>
<body>
<div id="accordion">
<ul>
<li class="bar01"><span>非洲景色01</span><img src="data:images/001.jpg"/></li>
<li class="bar02"><span>非洲景色02</span><img src="data:images/002.jpg"/></li>
<li class="bar03"><span>非洲景色03</span><img src="data:images/003.jpg"/></li>
<li class="bar04"><span>非洲景色04</span><img src="data:images/004.jpg"/></li>
<li class="bar05"><span>非洲景色05</span><img src="data:images/005.jpg"/></li>
</ul>
</div>
</body>
</html>

图片手风琴示例

jquery事件

事件函数列表:

blur() 元素失去焦点
focus() 元素获得焦点
change() 表单元素的值发生变化
click() 鼠标单击
dblclick() 鼠标双击
mouseover() 鼠标进入(进入子元素也触发)
mouseout() 鼠标离开(离开子元素也触发)
mouseenter() 鼠标进入(进入子元素不触发)
mouseleave() 鼠标离开(离开子元素不触发)
hover() 同时为mouseenter和mouseleave事件指定处理函数
mouseup() 松开鼠标
mousedown() 按下鼠标
mousemove() 鼠标在元素内部移动
keydown() 按下键盘
keypress() 按下键盘
keyup() 松开键盘
load() 元素加载完毕
ready() DOM加载完成
resize() 浏览器窗口的大小发生改变
scroll() 滚动条的位置发生变化
select() 用户选中文本框中的内容
submit() 用户递交表单
toggle() 根据鼠标点击的次数,依次运行多个函数
unload() 用户离开页面

绑定事件的其他方式

$(function(){
$('#div1').bind('mouseover click', function(event) {
alert($(this).html());
});
});

取消绑定事件

$(function(){
$('#div1').bind('mouseover click', function(event) {
alert($(this).html()); // $(this).unbind();
$(this).unbind('mouseover'); });
});

自动获取焦点的方法:

1.使用jquery绑定元素的标签添加焦点事件

$(".input01").focus()

2.给元素添加autofocus属性

<input type="text" name="dat01" id="input01" autofocus>

jquery事件示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function () {
// 在获得焦点的时候做什么事情
/*$('#input01').focus(function(){
alert('获得焦点')
})*/ //focus 一般用来让input元素开始就获取焦点,只能是一个元素获得焦点
$('#input01').focus();
$('#input01').blur(function () {
// 获取input元素的value值用 val()
var sVal = $(this).val();
alert(sVal); });
$('#form1').submit(function () {
//alert('提交'); // 阻止默认的提交行为
return false;
})
})
</script>
</head>
<body>
<form id="form1" action="http://www.baidu.com">
<input type="text" name="dat01" id="input01">
<input type="text" name="dat02" id="input02">
<input type="submit" name="" value="提交" id="sub">
</form>
</body>
</html>

jquery事件示例

鼠标移入移除事件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function () {
// 鼠标移入,移入的子元素也会触发
$('.con').mouseover(function () {
alert('移入');
}); $('.con').mouseout(function () {
alert('移出');
}); // 鼠标移入,移入的子元素不会触发
/*
$('.con2').mouseenter(function(){
alert('移入');
})
$('.con2').mouseleave(function(){
alert('移出');
}) 合并成下面的写法:
*/ $('.con2').hover(function () {
alert('移入')
}, function () {
alert('移出')
})
})
</script>
<style type="text/css">
.con, .con2 {
width: 200px;
height: 200px;
background-color: gold;
} .box, .box2 {
width: 100px;
height: 100px;
background-color: green;
}
</style>
</head>
<body>
<div class="con">
<div class="box"></div>
</div> <br/>
<br/>
<br/>
<br/>
<div class="con2">
<div class="box2"></div>
</div>
</body>
</html>

鼠标移入移除事件

resize事件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(window).resize(function () {
var $w = $(window).width(); document.title = $w;
});
</script>
</head>
<body> </body>
</html>

resize事件

bind绑定事件和解绑

bind绑定事件和解绑示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function () {
/*
$('#btn').click(function(){ alert('click事件')
})
*/ // 点击或者鼠标移入的时候都执行绑定的函数
$('#btn').bind('click mouseover', function () {
alert('触发事件绑定的函数');
$(this).unbind('mouseover');
})
})
</script>
</head>
<body>
<input type="button" name="" value="按钮" id="btn">
</body>
</html>

bind绑定事件和解绑示例

主动触发与自定义事件

主动触发 
可使用jquery对象上的trigger方法来触发对象上绑定的事件。

自定义事件 
除了系统事件外,可以通过bind方法自定义事件,然后用tiggle方法触发这些事件。

//给element绑定hello事件
element.bind("hello",function(){
alert("hello world!");
}); //触发hello事件
element.trigger("hello");

事件冒泡

什么是事件冒泡

在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。

事件冒泡的作用

事件冒泡允许多个操作被集中处理(把事件处理器添加到一个父级元素上,避免把事件处理器添加到多个子级元素上),它还可以让你在对象层的不同级别捕获事件。

阻止事件冒泡
事件冒泡机制有时候是不需要的,需要阻止掉,通过 event.stopPropagation() 来阻止

阻止默认行为

阻止表单提交

$('#form1').submit(function(event){
event.preventDefault();
})

阻止右键菜单

$(document).contextmenu(function(event) {
event.preventDefault();
});

合并阻止操作
实际开发中,一般把阻止冒泡和阻止默认行为合并起来写,合并写法可以用

// event.stopPropagation();
// event.preventDefault(); // 合并写法:
return false;

事件冒泡-阻止事件冒泡示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function () {
// event 是发生事件的时候的事件对象,使用的时候,通过第一个参数传进来
$('.son').click(function (event) {
alert(1);
//通过event对象上的stopPropagation的方法阻止事件冒泡
//event.stopPropagation();
}); $('.father').click(function (event) {
alert(2);
event.stopPropagation();
}); $('.grandfather').click(function () {
alert(3);
// 阻止事件冒泡和阻止默认行为的统一写法:
return false;
}); $(document).click(function () {
alert(4);
})
}) </script>
<style type="text/css"> .grandfather {
width: 300px;
height: 300px;
background-color: green; position: relative;
} .father {
width: 200px;
height: 200px;
background-color: gold;
} .son {
width: 100px;
height: 100px;
background-color: red;
position: absolute; left: 0;
top: 400px;
}
</style>
</head>
<body>
<div class="grandfather">
<div class="father">
<div class="son"></div>
</div>
</div>
</body>
</html>

事件冒泡-阻止事件冒泡示例

阻止事件冒泡-弹框/丐版示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function () {
$('#btn').click(function () {
$('.pop_con').fadeIn();
return false;
});
$(document).click(function () {
$('.pop_con').fadeOut(); });
$('.pop').click(function () {
return false;
});
$('#close').click(function () {
$('.pop_con').fadeOut();
})
})
</script>
<style type="text/css">
.pop_con {
display: none;
}
.pop {
position: fixed;
width: 500px;
height: 300px;
background-color: #fff;
border: 3px solid #000;
left: 50%;
top: 50%;
margin-left: -250px;
margin-top: -150px;
z-index: 9999;
}
.mask {
position: fixed;
width: 100%;
height: 100%;
background-color: #000;
opacity: 0.3;
filter: alpha(opacity=30);
left: 0;
top: 0;
z-index: 9990;
}
.close {
float: right;
font-size: 30px;
}
</style>
</head>
<body>
<input type="button" name="" value="弹出" id="btn"> <div class="pop_con">
<div class="pop">
投资金额:
<input type="text" name="">
<a href="#" id="close" class="close">×</a>
</div>
<div class="mask"></div>
</div>
</body>
</html>

阻止事件冒泡-弹框/丐版示例

事件委托

事件委托就是利用冒泡的原理,把事件加到父级上,通过判断事件来源的子集,执行相应的操作,事件委托首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。

一般绑定事件的写法

$(function(){
$ali = $('#list li');
$ali.click(function(event) {
$(this).css({background:'red'});
});
})
...
<ul id="list">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>

事件委托的写法

$(function(){
$list = $('#list');
$list.delegate('li', 'click', function(event) {
$(this).css({background:'red'});
});
})
...
<ul id="list">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>

取消事件委托

// ev.delegateTarge 委托对象
$(ev.delegateTarge).undelegate(); // 上面的例子可使用 $list.undelegate();

事件委托示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.list {
background-color: gold;
list-style: none;
padding: 10px;
}
.list li {
height: 30px;
background-color: green;
margin: 10px;
}
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function () {
/*
$('.list li').click(function(){
$(this).css({'backgroundColor':'red'});
});
*/ // 新建一个li元素赋值给$li变量
//var $li = $('<li>9</li>'); //让新加的li有相同的事件,需要单独绑定
//$li.click(....) // 把新建的li元素放到ul子集的最后面
//$('.list').append($li); //事件委托,将li要发生的事件委托给li的父级
$('.list').delegate('li', 'click', function () {
//$(this) 指的是委托的子元素
$(this).css({'backgroundColor': 'red'});
}); var $li = $('<li>9</li>');
$('.list').append($li);
})
</script>
</head> <body>
<ul class="list">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
</body>
</html>

事件委托示例

jquery元素节点操作

创建节点

var $div = $('<div>');
var $div2 = $('<div>这是一个div元素</div>');

插入节点
1、append()和appendTo():在现存元素的内部,从后面插入元素

var $span = $('<span>这是一个span元素</span>');
$('#div1').append($span);
......
<div id="div1"></div>

2、prepend()和prependTo():在现存元素的内部,从前面插入元素

3、after()和insertAfter():在现存元素的外部,从后面插入元素

4、before()和insertBefore():在现存元素的外部,从前面插入元素

删除节点

$('#div1').remove();

新建的节点操作示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function () {
// 通过html的字符串的方式添加节点性能最高
//$('#div1').html($('#div1').html()+'<a href="#">链接</a>') // 新建一个带有属性的a元素,把它赋值给$a
$a = $('<a href="#">链接</a>'); // 新建一个空的a元素
$a2 = $('<a>');
$p = $('<p>这是一个p元素</p>');
$h2 = $('<h2>这是一个h2</h2>');
$h3 = $('<h3>这是一个h3</h3>'); // 父元素内的后面放入子元素
//$('#div1').append($a);
//子元素放入到父元素内部的后面
$a.appendTo($('#div1'));
$('#div1').append($a2); // 父元素内的前面放入子元素
//$('#div1').prepend($p);
//子元素放入到父元素内部的前面
$p.prependTo($('#div1')); //$('#div1').after($h2);
$h2.insertAfter($('#div1')); //$('#div1').before($h3);
$h3.insertBefore($('#div1'));
})
</script>
</head>
<body>
<div id="div1">
<h1>这是一个H1元素</h1>
</div>
</body>
</html>

新建的节点操作示例

已有的节点操作示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function () {
//$('#p1').insertBefore($('#title01'));
$('#title01').before($('#p1')); $('#span01').appendTo($('#p1')); $('#link01').prependTo($('#p1')); $('#title01').remove();
})
</script>
</head>
<body>
<h1 id="title01">这是一个H1元素</h1>
<p id="p1">这是一个p元素</p> <span id="span01">这是一个span元素</span>
<a href="#" id='link01'>链接</a>
</body>
</html>

已有的节点操作示例

todolist(计划列表)实例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>todolist</title>
<style type="text/css">
.list_con {
width: 600px;
margin: 50px auto 0;
} .inputtxt {
width: 550px;
height: 30px;
border: 1px solid #ccc;
padding: 0px;
text-indent: 10px;
} .inputbtn {
width: 40px;
height: 32px;
padding: 0px;
border: 1px solid #ccc;
} .list {
margin: 0;
padding: 0;
list-style: none;
margin-top: 20px;
} .list li {
height: 40px;
line-height: 40px;
border-bottom: 1px solid #ccc;
} .list li span {
float: left;
} .list li a {
float: right;
text-decoration: none;
margin: 0 10px;
}
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function () {
var $inputtxt = $('#txt1');
var $btn = $('#btn1');
var $ul = $('#list'); $btn.click(function () {
// 获取input输入框的内容
var $val = $inputtxt.val(); if ($val == "") {
alert('请输入内容');
return;
}
var $li = $('<li><span>' + $val + '</span><a href="javascript:;" class="up"> ↑ </a><a href="javascript:;" class="down"> ↓ </a><a href="javascript:;" class="del">删除</a></li>'); /* var $a = $li.find('.del');
$a.click(function(){
$(this).parent().remove();
})*/ $ul.append($li);
$inputtxt.val("");
}); /*
$('.del').click(function(){
$(this).parent().remove();
})*/ $ul.delegate('a', 'click', function () {
var $handler = $(this).prop('class');
if ($handler == 'del') {
$(this).parent().remove();
}
if ($handler == 'up') {
if ($(this).parent().prev().length == 0) {
alert('到顶了!');
return;
}
$(this).parent().insertBefore($(this).parent().prev());
} if ($handler == 'down') {
if ($(this).parent().next().length == 0) {
alert('到底了!');
return;
}
$(this).parent().insertAfter($(this).parent().next());
}
})
})
</script>
</head>
<body> <div class="list_con">
<h2>To do list</h2>
<input type="text" name="" id="txt1" class="inputtxt">
<input type="button" name="" value="增加" id="btn1" class="inputbtn"> <ul id="list" class="list"> <li><span>学习html</span><a href="javascript:;" class="up"> ↑ </a><a href="javascript:;" class="down"> ↓ </a><a
href="javascript:;" class="del">删除</a></li>
<li><span>学习css</span><a href="javascript:;" class="up"> ↑ </a><a href="javascript:;" class="down"> ↓ </a><a
href="javascript:;" class="del">删除</a></li>
<li><span>学习javascript</span><a href="javascript:;" class="up"> ↑ </a><a href="javascript:;" class="down">
↓ </a><a href="javascript:;" class="del">删除</a></li>
</ul>
</div>
</body>
</html>

todolist(计划列表)实例

滚轮事件与函数节流

jquery.mousewheel插件使用
jquery中没有鼠标滚轮事件,原生js中的鼠标滚轮事件不兼容,可以使用jquery的滚轮事件插件jquery.mousewheel.js。

函数节流
javascript中有些事件的触发频率非常高,比如onresize事件(jq中是resize),onmousemove事件(jq中是mousemove)以及上面说的鼠标滚轮事件,在短事件内多处触发执行绑定的函数,可以巧妙地使用定时器来减少触发的次数,实现函数节流。

整屏滚动实例
整屏滚动.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>整页滚动</title>
<link rel="stylesheet" type="text/css" href="css/test.css">
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/jquery.mousewheel.js"></script>
<script type="text/javascript">
$(function () {
var $screen = $('.pages_con');
var $pages = $('.pages');
var $len = $pages.length;
var $h = $(window).height();
var $points = $('.points li');
var timer = null; var $nowscreen = 0;
$pages.css({'height': $h});
$pages.eq(0).addClass('moving'); $points.click(function () {
$nowscreen = $(this).index();
$points.eq($nowscreen).addClass('active').siblings().removeClass('active');
$screen.animate({'top': -$h * $nowscreen}, 300);
$pages.eq($nowscreen).addClass('moving').siblings().removeClass('moving');
}) $(window).mousewheel(function (event, dat) {
clearTimeout(timer);
timer = setTimeout(function () { if (dat == -1) {
$nowscreen++;
} else {
$nowscreen--;
}
if ($nowscreen < 0) {
$nowscreen = 0;
} if ($nowscreen > $len - 1) {
$nowscreen = $len - 1;
} $screen.animate({'top': -$h * $nowscreen}, 300);
$pages.eq($nowscreen).addClass('moving').siblings().removeClass('moving'); $points.eq($nowscreen).addClass('active').siblings().removeClass('active'); }, 200) })
}) </script>
</head>
<body>
<div class="pages_con"> <div class="pages page1">
<div class="main_con">
<div class="left_img"><img src="data:images/001.png"></div>
<div class="right_info">
Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征。在互联网的演化进程中,网页制作是Web1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主。 </div>
</div>
</div> <div class="pages page2">
<div class="main_con">
<div class="right_img"><img src="data:images/002.png"></div>
<div class="left_info">
2005年以后,互联网进入Web2.0时代,各种类似桌面软件的Web应用大量涌现,网站的前端由此发生了翻天覆地的变化。网页不再只是承载单一的文字和图片,各种富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供了更好的使用体验,这些都是基于前端技术实现的。
</div>
</div> </div> <div class="pages page3">
<div class="main_con">
<div class="left_img"><img src="data:images/004.png"></div>
<div class="right_info">
以前会Photoshop和Dreamweaver就可以制作网页,现在只掌握这些已经远远不够了。无论是开发难度上,还是开发方式上,现在的网页制作都更接近传统的网站后台开发,所以现在不再叫网页制作,而是叫Web前端开发。 </div>
</div>
</div> <div class="pages page4">
<div class="main_con">
<div class="left_img"><img src="data:images/003.png"></div>
<div class="right_info">
Web前端开发在产品开发环节中的作用变得越来越重要,而且需要专业的前端工程师才能做好,这方面的专业人才近几年来备受青睐。Web前端开发是一项很特殊的工作,涵盖的知识面非常广,既有具体的技术,又有抽象的理念。简单地说,它的主要职能就是把网站的界面更好地呈现给用户。
</div>
</div>
</div> <div class="pages page5">
<div class="main_con">
<div class="center_img"><img src="data:images/005.png"></div>
</div> </div>
</div>
<ul class="points">
<li class="active"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>

test.css

body, ul {
margin:;
padding:;
} ul {
list-style: none;
} .pages_con {
position: fixed;
left:;
top:;
width: 100%;
overflow: hidden;
} .pages {
height: 600px;
position: relative;
} .page1 {
background-color: orange;
} .page2 {
background-color: lightgreen;
} .page3 {
background-color: cyan;
} .page4 {
background-color: pink;
} .page5 {
background-color: lightblue;
} .points {
width: 16px;
height: 176px;
position: fixed;
right: 20px;
top: 50%;
margin-top: -88px;
} .points li {
width: 13px;
height: 13px;
margin: 16px 0;
border-radius: 50%;
border: 1px solid #666;
cursor: pointer;
} .points li.active {
background-color: #666;
} .main_con {
width: 900px;
height: 400px;
position: absolute;
left: 50%;
top: 50%;
margin-left: -450px;
margin-top: -200px;
} .main_con .left_img {
width: 363px;
height: 400px;
float: left;
position: relative;
left: -50px;
opacity:;
filter: alpha(opacity=0);
transition: all 1000ms ease 300ms;
} .main_con .right_info {
width: 500px;
height: 300px;
margin-top: 50px;
float: right;
font-family: 'Microsoft Yahei';
font-size: 20px;
line-height: 50px;
color: #666;
text-indent: 2em;
text-align: justify;
position: relative;
right: -50px;
opacity:;
filter: alpha(opacity=0);
transition: all 1000ms ease 300ms;
} .moving .main_con .left_img {
left:;
opacity:;
filter: alpha(opacity=100);
} .moving .main_con .right_info {
right:;
opacity:;
filter: alpha(opacity=100);
} .main_con .right_img {
width: 522px;
height: 400px;
float: right;
position: relative;
top: -50px;
opacity:;
filter: alpha(opacity=0);
transition: all 1000ms ease 300ms;
} .main_con .left_info {
width: 350px;
height: 300px;
margin-top: 50px;
float: left;
font-family: 'Microsoft Yahei';
font-size: 20px;
line-height: 50px;
color: #666;
text-indent: 2em;
text-align: justify;
position: relative;
bottom: -50px;
opacity:;
filter: alpha(opacity=0);
transition: all 1000ms ease 300ms;
} .moving .main_con .right_img {
top:;
opacity:;
filter: alpha(opacity=100);
} .moving .main_con .left_info {
bottom:;
opacity:;
filter: alpha(opacity=100);
} .main_con .center_img {
width: 611px;
height: 337px;
position: absolute;
left: 50%;
margin-left: -305px;
bottom: -50px;
opacity:;
filter: alpha(opacity=0);
transition: all 1000ms ease 300ms; } .moving .main_con .center_img {
bottom:;
opacity:;
filter: alpha(opacity=100);
}

test.css

jquery.mousewheel.js    //网上找

/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)
* Licensed under the MIT License (LICENSE.txt).
*
* Version: 3.1.12
*
* Requires: jQuery 1.2.2+
*/ (function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS style for Browserify
module.exports = factory;
} else {
// Browser globals
factory(jQuery);
}
}(function ($) { var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
toBind = ('onwheel' in document || document.documentMode >= 9) ?
['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
slice = Array.prototype.slice,
nullLowestDeltaTimeout, lowestDelta; if ($.event.fixHooks) {
for (var i = toFix.length; i;) {
$.event.fixHooks[toFix[--i]] = $.event.mouseHooks;
}
} var special = $.event.special.mousewheel = {
version: '3.1.12', setup: function () {
if (this.addEventListener) {
for (var i = toBind.length; i;) {
this.addEventListener(toBind[--i], handler, false);
}
} else {
this.onmousewheel = handler;
}
// Store the line height and page height for this particular element
$.data(this, 'mousewheel-line-height', special.getLineHeight(this));
$.data(this, 'mousewheel-page-height', special.getPageHeight(this));
}, teardown: function () {
if (this.removeEventListener) {
for (var i = toBind.length; i;) {
this.removeEventListener(toBind[--i], handler, false);
}
} else {
this.onmousewheel = null;
}
// Clean up the data we added to the element
$.removeData(this, 'mousewheel-line-height');
$.removeData(this, 'mousewheel-page-height');
}, getLineHeight: function (elem) {
var $elem = $(elem),
$parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
if (!$parent.length) {
$parent = $('body');
}
return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
}, getPageHeight: function (elem) {
return $(elem).height();
}, settings: {
adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
normalizeOffset: true // calls getBoundingClientRect for each event
}
}; $.fn.extend({
mousewheel: function (fn) {
return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
}, unmousewheel: function (fn) {
return this.unbind('mousewheel', fn);
}
}); function handler(event) {
var orgEvent = event || window.event,
args = slice.call(arguments, 1),
delta = 0,
deltaX = 0,
deltaY = 0,
absDelta = 0,
offsetX = 0,
offsetY = 0;
event = $.event.fix(orgEvent);
event.type = 'mousewheel'; // Old school scrollwheel delta
if ('detail' in orgEvent) {
deltaY = orgEvent.detail * -1;
}
if ('wheelDelta' in orgEvent) {
deltaY = orgEvent.wheelDelta;
}
if ('wheelDeltaY' in orgEvent) {
deltaY = orgEvent.wheelDeltaY;
}
if ('wheelDeltaX' in orgEvent) {
deltaX = orgEvent.wheelDeltaX * -1;
} // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
if ('axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS) {
deltaX = deltaY * -1;
deltaY = 0;
} // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
delta = deltaY === 0 ? deltaX : deltaY; // New school wheel delta (wheel event)
if ('deltaY' in orgEvent) {
deltaY = orgEvent.deltaY * -1;
delta = deltaY;
}
if ('deltaX' in orgEvent) {
deltaX = orgEvent.deltaX;
if (deltaY === 0) {
delta = deltaX * -1;
}
} // No change actually happened, no reason to go any further
if (deltaY === 0 && deltaX === 0) {
return;
} // Need to convert lines and pages to pixels if we aren't already in pixels
// There are three delta modes:
// * deltaMode 0 is by pixels, nothing to do
// * deltaMode 1 is by lines
// * deltaMode 2 is by pages
if (orgEvent.deltaMode === 1) {
var lineHeight = $.data(this, 'mousewheel-line-height');
delta *= lineHeight;
deltaY *= lineHeight;
deltaX *= lineHeight;
} else if (orgEvent.deltaMode === 2) {
var pageHeight = $.data(this, 'mousewheel-page-height');
delta *= pageHeight;
deltaY *= pageHeight;
deltaX *= pageHeight;
} // Store lowest absolute delta to normalize the delta values
absDelta = Math.max(Math.abs(deltaY), Math.abs(deltaX)); if (!lowestDelta || absDelta < lowestDelta) {
lowestDelta = absDelta; // Adjust older deltas if necessary
if (shouldAdjustOldDeltas(orgEvent, absDelta)) {
lowestDelta /= 40;
}
} // Adjust older deltas if necessary
if (shouldAdjustOldDeltas(orgEvent, absDelta)) {
// Divide all the things by 40!
delta /= 40;
deltaX /= 40;
deltaY /= 40;
} // Get a whole, normalized value for the deltas
delta = Math[delta >= 1 ? 'floor' : 'ceil'](delta / lowestDelta);
deltaX = Math[deltaX >= 1 ? 'floor' : 'ceil'](deltaX / lowestDelta);
deltaY = Math[deltaY >= 1 ? 'floor' : 'ceil'](deltaY / lowestDelta); // Normalise offsetX and offsetY properties
if (special.settings.normalizeOffset && this.getBoundingClientRect) {
var boundingRect = this.getBoundingClientRect();
offsetX = event.clientX - boundingRect.left;
offsetY = event.clientY - boundingRect.top;
} // Add information to the event object
event.deltaX = deltaX;
event.deltaY = deltaY;
event.deltaFactor = lowestDelta;
event.offsetX = offsetX;
event.offsetY = offsetY;
// Go ahead and set deltaMode to 0 since we converted to pixels
// Although this is a little odd since we overwrite the deltaX/Y
// properties with normalized deltas.
event.deltaMode = 0; // Add event and delta to the front of the arguments
args.unshift(event, delta, deltaX, deltaY); // Clearout lowestDelta after sometime to better
// handle multiple device types that give different
// a different lowestDelta
// Ex: trackpad = 3 and mouse wheel = 120
if (nullLowestDeltaTimeout) {
clearTimeout(nullLowestDeltaTimeout);
}
nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200); return ($.event.dispatch || $.event.handle).apply(this, args);
} function nullLowestDelta() {
lowestDelta = null;
} function shouldAdjustOldDeltas(orgEvent, absDelta) {
// If this is an older event and the delta is divisable by 120,
// then we are assuming that the browser is treating this as an
// older mouse wheel event and that we should divide the deltas
// by 40 to try and get a more usable deltaFactor.
// Side note, this actually impacts the reported scroll distance
// in older browsers and can cause scrolling to be slower than native.
// Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
} }));

jquery.mousewheel.js

幻灯片

js幻灯片原理之一:
要切换幻灯片,首先将要切换来的幻灯片放到左边/右边,然后使用animate动画进行移动切换;

幻灯片第一步:
使用js添加小圆点,并给第一个小圆点设为默认添加active样式;

    var $slide = $('.slide');

    //选取所有的幻灯片
var $li = $('.slide_list li'); //获取幻灯片的个数
var $len = $li.length; //选择小圆点的容器
var $points_con = $('.points');
// 根据幻灯片的个数,动态创建小圆点
for (var i = 0; i < $len; i++) {
var $newli = $('<li>'); //第一个小圆点含有'active'的样式
if (i == 0) {
$newli.addClass('active');
}
$newli.appendTo($points_con);
} //第一个幻灯片不动,将其他的幻灯片放到右边去
$li.not(':first').css({'left': 760});

幻灯片第二步:
使用js控制,点击小圆点,将就切换到对应的图片上;

    // 要运动过来的幻灯片的索引值
var nowli = 0; // 要离开的幻灯片的索引值
var prevli = 0; // 获取小圆点
var $points = $('.points li'); //小圆点点击切换幻灯片
$points.click(function () {
nowli = $(this).index();
// 修复重复点击的bug
if (nowli == prevli) {
return;
}
$(this).addClass('active').siblings().removeClass('active');
move();
})

幻灯片第三步:
点击前后图标切换幻灯片

var $prev = $('.prev');
var $next = $('.next'); //向前的按钮点击切换幻灯片
$prev.click(function () { if (ismove) {
return;
} ismove = true; nowli--;
move();
$points.eq(nowli).addClass('active').siblings().removeClass('active');
}) //向后的按钮点击切换幻灯片
$next.click(function () { if (ismove) {
return;
} ismove = true; nowli++;
move();
$points.eq(nowli).addClass('active').siblings().removeClass('active'); }) // 幻灯片运动函数,通过判断nowli和prevli的值来移动对应的幻灯片
function move() {
// 第一张幻灯片往前的时候
if (nowli < 0) {
nowli = $len - 1;
prevli = 0;
$li.eq(nowli).css({'left': -760});
$li.eq(nowli).animate({'left': 0});
$li.eq(prevli).animate({'left': 760}, function () {
ismove = false;
});
prevli = nowli;
return;
} //最后一张幻灯片再往后的时候
if (nowli > $len - 1) {
nowli = 0;
prevli = $len - 1;
$li.eq(nowli).css({'left': 760});
$li.eq(nowli).animate({'left': 0});
$li.eq(prevli).animate({'left': -760}, function () {
ismove = false;
});
prevli = nowli;
return;
}
...
}

幻灯片第四步:
幻灯片自动播放;鼠标移入停止,移出播放;解决用户暴力快速点击出现的bug,stop不够好,使用一个巧妙的开关;

幻灯片js完整代码

$(function () {
var $slide = $('.slide'); //选取所有的幻灯片
var $li = $('.slide_list li');
//获取幻灯片的个数
var $len = $li.length;
//选择小圆点的容器
var $points_con = $('.points'); // 要运动过来的幻灯片的索引值
var nowli = 0;
// 要离开的幻灯片的索引值
var prevli = 0; var $prev = $('.prev');
var $next = $('.next'); var timer = null;
var ismove = false; // 根据幻灯片的个数,动态创建小圆点
for (var i = 0; i < $len; i++) {
var $newli = $('<li>'); //第一个小圆点含有'active'的样式
if (i == 0) {
$newli.addClass('active');
}
$newli.appendTo($points_con);
} //第一个幻灯片不动,将其他的幻灯片放到右边去
$li.not(':first').css({'left': 760});
// 获取小圆点
var $points = $('.points li'); //小圆点点击切换幻灯片
$points.click(function () {
nowli = $(this).index();
// 修复重复点击的bug
if (nowli == prevli) {
return;
}
$(this).addClass('active').siblings().removeClass('active');
move();
}); //向前的按钮点击切换幻灯片
$prev.click(function () { if (ismove) {
return;
}
ismove = true; nowli--;
move();
$points.eq(nowli).addClass('active').siblings().removeClass('active');
}); //向后的按钮点击切换幻灯片
$next.click(function () { if (ismove) {
return;
} ismove = true; nowli++;
move();
$points.eq(nowli).addClass('active').siblings().removeClass('active');
}); timer = setInterval(autoplay, 5000); $slide.mouseenter(function () {
clearInterval(timer);
}); $slide.mouseleave(function () {
timer = setInterval(autoplay, 3000);
}); function autoplay() {
nowli++;
move();
$points.eq(nowli).addClass('active').siblings().removeClass('active');
} // 幻灯片运动函数,通过判断nowli和prevli的值来移动对应的幻灯片
function move() {
// 第一张幻灯片往前的时候
if (nowli < 0) {
nowli = $len - 1;
prevli = 0;
$li.eq(nowli).css({'left': -760});
$li.eq(nowli).animate({'left': 0});
$li.eq(prevli).animate({'left': 760}, function () {
ismove = false;
});
prevli = nowli;
return;
} //最后一张幻灯片再往后的时候
if (nowli > $len - 1) {
nowli = 0;
prevli = $len - 1;
$li.eq(nowli).css({'left': 760});
$li.eq(nowli).animate({'left': 0});
$li.eq(prevli).animate({'left': -760}, function () {
ismove = false;
});
prevli = nowli;
return;
} // 幻灯片从右边过来
if (nowli > prevli) {
// 把要过来的幻灯片先放到右边去
$li.eq(nowli).css({'left': 760});
$li.eq(prevli).animate({'left': -760});
} else //幻灯片从左边过来
{
// 把要过来的幻灯片先放到左边去
$li.eq(nowli).css({'left': -760});
$li.eq(prevli).animate({'left': 760});
} $li.eq(nowli).animate({'left': 0}, function () {
ismove = false;
});
prevli = nowli;
}
});

幻灯片js完整代码

前端之jquery2的更多相关文章

  1. 前端学习-jQuery-2

    老师的博客地址:https://www.cnblogs.com/yuanchenqi/articles/6070667.html day44 属性操作: ----------------------- ...

  2. 前端之ajax

    前端之ajax 本节内容 ajax介绍 原生js实现ajax jquery实现ajax json 跨域请求 1. ajax介绍 AJAX(Asynchronous Javascript And XML ...

  3. 前端之jquery

    前端之jquery 本节内容 jquery简介 选择器和筛选器 操作元素 示例 1. jquery简介 1 jquery是什么 jQuery由美国人John Resig创建,至今已吸引了来自世界各地的 ...

  4. 8 HTML&JS等前端知识系列之jquery的自定义方法

    preface 有时候我们在前端写jquery的时候,会自己自定义些方法,这样可以不需要重复造轮子.先说说2种自定义方法的区别: 不跟在选择器后面的 跟在选择器后面的. 那下面说说如何自定义jquer ...

  5. 2. web前端开发分享-css,js进阶篇

    一,css进阶篇: 等css哪些事儿看了两三遍之后,需要对看过的知识综合应用,这时候需要大量的实践经验, 简单的想法:把qq首页全屏另存为jpg然后通过ps工具切图结合css转换成html,有无从下手 ...

  6. 前端工程师如何快速的开发一个微信JSSDK应用

    亲们,订阅号出来已经很久了,作为一个前端工程师或者全栈工程师,你是不是错过了什么?大概许多攻城狮同砚还没有反应过来订阅号怎么回事,就马上要被微信的应用号秀一脸了.在应用号还没有正式出来之前,我们赶紧一 ...

  7. jquery2源码分析系列

    学习jquery的源码对于提高前端的能力很有帮助,下面的系列是我在网上看到的对jquery2的源码的分析.等有时间了好好研究下.我们知道jquery2开始就不支持IE6-8了,从jquery2的源码中 ...

  8. 前端模块化开发之seaJs

    了解后端语言的童鞋一定听过模块化开发的概念,比如java.python等后端语言都有自己的模块化特性,然而和后端语言相比,javascript还尚未实现模块化的功能,虽然之后的更高版本可能引入模块化开 ...

  9. 前端见微知著工具篇:Bower组件管控

    在上一篇文章中,我们提到了利用Grunt可以完成的内容,其中最主要的功能就是利用各种Node的组件来搭配出一个自动化高亮,自动化运行等的Web前端开发环境.但是Bower也是一个专门来管理各种依赖组件 ...

随机推荐

  1. java 主动信任证书

    java 主动信任证书 SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, mid.toCharArray() ...

  2. python的安装以及前景

    1.检查软件是否安装:在cmd命令行上输oython 假如环境已经配置好环境变量 则会显示为python的inf: 2.下载并安装python 打开python官网:https://www.pytho ...

  3. Zabbix-(七)分布式监控

    Zabbix-(七)分布式监控 一.前言 Zabbix提供了一套分布式监控的方案,即使用Zabbix Proxy,本文记录使用Zabbix Proxy进行分布式监控. 官方所述Proxy的使用场景如下 ...

  4. SpringBoot打包为war包,并在tomcat中运行

    先看一下我创建的最简单的项目吧. controller类 @RestController public class TestController { @RequestMapping("ind ...

  5. 多进程操作-进程锁multiprocess.Lock的使用

    多进程操作-进程锁multiprocess.Lock的使用 ​ 通过之前的Process模块的学习,我们实现了并发编程,虽然更加充分地利用了IO资源,但是也有缺陷:当多个进程共用一份数据资源的时候,就 ...

  6. IO多路复用?我所理解的IO模式

    1:IO的过程 当我们调用系统函数read时,一般会经历两个阶段: 1:等待数据准备(waiting for the data be ready) 2:将数组从内核拷贝到进程(从内核态到用户态)(co ...

  7. js鼠标滚轮事件上滚下滚判断

    onmousewheel <script> var scrollFunc = function (e){ //其实我一开始也不知道用啥 //console.log(e)我们可以打印一下 / ...

  8. Eclipse:批量将Java源代码文件的编码从GBK转为UTF-8

    很简单的几行代码,就可以批量将GBK格式的java文件转为UTF-8格式. 基本上所有文本文件的编码转换都可以采用这种方式. import java.io.File; import java.io.I ...

  9. 电池的QPNP模式

    名词解释: CV:Constant Voltage恒压 SMMB charger:Switch-ModeBattery Charger and Boost peripheral开关模式电池充电器和升压 ...

  10. python通过重启线程,实现服务的热加载

    这个思路后来证明不能用于工作. 因为线程调用没有及时返回,所以不能用这种方式来重启服务. 但作为脑洞,也应该作个记录. import os import shutil import datetime ...