JavaScript(八)—— PC 端网页特效

本篇为 JavaScript 系列笔记第八篇,将陆续更新后续内容。参考:黑马程序员JavaScript核心教程,前端基础教程

系列笔记:

JavaScript(一)—— 初识JavaScript / 注释 / 输入输出语句 / 变量 / 数据类型

JavaScript(二)—— 运算符 / 流程控制 / 数组

JavaScript(三)—— 函数 / 作用域 / 预解析 / 对象

JavaScript(四)—— 内置对象 / 简单数据类型与复杂类型

JavaScript(五)—— Web APIs 简介 / JavaScript 必须掌握的 DOM 操作

JavaScript(六)—— DOM 事件高级

JavaScript(七)—— BOM 浏览器对象模型
 

文章预览
请添加图片描述

 

「一」元素偏移量 offset


offset 系列相关属性可以 动态的 得到该元素的位置(偏移)、大小等:

  1. 获得元素距离带有定位父元素的位置
  2. 获得元素自身的大小(宽度、高度)
  3. 返回的数值不带单位

offset 系列常用属性如下:
在这里插入图片描述

  • offsetTopoffsetLeft 属性

在这里插入图片描述

  1. 父亲有定位,则以 父亲 为准,返回 45
  2. 父亲无定位,则以 body 为准,返回 195
  • offsetWidthoffsetHeight 属性
  1. 计算数值时包含 paddingborderwidth
  2. 可以动态获取数值,比如浏览器缩小时,数值相应变化
  • offsetParent 属性

在这里插入图片描述

  1. 返回带有定位的父亲,否则返回 body
  2. 与节点操作中 parentNode 相比,parentNode 返回最近一级的父亲,无论父亲是否有定位
  • offset 与 style 区别

offset

  1. offset 可以得到任意样式表中的样式值
  2. offset 系列获得的数值是没有单位的
  3. offsetWidth 包含 padding、border、width
  4. offsetWidth 等属性是只读属性,只能获取不能赋值
  5. 只想获取元素大小位置,offset 更合适

style

  1. style 只能得到行内样式表中的样式值
  2. style.width 获得的是带有单位的字符串
  3. style.width 获得不包含 padding 和 border 的值
  4. style.width 是可读写属性,可以获取也可以赋值
  5. 要想给元素更改值,需要用 style

在这里插入图片描述

  • 案例:获取鼠标在盒子内的坐标
    请添加图片描述
var box = document.querySelector('.box');
box.addEventListener('mousemove', function (e) {
     var x = e.pageX - this.offsetLeft;
     var y = e.pageY - this.offsetTop;
     this.innerHTML = 'x坐标是' + x + ' y坐标是' + y;
 })
 box.addEventListener('mouseout', function () {
     this.innerHTML = '';
 })
  • 案例:模态框拖拽

请添加图片描述

var login = document.querySelector('.login');
var mask = document.querySelector('.login-bg');
var link = document.querySelector('#link');
var closeBtn = document.querySelector('#closeBtn');
var title = document.querySelector('#title');
// 显示
link.addEventListener('click', function () {
    mask.style.display = 'block';
    login.style.display = 'block';
})
// 隐藏
closeBtn.addEventListener('click', function () {
    mask.style.display = 'none';
    login.style.display = 'none';
})
// 拖拽
title.addEventListener('mousedown', function (e) {
    var x = e.pageX - login.offsetLeft;
    var y = e.pageY - login.offsetTop; 
    document.addEventListener('mousemove', move);
    function move(e) {
        login.style.left = e.pageX - x + 'px';
        login.style.top = e.pageY - y + 'px';
    }
    document.addEventListener('mouseup', function () {
        document.removeEventListener('mousemove', move);
    })
})
  1. 鼠标按下 mousedown,获取鼠标在盒子中坐标
  2. 鼠标移动 mousemove,求得模态框的 lefttop
  3. 鼠标弹起 mouseup,移除注册事件 removeEventListener
  • 案例:仿京动放大镜
    请添加图片描述

部分 HTML 代码

