目录

  • 1 JavaScript快速入门
    • 1.1 如何插入javascrip代码
    • 1.2 引用javascritp外部文件
    • 1.3 JavaScript在页面中位置
    • 1.4 JavaScript语句和符号
    • 1.5 JavaScript注释
    • 1.6 案例1-1 script标签在html中书写位置
    • 1.7 案例1-2  JavaScript引入方式
    • 1.8 JavaScript变量
    • 1.9 JavaScript判断语句
    • 1.10 JavaScript函数
    • 1.11 案例1-4 比较两个数大小
    • 1.12 案例1-8 改变网页皮肤颜色
    • 1.13 案例1-9 验证用户名和密码
  • 2 基本语法
    • 2.1 变量
      • 2.1.1 标识符
      • 2.1.2 保留关键字
      • 2.1.3 变量的使用
      • 2.1.4 变量的赋值
    • 2.2 变量的数据类型
      • 2.2.1 数据类型分类
      • 2.2.2 基本数据类型
      • 2.2.3 数据类型检测
      • 2.2.4 数据类型检测总结
      • 2.2.5 数据类型转换
      • 2.2.6 数据类型转换(程序1)
      • 2.2.7 数据类型转换(程序2)
      • 2.2.8 数据类型转换(程序3)
      • 2.2.9 数据类型转换(程序4)
      • 2.2.10 数据类型转换(程序5)
      • 2.2.11 数据类型转换(程序6)
    • 2.3 表达式
    • 2.4 运算符
      • 2.4.1 算数运算符
      • 2.4.2 字符串运算符
      • 2.4.3 赋值运算符
      • 2.4.4 比较运算符
      • 2.4.5 逻辑运算符
      • 2.4.6 三元运算符
      • 2.4.7 位运算符
      • 2.4.8 运算符优先级
    • 2.5 流程控制
      • 2.5.1 选择结构
      • 2.5.2 if单分支语句
      • 2.5.3 if...else双分支语句
      • 2.5.4 if...else双分支举例
      • 2.5.5 if...else多路分支语句
      • 2.5.6 if...else多路分支举例
      • 2.5.7 switch...case多路分支
      • 2.5.8 while循环语句
      • 2.5.9 do...while语句
      • 2.5.10 for语句
      • 2.5.11 九九乘法表
      • 2.5.12 判断素数
      • 2.5.13 判断红白黑球个数
  • 3 数组
    • 3.1 初始数组
    • 3.2 创建数组
    • 3.3 数组的基本操作
    • 3.4 常见二维数组操作
    • 3.5 数组排序
      • 3.5.1 冒泡排序
      • 3.5.2 选择排序
      • 3.5.3 插入排序
    • 3.6 常见数组方法
    • 3.7 案例 猴子选大王
    • 3.8 案例 省份城市的三级联动
  • 4 函数
    • 4.1 函数的定义与调用
    • 4.2 变量的作用域
    • 4.3 匿名函数
    • 4.4 嵌套与递归
    • 4.5 闭包函数
  • 5 对象
    • 5.1 面向对象概述
    • 5.2 自定义对象
    • 5.3 构造函数
    • 5.4 内置对象
      • 5.4.1 String对象
      • 5.4.2 Number对象
      • 5.4.3 Math对象
      • 5.4.4 Date对象
  • 6 BOM
    • 6.1 什么是BOM
    • 6.2 window对象
      • 6.2.1 弹出窗口
      • 6.2.2 窗口打开关闭
      • 6.2.3 定时器
      • 6.2.4 限时秒杀
    • 6.3 location对象
    • 6.4 history对象
    • 6.5 navigator对象
    • 6.6 screen对象
    • 6.7 动手实践
      • 6.7.1 限时秒杀
      • 6.7.2 定时跳转
      • 6.7.3 红绿灯倒计时
      • 6.7.4 显示时间与日期
  • 7 DOM
    • 7.1 DOM对象简介
    • 7.2 HTML元素操作
    • 7.3 DOM节点操作
    • 7.4 轮播特效
    • 7.5 购物车实现方法1
      • 7.5.1 购物车结构
      • 7.5.2 购物车样式
      • 7.5.3 购物车业务逻辑
    • 7.6 购物车实现方法2
      • 7.6.1 结构页面
      • 7.6.2 样式
      • 7.6.3 页面逻辑
    • 7.7 京东
  • 8 事件
    • 8.1 事件处理
      • 8.1.1 代码
      • 8.1.2 举例
    • 8.2 事件对象
      • 8.2.1 冒泡处理
      • 8.2.2 target与currentTarget
      • 8.2.3 禁止粘贴、右键、复制、剪切
    • 8.3 事件操作
      • 8.3.1 页面事件
      • 8.3.2 鼠标事件
      • 8.3.3 键盘事件
      • 8.3.4 表单事件
    • 8.4 图片无缝滚动
    • 8.5 看了又看
    • 8.6 放大镜
    • 8.7 商品详情页放大镜效果
      • 8.7.1 页面结构
      • 8.7.2 页面样式
      • 8.7.3 页面逻辑
    • 8.8 飘动的广告
    • 8.9 猜拳游戏
    • 8.10 瀑布流
    • 8.11 手风琴效果
  • 9 正则表达式
    • 9.1 认识正则表达式
    • 9.2 字符类别与集合
    • 9.3 字符限定与分组
    • 9.4 与正则相关的方法
    • 9.5 页面注册
      • 9.5.1 注册页面结构
      • 9.5.2 注册页面样式
      • 9.5.3 注册页面逻辑
    • 9.6 身份证验证
    • 9.7 成员注册
  • 10 初识jQuery
    • 10.1 jQuery课程简介
    • 10.2 jQuery的引入.html
    • 10.3 jQuery实现第一页面
    • 10.4 jQuery对象与DOM对象
    • 10.5 jQuery对象转化成DOM对象
    • 10.6 DOM对象转化成jQuery对象
  • 11 jQuery选择器
    • 11.1 jQuery选择器之ID选择器
    • 11.2 jQuery选择器之类选择器
    • 11.3 jQuery选择器之标签选择器
    • 11.4 jQuery选择器之全局选择器
    • 11.5 jQuery选择器之层级选择器
    • 11.6 jQuery选择器之组合选择器
    • 11.7 jQuery选择器之基本过滤选择器
    • 11.8 jQuery选择器之内容过滤选择器
    • 11.9 jQuery选择器之属性过滤选择器
    • 11.10 ​jQury选择器之可见选择器
    • 11.11 jQuery选择器之表单元素选择器
    • 11.12 jQuery选择器之表单对象属性选择器
    • 11.13 jQuery选择器之子元素过滤选择器
    • 11.14 jQuery子元素过滤选择器补充
    • 11.15 jQuery选择器之特殊选择器$(this)
  • 12 jQuery属性与样式
    • 12.1 jQuery属性与样式之.arrt()与removeAttr()
    • 12.2 jQuery属性与样式之.html()与.text()
    • 12.3 jQuery属性与样式之.val()
    • 12.4 jQuery属性与样式之样式的操作
    • 12.5 jQuery属性与样式之.css()
    • 12.6 jQuery尺寸方法
    • 12.7 jQuery的offset()方法
    • 12.8 jQuery之checkbox各种选中操作
  • 13 jQueryDOM操作
    • 13.1 jQueryDOM的创建
    • 13.2 jQuery元素内插入节点的方法
    • 13.3 jQuery元素外插入节点的方法
    • 13.4 jQuery节点的删除方法
    • 13.5 jQuery节点的复制方法
    • 13.6 jQuery节点的替换方法
    • 13.7 jQuery节点的包裹方法6
  • 14 jQuery遍历
    • 14.1 jQuery遍历祖先节点的方法
    • 14.2 jQuery遍历后代节点的方法
    • 14.3 jQuery遍历同胞节点的方法
    • 14.4 jQuery遍历之基本过滤方法
    • 14.5 jQuery遍历之高级过滤方法
    • 14.6 jQuery实现新闻滚动
    • 14.7 jQuery实现选项卡
  • 15 jQuery效果
    • 15.1 jQuery效果-隐藏与显示
    • 15.2 jQuery效果-逐个显示与隐藏
    • 15.3 jQuery效果-淡入淡出
    • 15.4 jQuery效果-滑动
    • 15.5 jQuery效果-动画
    • 15.6 jQuery效果-手动轮播
    • 15.7 jQuery效果-自动轮播
  • 16 jQuery事件
    • 16.1 jQuery鼠标事件之click与dblclick事件
    • 16.2 jQuery鼠标事件之mousedown与mouseup事件
    • 16.3 jQuery鼠标事件之mouseenter与mouseleave事件
    • 16.4 jQuery鼠标事件之mouseover与mouseout事件
    • 16.5 jQuery鼠标事件之hover
    • 16.6 jQuery鼠标事件之mousemove事件
    • 16.7 jQuery鼠标事件之focusin与focuout事件
    • 16.8 jQuery表单事件之focus与blur事件
    • 16.9 jQuery表单事件之select事件
    • 16.10 jQuery表单事件之submit事件
    • 16.11 jQuery表单事件之change事件
    • 16.12 jQuery事件举例-轮播
    • 16.13 jQuery事件的绑定
    • 16.14 jQuery事件委托
    • 16.15 jQuery事件冒泡的处理
    • 16.16 jQuery键盘事件之keyup、keydown、keypress事件
    • 16.17 通过键盘事件控制元素移动
    • 16.18 通过jQuery键盘事件进行表单元素验证
  • 17 jQuery案例
    • 17.1 jQuery案例一无缝滚动
    • 17.2 jQuery案例二放大镜
    • 17.3 jQuery案例三瀑布流
    • 17.4 jQuery案例四简单的树形菜单
    • 17.5 jQuery案例五居中放大
    • 17.6 jQuery案例六右侧在线客服
    • 17.7 jQuery案例七五星评分
    • 17.8 jQuery案例八抽奖
    • 17.9 jQuery案例九购物车
    • 17.10 jQuery案例十手风琴
    • 17.11 jQuery案例十一轮播
    • 17.12 jQuery案例十二进度条
    • 17.13 jQuery案例十三普通图表
    • 17.14 jQuery案例十三数组图表
    • 17.15 jQuery案例十三多数组图表
    • 17.16 jQuery案例十四轮播与手风琴结合
    • 17.17 jQuery案例十五滚动楼层效果
    • 17.18 jQuery案例十六右侧悬浮楼层滚动
    • 17.19 jQuery仿天猫页面楼层跳转
  • 18 jQueryMoblie基础
    • 18.1 jqueryMoblie HelloWorld
    • 18.2 jQueryMoblie按钮
    • 18.3 jQueryMoblie列表
  • 19 jQuerymobile案例
    • 19.1 作品展示
    • 19.2 可折叠列表
    • 19.3 可折叠集合
    • 19.4 多级折叠
    • 19.5 搜索过滤
  • 20 实训
    • 20.1 JavaScript程序设计实训内容及要求
    • 20.2 实训报告
