bom第二天

2017.3.29  dom第二天

复习前一天的内容:

bom对象:

顶级对象:window;

控制历史记录:history;

获取客户端浏览器信息:navigator;

控制地址栏:location;

定时器(计时器):

setInterval:每隔一段时间就执行一次函数中的代码;

清理计时器的方法:clearInterval(定时器ID);

setTimeout:隔多长时间之后执行函数中的代码,只执行一次;

clearTimeout(定时器ID);

二、

offset系列:元素自身的宽高和位置

offsetLeft:元素距离左边的距离;

offsetTop:元素距离上边的距离;

offsetWidth:元素的宽度(有边框);

offsetHeight:元素的高度(有边框);

三、

scroll系列:卷曲出去的距离

scrollLeft:向左滚出去的距离

scrollTop:向上滚出去的距离;

scrollWidth:元素内容实际的宽度(实际内容小于或者等于元素内宽度就是元素的宽度,没有边框);

scrollHeight:(元素内容实际的高度);

今天内容:

一、点击按钮移动元素---缓动动画:

function animate(element,target){

clearInterval(element.timeId);

// 为了可以让清除的定时器只清除当前的盒子  不会影响别的盒子      如果用timer  会存在覆盖现象当调用多个盒子的时候 会发生覆盖

element.timeId=setInterval(function(){

//获取当前位置

var current=element.offsetLeft;

//每次移动的步数

var step=(target-current)/10;

//每次移动的步数都是整数(比较大的数字);

step=step>0?Math.ceil(step):Math.floor(step);

current+=step;

//移动后的当前的像素

element.style.left=current+"px";

if(current==target){

//到达目标后停止计时器

clearInterval(element.timeId);

}

console.log("target:"+taret+",current:"+current+",step:"+step);

},30);

}

二、//获取样式计算后的值

function getStyle(element,attr){

return element.currentStyle?element.currentStyle[attr]:window.getComputedStyle(element,null)[attr];

}

//缓动动画函数增加任意多个属性和回调函数及层级和透明度

function animate(element,json,fn){

clearInterval(element.timeId);

element.timeId=setInterval(function(){

var flag=true;

for(var attr in json){

if(attr=="opacity"){

var current=getStyle(element,attr)*100;

var target=json[attr]*100;

//每次移动的步数

var step=(target-current)/10;

step=step>0?Math.floor(step);

current+=step;

element.style[attr]=current/100;

}else if(attr=="zIndex"){

element.style[attr]=json[attr];

}else{

var current=parseInt(getStyle(element,attr));

var target=json[attr];

var step=(target-current)/10;

step=step?0?Math.ceil(step) : Math.floor(step);

current += step;//移动后的当前的像素

element.style[attr] = current + "px";

}

if (current != target) {//到达目标后停止计时器

flag=false;

}

}

if(flag){

clearInterval(element.timeId);//清理计时器

if(fn){

fn();

}

}

console.log("target:" + target + ",current:" + current + ",step:" + step);

}

},30);

}

my$("btn1").onclick = function () {

animate(my$("dv"),{"left":200,"top":300,"width":400,"height":500,"opacity":0.2},function () {

animate(my$("dv"),{"left":100,"top":100,"width":100,"height":100,"opacity":0.9});

});

三、//图片跟着鼠标飞

//关于事件参数对象的工具的代码

var evtTools={

evt:function(e){

return window.event?window.event:e;

},

//页面向左卷曲出去的距离

left:function(){

return window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft||0;

},

//页面向上卷曲出去的距离

top:function(){

return window.pageYOffset||document.scrollTop||document.documentElement.scrollTop||0;

},

//事件参数对象中的属性封装

//可视区域的横坐标

clientX:function(e){

return this.evt(e).clientX;

},

clientY:function(e){

return this.evt(e).clientY;

},

pageX:function(e){

return this.evt(e).pageX?this.evt(e).pageX:this.left()+this.clientX(e);

},

pageY:function(e){

return this.evt(e).pageY?this.evt(e).pageY:this.pop()+this.clientY(e);

}

};

document.onmousemove=function(e){

my$("im").style.left=evtTools.pageX(e)-my$("im").offsetWidth/2-100+"px";

my$("im").style.top=evtTools.pageY(e)-my$("im").offsetHeight/2+200+"px";

};

四 旋转木马案例

<script>

//数组--每一个数组元素都是一个键值对的对象

var config = [

{

width: 400,

top: 20,

left: 50,

opacity: 0.2,

zIndex: 2

},//0

{

width: 600,

top: 70,

left: 0,

opacity: 0.8,

zIndex: 3

},//1

{

width: 800,

top: 100,

left: 200,

opacity: 1,

zIndex: 4

},//2

{

width: 600,

top: 70,

left: 600,

opacity: 0.8,

zIndex: 3

},//3

{

width: 400,

top: 20,

left: 750,

opacity: 0.2,

zIndex: 2

}//4

];

//页面加载事件

window.onload=function(){

var flag=true;//锁头

//让所有图片全部散开

//获取所有的li标签

var list=my$("slide").children[0].children;

function assign(){

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

animate(list[i],config[i],function(){

flag=true;

});

}

}

assign();//把图片散开

//点击右边按钮

my$("arrRight").onclick=function(){

if(flag){

flag=false;

config.push(config.shift());

assign();

}

};

//点击左边按钮

my$("arrLeft").onclick=function(){

if(flag){

flag=false;

config.unshift(config.pop());

assign();

}

};

//显示和隐藏左右焦点的按钮 div

my$("wrap").onmouseover=function(

animate(my$("arrow"),{"opacity":1});

);

my$("wrap").onmouseout=function(){

animate(my$("arrow"),{"opacity":0});

};

};