<div class="preview_img">
    <img src="img/mac_small.jpg" alt="">	<--小图-->
    <div class="mask"></div>				<--遮罩-->
    <div class="preview_img_big">			<--大图-->
        <img src="img/mac_big.jpg" alt="" class="big_img">
    </div>
</div>

部分 CSS 代码

.preview_img {
    position: relative;
    height: 450px;
    border: 1px solid #ccc;
}

.mask {
    display: none;
    position: absolute;
    left: 0;
    top: 0;
    width: 300px;
    height: 300px;
    background: #FEDE4F;
    opacity: .5;        /* 不透明度 */
    border: 1px solid #ccc;
    cursor: move;       /* 鼠标样式为移动 */
}

.preview_img_big {
    display: none;
    position: absolute;
    left: 450px;
    top: -1px;
    width: 540px;
    height: 540px;
    border: 1px solid #ccc;
    overflow: hidden;
}

.big_img {
    position: absolute;
    top: 0;
    left: 0;
}

JS 代码

window.addEventListener('load', function () {
    var preview_img = document.querySelector('.preview_img');
    var mask = document.querySelector('.mask');
    var big = document.querySelector('.preview_img_big');

    preview_img.addEventListener('mouseover', function () {
        mask.style.display = 'block';
        big.style.display = 'block';
    })

    preview_img.addEventListener('mousemove', move);

    function move(e) {
        var x = e.pageX - this.offsetLeft;
        var y = e.pageY - this.offsetTop;
        // 减去遮罩盒子高度一半 
        var maskX = x - mask.offsetWidth / 2;
        var maskY = y - mask.offsetHeight / 2;
        // 最大移动距离(宽高相等)
        var maskMax = preview_img.offsetWidth - mask.offsetWidth;
        if (maskX <= 0) {
            maskX = 0;
        } else if (maskX >= maskMax) {
            maskX = maskMax;
        }
        if (maskY <= 0) {
            maskY = 0;
        } else if (maskY >= maskMax) {
            maskY = maskMax;
        }
        mask.style.left = maskX + 'px';
        mask.style.top = maskY + 'px';
        // 获得大图片
        var big_img = document.querySelector('.big_img');
        // 最大移动距离
        var bigMax = big_img.offsetWidth - big.offsetWidth;
        var bigX = maskX * bigMax / maskMax;
        var bigY = maskY * bigMax / maskMax;
        big_img.style.left = -bigX + 'px';
        big_img.style.top = -bigY + 'px';
    }

    preview_img.addEventListener('mouseout', function () {
        mask.style.display = 'none';
        big.style.display = 'none';
    })
})

注意:

  1. 若将 js 文件放在 html 上面,注意一定要先加载窗口 window.addEventListener('load', function(){}),否则注册事件绑定为空,出现报错
    在这里插入图片描述
  2. 理解遮罩层和放大图片移动的算法
     

「二」元素可视区 client


通过 client 相关属性可以动态的得到该元素的边框大小、元素大小

在这里插入图片描述

  • client 系列和 offset 系列区别
    在这里插入图片描述
     

「三」元素滚动 scroll


使用 scroll 相关属性可以动态得到该元素的大小、滚动距离等
在这里插入图片描述
在这里插入图片描述

  • onscroll 事件

如果浏览器的高(或宽)度不足以显示整个页面时,会自动出现滚动条,当滚动条向下滚动时,会触发 onscroll 事件

  • 案例:仿淘宝固定右侧侧边栏
    请添加图片描述

部分 HTML 代码
在这里插入图片描述

JS 代码

var sliderbar = document.querySelector('.slider-bar');
var banner = document.querySelector('.banner');
 var bannerTop = banner.offsetTop;
 var sliderbarTop = sliderbar.offsetTop - bannerTop;

 var main = document.querySelector('.main');
 var goBack = document.querySelector('.goBack');
 var mainTop = main.offsetTop;

 document.addEventListener('scroll', function (e) {
     if (window.pageYOffset >= bannerTop) {
         sliderbar.style.position = 'fixed';
         sliderbar.style.top = sliderbarTop + 'px';
     } else {
         sliderbar.style.position = 'absolute';
         sliderbar.style.top = '300px';
     }
     if (window.pageYOffset >= mainTop) {
         goBack.style.display = 'block';
     } else {
         goBack.style.display = 'none';
     }
 })