jQuery案例三瀑布流

一、用纯CSS3实现瀑布流

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>17.3瀑布流</title>

<style>

#main .box img{

width:100%;

}

#main .box{

width:140px;

border:2px solid #CCC;

border-radius:5px;

padding:5px;

}

#main{

-webkit-column-width:154px;

        -moz-column-width:154px; 

}

</style>

</head>


<body>


<div id="main">

<div class="box"><img src="waterFall/1.jpg"></div>

    <div class="box"><img src="waterFall/2.jpg"></div>

    <div class="box"><img src="waterFall/3.jpg"></div>

    <div class="box"><img src="waterFall/4.jpg"></div>

    <div class="box"><img src="waterFall/5.jpg"></div>

    <div class="box"><img src="waterFall/6.jpg"></div>

    <div class="box"><img src="waterFall/7.jpg"></div>

    <div class="box"><img src="waterFall/8.jpg"></div>

    <div class="box"><img src="waterFall/9.jpg"></div>

    <div class="box"><img src="waterFall/10.jpg"></div>

    <div class="box"><img src="waterFall/11.jpg"></div>

    <div class="box"><img src="waterFall/12.jpg"></div>

    <div class="box"><img src="waterFall/13.jpg"></div>

    <div class="box"><img src="waterFall/14.jpg"></div>

    <div class="box"><img src="waterFall/15.jpg"></div>

    <div class="box"><img src="waterFall/16.jpg"></div>

    <div class="box"><img src="waterFall/17.jpg"></div>

    <div class="box"><img src="waterFall/18.jpg"></div>

    <div class="box"><img src="waterFall/19.jpg"></div>

    <div class="box"><img src="waterFall/20.jpg"></div>


    