</script>

<div class="wrap" id="wrap">

<div class="slide" id="slide">

<ul>

<li><a href="#"><img src="images/slidepic1.jpg" /></a></li>

<li><a href="#"><img src="images/slidepic2.jpg" /></a></li>

<li><a href="#"><img src="images/slidepic3.jpg" /></a></li>

<li><a href="#"><img src="images/slidepic4.jpg" /></a></li>

<li><a href="#"><img src="images/slidepic5.jpg" /></a></li>

</ul>

<div class="arrow" id="arrow">

<a href="javascript:;" class="prev" id="arrLeft"></a>

<a href="javascript:;" class="next" id="arrRight"></a>

</div>

</div>

</div>

五.响应式布局的原理

//当浏览器的宽度发生变化,就获取浏览器(页面可视区域的宽度)

function getClient(){

return{

width:window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth||0,

height:window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight||0

}

}

六.总结三大系列:

offsetLeft:元素距离左边的距离

offsetTop:元素距离上边的距离

offsetHeight:元素的高度(有边框)

offsetWidth:元素的宽度(有边框)

scroll系列:

scrollLeft:元素向左滚出去的距离

scrollTop:元素向上滚出去的距离

scrollWidth:元素内容实际的宽度

scrollHeight:元素内容实际的高度

client系列:

clientX:在可视区域的横坐标

clientY:在可视区域的纵坐标

clientWidth:可视区域的宽度

clientHeight:可视区域的高度

时间: 2024-10-12 19:18:14

bom第二天的相关文章

JavaScript高级程序设计--01

第一章 JavaSript概论 1.什么是JavaScript. 具有面向对象能力的,解释型的程序设计语言. 2.JavaScript的特点. 松散性 对象属性 继承机制(基于原型) 3.JavaScript核心 核心(ECMAScript) 文档对象模型(DOM) 浏览器对象模型(BOM) 第二章 使用JavaScript 1.创建一张HTML页面 <!DOCTYPE HTML> <html lang="en"> <head> <meta c

R自动数据收集第二章HTML笔记2(主要关于htmlTreeParse函数)

包含以下几个小的知识点 1htmlTreeParse函数源码和一些参数 2hander的写法 3关于missing函数 4关于if-else语句中else语句的花括号问题 5关于checkHandlerNames函数 6关于GeneralHandlerNames属性 7关于match函数 8关于inherits函数 9关于on.exit函数 ==============================================================================

第八章 BOM

BOM: 提供很多对象,用于访问浏览器的功能.BOM的核心对象是window,表示浏览器的一个实例.在浏览器中,window既是JS访问浏览器窗口的接口,又是JS规定的Glo对象. var age = 29; function sayAge() { console.log(this.age); } console.log(window.age); sayAge(); // 29 // 29 全局变量与在window对象上直接定义属性的区别,在于全局变量不能通过delete操作符删除,window

JavaScript BOM

JavaScript特性: 交互性 安全性(不可以直接访问本地硬盘) 跨平台性(只要是可以解析js的浏览器都可以执行,和平台无关) JavaScript三大核心: 1)核心(ECMAScript):描述了JS的语法和基本对象. 2)文档对象模型 ☆(DOM):处理网页内容的方法和接口 3)浏览器对象模型(BOM):与浏览器交互的方法和接口 BOM对象: 1. DOM 是 W3C 的标准: [所有浏览器公共遵守的标准] 2. BOM 是 各个浏览器厂商根据 DOM 在各自浏览器上的实现;[表现为不

轻松学习JavaScript十七:JavaScript的BOM学习(二)

JavaScript计时事件 通过使用JavaScript中的BOM对象中的window对象的两个方法就是setTimeout()方法和claerTimeout()方法,我们 有能力作到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行.我们称之为计时事件. 在JavaScritp中使用计时事件是很容易的,两个关键方法是: setTimeout()//未来的某时执行代码. clearTimeout()//取消setTimeout(). (1)setTimeout()方法 语法 va

高程第8章 BOM 8.1window对象

8.1 window对象 BOM的核心对象是window,它表示浏览器的一个实例.在浏览器中,window即是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象.这意味着在网页中定义的任何一个对象,变量和函数,都以window作为其Global对象,因此有权访问parseInt()等方法. 8.1.1 全局作用域 所有在全局使用域中声明的变量,函数都会变成window对象的属性和方法. var age=29; function sayAge(){ c

JavaScript高级程序设计:第8/9/10/11章 BOM与DOM

一.BOM 1. 什么是BOM? BOM(Browser Object Mode) 是指浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的.可以与浏览器窗口进行互动的对象结构.BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象. 2. Window对象 2.1 框架与窗口关系 Window对象是指当前代码所存在的框架实例,在没有引入框架的情况下指的是浏览器窗口.同时需要了解其他窗口关系: Window

JavaScript中 BOM操作方法以及递归算法案例

BOM:window操作对象 一.间隔执行与延迟执行   间隔执行一段代码(函数):window.setInterval("执行的代码",间隔毫秒数): <html> <body> <span id="s1"></span><br /> <span id="s2"></span><br /> <input type="button&qu

JS中的函数、Bom、DOM及JS事件

本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的声明及调用] 1.函数声明的格式: function 函数名(参数1,参数2,参数3,--){//函数体 return 结果; } >>>函数的调用格式: 直接调用:函数调用的格式:函数名(参数一的值,参数二的值,--): 事件调用:事件名=函数名( ); 2.函数声明的几点强调: ①函数名