注意:页面被卷去的头部,有兼容问题,通常有下面几种写法:

  1. 声明了 DTD(<!DOCTYPE html>),使用 document.documentElement.scrollTop
  2. 未声明 DTD,使用 document.body.scrollTop
  3. IE9 开始,新方法 window.pageYOffsetwindow.pageXOffset

 

「四」动画函数


  • 动画实现原理

通过定时器 setInterval() 不断移动盒子位置。实现步骤:

  1. 获得盒子当前位置
  2. 通过定时器不断重复移动单位距离(需要添加定位,使用 element.style.left )
  3. 添加结束定时条件
    请添加图片描述
    在这里插入图片描述
  • 动画函数的封装

可能一个页面中会多次调用动画过程,因此可以将其封装成函数。

注意:函数需要传递 2 个参数,动画对象移动的距离

function animate(obj, target) {
    var timer = setInterval(function () {
        if (obj.offsetLeft >= target) {
            clearInterval(timer);
        }
        obj.style.left = obj.offsetLeft + 2 + 'px';
    }, 10)
}
  • 动画函数给不同元素记录不同定时器

若每次调用都声明 var timer 变量,会造成占用大量内存以及重复命名歧义等问题。因此,这里利用给对象添加属性的方式进行赋值操作 obj.timer,实现了不同元素指定不同定时器
请添加图片描述
在这里插入图片描述

  1. 为避免持续点击导致开启多个定时器,应在函数调用开始时清除所有定时器
  2. 为避免停止后点击还会少量移动问题,在到达指定距离后,return 结束函数调用
  • 缓动效果原理

缓动动画就是让元素运动速度有所变化,最常见的是逐渐降速到停止,使得效果更加自然

算法: 步长 = (目标位置 - 当前位置)/ 10

 var step = (target - obj.offsetLeft) / 10;
 step = step > 0 ? Math.ceil(step) : Math.floor(step);

请添加图片描述
在这里插入图片描述

  1. 避免小数问题导致最后无法运动到指定 target, 这里利用了向上取整
  2. 此外,考虑到后退过程,向上取整也出现了问题。因此需要分类来讨论
    在这里插入图片描述
  • 动画函数添加回调函数

回调函数原理:函数可以作为一个参数,作为传递到另一个函数中

function animate(obj, target, callback) {}	// callback 回调函数

animate(span, 500, function () {})

请添加图片描述
在这里插入图片描述

  • 动画函数封装到单独 JS 文件中

以后会经常使用动画函数,因此可以将其单独封装到一个 JS 文件中,使用时直接引用 JS 文件即可
在这里插入图片描述

  • 案例:滑动盒子
    请添加图片描述
    <div class="sliderbar">
        <span></span>
        <div class="con">问题反馈</div>
    </div>

    <script>
        var sliderbar = document.querySelector('.sliderbar');
        var con = document.querySelector('.con');
        sliderbar.addEventListener('mouseenter', function () {
            animate(con, -160, function () {
                sliderbar.children[0].innerHTML = '→';
            });
        })
        sliderbar.addEventListener('mouseleave', function () {
            animate(con, 0, function () {
                sliderbar.children[0].innerHTML = '←';
            });
        })
    </script>
  1. mouseentermouseleavemouseovermouseout 用法一样,区别在于前者无法冒泡
  2. 注意要引用 animate.js
     

「五」常见网页特效案例


  • 案例:淘宝轮播图
    请添加图片描述

JS 代码主要利用
在这里插入图片描述

  1. animate.js 代码
function animate(obj, target, callback) {
    clearInterval(obj.timer);
    obj.timer = setInterval(function () {
        var step = (target - obj.offsetLeft) / 10;
        step = step > 0 ? Math.ceil(step) : Math.floor(step);
        if (obj.offsetLeft == target) {
            clearInterval(obj.timer);
            callback && callback();
        }
        obj.style.left = obj.offsetLeft + step + 'px';
    }, 15);
}
  1. index.js 代码