</div>

</body>

</html>

效果图


二、用jS实现瀑布流


<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>瀑布流</title>

<style>

*{ margin:0; padding:0;}

li{ list-style-type:none;}

img{ border:0;}

#waterFall{ position:relative; margin:0 auto; }

/*.box主要用于定位*/

.box{ float:left; padding:2px;}

.box div{ border:1px solid #CCC; padding:3px; border-radius:5px;}

.box div img{ width:200px; height:auto;}

</style>


<script>

window.onload = function(){waterFall();};

//实现瀑布流函数

function waterFall()

{

//测试waterFall()函数

//alert("测试waterFall()函数!");

//获取文档中对象

//获取waterFall元素

var oWaterFall = document.getElementById('waterFall');

//获取box对象集合

var boxArr = document.getElementsByClassName('box');

//测试boxArr元素的个数

//alert(boxArr.length);

//计算一个盒子的宽度

var boxWidth =boxArr[0].offsetWidth;

//clientWidth= style.width + padding的宽度和

//offsetWidth= clientWidth + border的宽度和 

//console.log(boxWidth);

//获取浏览器可视窗口的宽度

var w = document.documentElement.clientWidth;

//console.log(w);

//计算图片的列数

//Math.floor()是向下取整函数

var cols = Math.floor(w/boxWidth);

//console.log(cols);

//计算oWaterFall宽度= cols*boxWidth

oWaterFall.style.width = cols*boxWidth + 'px';

//console.log(oWaterFall.style.width);

//定义存储列高的数组

//方法1:var hArr = [];

//方法2:

var hArr = new Array();

//hArr数组是cols列

//为hArr赋值并对boxArr对象进行绝对定位

for(var i=0;i<boxArr.length;i++)

{

if(i<cols)

{

//为hArr数组赋初值

//方法1

//hArr[i]=boxArr[i].offsetHeight;

//方法2

hArr.push(boxArr[i].offsetHeight);

//console.log(hArr[i]);

}

else

{

//(1)返回存放列高hArr数组最小值

//方法1:用JS自带方法

//var minHeight = Math.min.apply(null,hArr);

//方法2:自定义方法

var minHeight=minValue(hArr);

//console.log(minHeight);

//(2)返回hArr数组最小值得索引位置

var index = minIndex(hArr,minHeight);

   //console.log(index);

//(3)为boxArr[i]定位

//绝对定位

boxArr[i].style.position='absolute';

//top

boxArr[i].style.top = minHeight + 'px';

//left

//left = index*boxWidth=索引值*列宽

boxArr[i].style.left= boxArr[index].offsetLeft + 'px';

console.log("数组"+hArr+"最小值"+minHeight+"索引"+index)

//(4)更新hArr的列高

hArr[index]+= boxArr[i].offsetHeight;

}

}//end for

}//end waterFall

//返回数组中最小值函数

function minValue(arr)

{

var minVal=arr[0];

//比较过程

for( var i=1;i<arr.length;i++)

{

if(minVal>arr[i])

{

minVal=arr[i];

}

}

return minVal;

}

//返回数组中指定元素的索引位置

//在arr数组中查找value元素得位置,并返还位置

function minIndex(arr,value)

{   

    for(var i in arr)

//for(var i=0;i<arr.length;i++)

{

if(arr[i]==value)

return i;

}

}//end minIndex

</script>


</head>


<body>

<div id="waterFall">

    <div class="box">

        <div><img src="landscapePic/0.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/1.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/2.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/3.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/4.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/5.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/6.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/7.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/8.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/9.jpg"/></div>

        </div>

            <div class="box">

        <div><img src="landscapePic/10.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/11.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/12.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/13.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/14.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/15.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/16.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/17.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/18.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/19.jpg"/></div>

        </div>

            <div class="box">

        <div><img src="landscapePic/20.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/21.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/22.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/23.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/24.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/25.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/26.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/27.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/28.jpg"/></div>

        </div>

        <div class="box">

        <div><img src="landscapePic/29.jpg"/></div>

        </div>

    </div>

</body>

</html>

效果图



三、用jQuery实现瀑布流

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>8.3jQuery案例四瀑布流</title>

<script src="../js/jquery-3.1.1.min.js"></script>

<script>

$(function(){

//定义瀑布流函数

function waterFall(){

//一、计算main的宽度

//分析:main_width = img_width*col_num

//1.计算图片的宽度

var $img0 = $('#main img').eq(0);//获取图片对象

var img_width = $img0.outerWidth(true);

console.log("img的宽度包括margin+border+padding"+img_width);

console.log("img的宽度包括border+padding"+$img0.outerWidth());

console.log("img的宽度包括padding"+$img0.innerWidth());

console.log("img的实际宽度"+$img0.width());

//2.获取浏览器的宽度

var window_width = $(window).width();

console.log("浏览器的宽度为"+window_width);

//3.计算图片列数

var col_num = Math.floor(window_width/img_width);

console.log("图片的列数为"+col_num);

//4.计算main的宽度

var main_width = img_width*col_num;

console.log("main的宽度为"+main_width);

//设置main的宽度

//$('#main').width(main_width);

$('#main').css('width',main_width);

//二、定位图片

//1.定义数组

var hArray = new Array();//定义存放列高的数组

//2.初始化数组

for(i=0;i<col_num;i++){hArray[i]=0;}

//3.定位每一张图片

$('#main img').each(function(index, element) 

{

var index = $(this).index();//图片索引

var minIndex;//数组最小值索引

var t;//图片上偏移量

var l;//图片左偏移量

if(index<col_num){minIndex = index;}

else

{

var minHeight = Math.min.apply(null,hArray);//获取数组中最小值

console.log("数组最小值:"+minHeight);

var minIndex = $.inArray(minHeight,hArray);//获取最小值索引

console.log("最小值索引:"+minIndex);

//$.inArray(值,数组);返回值在数组中的位置

}

l = minIndex*img_width;//图片的左偏移量

t = hArray[minIndex];//图片的上偏移量

$(this).css({'position':'absolute','left':l,'top':t});//定位图片

var img_h = Math.floor($(this).height());//将高度取整

console.log("第"+index+"张图片的高度:"+img_h);

$(this).height(img_h);//重置图片高度

var h = $(this).outerHeight(true);

hArray[minIndex]+=h;//更新高度数组值

});//end each()

}//end waterFall()

//调用waterFall()

waterFall();

//浏览器大小改变后调用waterFall()

$(window).resize(function(){

waterFall();

});

});

</script>

<style>

*{

padding:0;

margin:0;

}

#main{

position:relative;

margin:0 auto;

/*-webkit-column-width:215px;*//*360*/

/*-moz-column-width:215px;*//*火狐*/

}

#main img{

width:200px;

border:solid 1px red;

padding:5px;

margin:0 4px 4px 0;/*top right bottom left*/

}

</style>

</head>


<body>

<div id="main">

    <img src="img3/0.jpg">

        <img src="img3/1.jpg">

        <img src="img3/2.jpg">

        <img src="img3/3.jpg">

        <img src="img3/4.jpg">

        <img src="img3/5.jpg">

        <img src="img3/6.jpg">

        <img src="img3/7.jpg">

        <img src="img3/8.jpg">

        <img src="img3/9.jpg">

        <img src="img3/10.jpg">

        <img src="img3/11.jpg">

        <img src="img3/12.jpg">

        <img src="img3/13.jpg">

        <img src="img3/14.jpg">

        <img src="img3/15.jpg">

        <img src="img3/16.jpg">

        <img src="img3/17.jpg">

        <img src="img3/18.jpg">

        <img src="img3/19.jpg">

        <img src="img3/20.jpg"> 

    </div>

</body>

</html>

效果图


改变浏览器窗口