window.addEventListener('load', function () {
    var arrow_l = document.querySelector('.arrow-l');
    var arrow_r = document.querySelector('.arrow-r');
    var focus = document.querySelector('.focus');
    var focusWidth = focus.offsetWidth;


    //  鼠标经过 focus 显示隐藏左右按钮
    focus.addEventListener('mouseenter', function () {
        arrow_l.style.display = 'block';
        arrow_r.style.display = 'block';
        // 鼠标经过停止自动轮播
        clearInterval(timer);
        timer = null; // 清除定时器变量
    })
    focus.addEventListener('mouseleave', function () {
        arrow_l.style.display = 'none';
        arrow_r.style.display = 'none';
        timer = setInterval(function () {
            //手动调用点击事件
            arrow_r.click();
        }, 2000);
    })


    // 动态生成小圆圈
    var ul = focus.querySelector('ul');
    var ol = focus.querySelector('.circle');
    for (var i = 0; i < ul.children.length; i++) {
        var li = document.createElement('li');
        // 淘宝源码中 li 中又创建了 a,其实在这里不创建 a 也可以,本案例暂且依淘宝为准
        var a = document.createElement('a');
        // 记录索引
        a.setAttribute('index', i);
        ol.appendChild(li);
        li.appendChild(a);
        // 圆圈绑定事件
        li.addEventListener('focus', function () {
            this.blur();
        })
 
        a.addEventListener('click', function () {
            // 排他思想,被点击的圆圈设置 current 样式
            for (var i = 0; i < ol.children.length; i++) {
                ol.children[i].firstChild.className = '';
            }
            this.className = 'current';

            // 移动图片
            var index = this.getAttribute('index');
            animate(ul, - index * focusWidth);

            // 修改索引
            num = circle = index;
        })
    }
    ol.children[0].firstChild.className = 'current';

    // 克隆第一张图片放在 ul 最后,实现无缝滚动(不复制直接添加的话会多出一个小圆圈)
    var first = ul.children[0].cloneNode(true);
    ul.appendChild(first);
    // 点击右侧按钮, 图片滚动一张
    var num = 0;
    // circle 控制小圆圈的播放
    var circle = 0;
    // flag 节流阀, 防止连续点击造成过快播放
    var flag = true;
    // 右侧按钮
    arrow_r.addEventListener('click', function () {
        if (flag) {
            flag = false; // 关闭节流阀
            // 如果走到最后复制的一张图片,ul 快速复原
            if (num == ul.children.length - 1) {
                ul.style.left = 0;
                num = 0;
            }
            num++;
            animate(ul, -num * focusWidth, function () {
                flag = true; // 打开节流阀
            });
            circle++;
            // 最后一张时复原
            if (circle == ol.children.length) {
                circle = 0;
            }
            // 调用函数
            circleChange();
        }
    })
	// 左侧按钮
    arrow_l.addEventListener('click', function () {
        if (flag) {
            flag = false;
            if (num == 0) {
                num = ul.children.length - 1;
                ul.style.left = - num * focusWidth + 'px';
            }
            num--;
            animate(ul, -num * focusWidth, function () {
                flag = true;
            });
            circle--;
            circle = circle < 0 ? ol.children.length - 1 : circle;
            circleChange();
        }
    })

    // 圆圈变色
    function circleChange() {
        for (var i = 0; i < ol.children.length; i++) {
            ol.children[i].firstChild.className = '';
        }
        ol.children[circle].firstChild.className = 'current';
    }

    // 自动播放轮播图
    var timer = this.setInterval(function () {
        arrow_r.click();
    }, 2000);
})
  1. html 代码、css 代码由于篇幅问题不再给出

遇到的问题

  • 开始写轮播图效果时,遇到点击 li 后出现光标持续闪烁的问题,尝试了各种方法,都没有很好的解决
    在这里插入图片描述
    如上图所示输入光标
  • 最后灵机一动,发现其实这个问题只需要给整个盒子设置 font-size: 0;,即可完美解决

 


  • 案例:动画返回页面顶部

在此前案例中,返回顶部使用的是锚点链接,在此处介绍一种新方式:

window.scroll(x, y)   // 滚动窗口至文档中的指定位置

本案例利用 window.scroll(x, y) 配合动画函数 animate 实现动画返回顶部效果
请添加图片描述

部分 JS 代码

goBack.addEventListener('click', function () {
    // 窗口进行滚动, 对象是 window
    animate(window, 0);
    // window.scroll(0, 0);
});

// 动画函数
function animate(obj, target) {
    clearInterval(obj.timer);
    obj.timer = setInterval(function () {
        var step = (target - window.pageYOffset) / 10;
        step = step > 0 ? Math.ceil(step) : Math.floor(step);
        if (window.pageYOffset == target) {
            clearInterval(obj.timer);
        }
        window.scroll(0, window.pageYOffset + step);
    }, 15);
}

这里注意 animate 函数 将参数改为垂直相关,利用 window.pageYOffset


  • 案例:筋斗云导航
    请添加图片描述
window.addEventListener('load', function () {
    var cloud = document.querySelector('.cloud');
    var c_nav = document.querySelector('.c-nav');
    var lis = c_nav.querySelectorAll('li');

    // 设置变量,记录起始位置
    var current = 0;
    for (var i = 0; i < lis.length; i++) {
        // 鼠标进入,当前 li 位置为目标值
        lis[i].addEventListener('mouseenter', function () {
            animate(cloud, this.offsetLeft);
        })
        // 鼠标离开,回到起始位置
        lis[i].addEventListener('mouseleave', function () {
            animate(cloud, current);
        })
        // 鼠标点击,当前位置设为目标值
        lis[i].addEventListener('click', function () {
            current = this.offsetLeft;
        })
    }
})

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
目录 -------------------------------------------------------------------------------- 第1章 javascript概述 1 1.1 什么是脚本语言 2 1.2 javascript简介 2 1.3 javascript与java的关系 3 1.4 javascript的基本构成 4 1.4.1 基本数据类型 4 1.4.2 变量 4 1.4.3 常量 5 1.4.4 表达式 6 1.4.5 运算符 6 1.5 javascript的基本语法 10 1.5.1 if条件选择语句 10 1.5.2 switch选择语句 11 1.5.3 do…while语句 12 1.5.4 while循环语句 13 1.5.5 for循环语句 14 1.5.6 break语句与continue语句 15 1.6 javascript的函数调用 16 1.6.1 函数的定义与调用 17 1.6.2 全局变量与局部变量 17 1.6.3 可变参数的函数 17 1.6.4 预定义函数 17 1.7 javascript的对象 19 1.7.1 对象的基本概述 19 1.7.2 对象属性 19 1.7.3 创建对象 20 1.7.4 使用对象 22 1.7.5 其他内部对象 24 1.8 小结 26 第2章 javascript中事件. 窗口和框架的处理 27 2.1 事件处理的基本概念 28 2.2 常用事件及处理 28 2.2.1 浏览器事件 29 2.2.2 鼠标事件 29 2.2.3 文本框事件 30 2.2.4 其他事件 31 2.3 什么是框架 31 2.4 使用框架 32 2.5 小结 32 第3章 链接类特效 33 3.1 按时消失的链接 34 3.2 带滚动提示的链接 36 3.3 动态变换的链接 37 3.4 滚动链接 38 3.5 不断闪动的链接 39 3.6 在按钮上定时显示不同的链接 40 3.7 带链接的滚动字幕 42 3.8 单击链接显示菜单 43 3.9 鼠标右键链接 44 3.10 显示当前页的所有链接 45 3.11 查看网址源代码 46 3.12 将站点加入收藏夹 47 3.13 单击按钮返回默认主页 47 3.14 给指定的人员发信 48 3.15 弹出菜单式链接 49 3.16 图片选择器 50 3.17 链接导航框 51 3.18 小球跟踪链接 52 3.19 单击按钮打开全屏窗口 56 3.20 单选按钮选择链接 56 3.21 隐藏的链接 57 3.22 变换链接颜色 58 3.23 固定链接的位置 59 第4章 时间类特效 61 4.1 时间的水中倒影 62 4.2 简单的日历 63 4.3 带有农历的日历 65 4.4 标题栏显示日期 68 4.5 标题栏显示时间 69 4.6 不同时间的不同问候 69 4.7 记录进入网站的时间 70 4.8 页面的最后更新日期 71 4.9 节日倒计时 72 4.10 定时打开指定页面 72 4.11 显示在背景上的时钟 73 4.12 动态显示访问时间 75 4.13 在指定时间内保存页面 76 4.14 离今天最近的两个星期天 78 4.15 记录在网站停留的时间 79 4.16 带开关的时钟 80 4.17 每天显示一条不同的信息 81 4.18 模拟时钟 82 4.19 英文式的文本时钟 84 4.20 关闭页面时弹出时间警告框 85 4.21 显示在按钮上的时间 86 4.22 计算出生时间 88 4.23 计算几天后将是什么日期 92 第5章 鼠标类特效 95 5.1 让鼠标悬停来开关窗口 96 5.2 鼠标的十字星准星 96 5.3 鼠标的文字跟踪 97 5.4 鼠标经过时改变文本颜色 99 5.5 鼠标驱动图片变化 100 5.6 鼠标悬停时背景色改变 101 5.7 鼠标右键弹出对话框 102 5.8 鼠标的图片旋转跟踪 103 5.9 旋转的鼠标光环 105 5.10 跟随鼠标旋转的文字 107 5.11 单击鼠标右键打开网站 109 5.12 跟着鼠标的烟花 109 5.13 跟随鼠标的时钟 111 5.14 屏蔽鼠标右键 115 5.15 跟随鼠标的滚动字幕 116 5.16 鼠标悬停打开新的页面 117 5.17 鼠标的指针踪迹效果 118 5.18 跟随鼠标跳动的星星 119 5.19 冒水泡的鼠标 121 5.20 跟随鼠标的幻影文字 123 5.21 非图片鼠标跟踪 124 5.22 自动变化的鼠标指针 127 5.23 跟随鼠标的流星 128 第6章 图片类特效 133 6.1 鼠标控制图片的明暗效果 134 6.2 来回摆动的图片 134 6.3 随意飘动的图像 136 6.4 随意走动的图片 137 6.5 图片的水中倒影效果 140 6.6 可以随意拖动的图片 140 6.7 “雷达”扫描图片效果 142 6.8 图片的变形效果 143 6.9 会抖动的图片 144 6.10 不停闪烁的图片 146 6.11 图片分割显示 146 6.12 图片穿行页面效果 148 6.13 自由移动的图片 149 6.14 图片代替按钮效果 150 6.15 图片的翻转效果 151 6.16 向外扩展的图片 152 6.17 鼠标悬停改变图片 153 6.18 图片模糊效果 155 6.19 图片的探照灯效果 156 6.20 跟随屏幕移动的图片 157 6.21 图片的模糊显示 158 6.22 图片的渐隐渐现 159 6.23 一堆开放的花朵 160 第7章 文字类特效 165 7.1 闪烁的按钮文字 166 7.2 逐个显示的变色文字.. 167 7.3 垂直滚动的文字 168 7.4 文字的渐隐渐显的效果 169 7.5 文字跳动的效果 170 7.6 状态栏的打字效果 172 7.7 文字的逐条显示 172 7.8 文字的旋转效果 174 7.9 文字的心跳效果 175 7.10 文字在文本框中坠落 176 7.11 文字飞舞的效果 178 7.12 横向移动的跑马灯 181 7.13 可随便移动的文字 182 7.14 水波形的文字 183 7.15 首字母大小写的变化 184 7.16 状态栏文字飞出效果 186 7.17 链接文字的滚动效果 188 7.18 不停变色的文字 189 7.19 文字颜色变化的显示效果 190 7.20 选中文本框中的全部文字 192 7.21 按钮上的滚动文字 193 7.22 从天而降的文字 194 7.23 鼠标悬停显示提示文字 200 第8章 页面类特效 203 8.1 下雨的页面效果 204 8.2 网页中的loading条 206 8.3 页面的制作完成时间 207 8.4 在状态栏显示输入字符的页面 208 8.5 页面的加密功能 209 8.6 调色板更换页面背景 211 8.7 滚动信息公告页面 213 8.8 页面背景的颜色变化 215 8.9 页面背景的随机显示 216 8.10 单击按钮打印当前页面 217 8.11 记录用户的来访次数 218 8.12 可选择的页面信息 219 8.13 文本框消失的页面 220 8.14 随机播放背景音乐的页面 221 8.15 能自动滚屏的页面 222 8.16 密码保护页面 223 8.17 检测ie所装插件的页面 224 8.18 页面向右滚屏 225 8.19 渐渐消失的页面 226 8.20 按钮锁定页面 226 8.21 在线改变背景颜色 227 8.22 雪花纷飞的页面 228 8.23 页面直接显示 230 第9章 窗口类特效 233 9.1 按指定要求打开的窗口 234 9.2 控制窗口的打开和关闭 235 9.3 从天而降的窗口 235 9.4 打开慢慢变大的窗口 236 9.5 打开一个四面变大的窗口 237 9.6 定时打开新的窗口 238 9.7 转动出现的窗口 239 9.8 自动弹出的窗口 241 9.9 自动消失的广告窗口 242 9.10 窗口的震动效果 243 9.11 同时打开10个窗口 244 9.12 检测系统信息窗口 245 9.13 测试链接速度的窗口 248 9.14 关闭窗口打开收藏夹 250 9.15 关闭窗口打开指定地址 250 9.16 显示载入时间的窗口 251 9.17 显示浏览器信息的窗口 252 9.18 显示访客登录信息的窗口 253 9.19 标题渐变的窗口 255 9.20 绝对全屏打开链接网页 257 9.21 打开一个频道窗口 258 9.22 在页面中打开窗口 258 9.23 自动滚动的窗口 259 第10章 其他特效 261 10.1 显示下载进度 262 10.2 打开或关闭隐藏层 263 10.3 打字速度测试 264 10.4 改变图片提示背景颜色 266 10.5 渐变色表格 269 10.6 列表内容相互转换 270 10.7 身体健康测试 273 10.8 网络知识测试 275 10.9 方框线上的闪耀效果 278 10.10 自动隐藏的菜单 281 10.11 自动收缩的菜单 283 10.12 爆炸式菜单链接 285 10.13 显示边框的菜单 287 10.14 右键菜单链接 289 10.15 首页导航菜单 291 10.16 ftp登录页面 292 10.17 html颜色代码表 293 10.18 计算平面上两点之间的距离 294 10.19 测试点击速度 295 10.20 元素周期表 297 10.21 计算器 299 10.22 自信测试 302 10.23 滚动交换链接 304 第11章 javascript与activex技术 311 11.1 activex组件 312 11.1.1 什么是activex组件 312 11.1.2 activex的内容 312 11.1.3 activex控制和internet 312 11.2 activex组件的应用 313 11.2.1 网页中的flash对象 313 11.2.2 flash对象的调用 314 11.3 asp与activex组件 315 11.4 asp与javascript语言 315 11.4.1 脚本语言 316 11.4.2 设置脚本语言 316 11.4.3 服务器的脚本 316 11.4.4 javascript和vbscript的区别 317 11.5 asp与表单处理 317 11.5.1 form数据集合 317 11.5.2 form集合的提交方式 318 11.6 小结 319 第12章 javascript中的数据库调用 321 12.1 数据库的构建 322 12.2 数据库查询语句 323 12.2.1 sql数据库 323 12.2.2 asp中的sql语句 323 12.3 数据库的连接 324 12.3.1 odbc的dsn连接方法 324 12.3.2 odbc的直接连接方法 325 12.3.3 ole db的连接方法 325 12.4 数据库的查询 325 12.4.1 使用connection对象查询数据库 326 12.4.2 使用recordset对象查询数据库 327 12.5 使用javascript访问数据库 330 12.6 小结 331 第13章 综合实例 333 13.1 勇闯迷宫 334 13.2 记忆力游戏 338 13.3 贪吃蛇游戏 342 13.4 打蜜蜂 345 13.5 射击游戏 350 13.6 螃蟹赛跑 353 13.7 数字拼图 358 13.8 填格子游戏 363 13.9 棒球动画 367 13.10 礼花动画 372

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

imByte

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值