Js_Data對象,定時器,腳本化css

Date 對象

Date 對象用於處理日期和時間。

var myDate=new Date()

註釋:Date 對象會自動把當前日期和時間保存爲其初始值。
貼個鏈接 自個看看文檔,當字典用
點這看data()

getTime()

獲取時間戳,記錄時刻

求時間差

var firstTime=new Date().getTime();
for(var i=0;i<1000000;i++){
	
}
var lastTime=new Date().getTime();
console.log(lastTime-firstTime);

在這裏插入圖片描述

定時器

setInterval
循環定時器,每隔多少毫秒一直執行這個函數

  • 每隔10毫秒一直執行這個函數(循環定時器)
setInterval(function() {},10);

  • 首先識別time爲 1000,它只識別一次,然後一直執行函數,後來改變time就沒用了
var time = 1000;
setInterval(function() {},time);
time = 2000;
  • setInterval是非常不準的。 setInterval底層是基於紅黑樹的

window.setInterval,它是window上的,裏面函數的this指向window

  • setInterval有返回值,它會返回數字就是第幾個定時器,作爲它的唯一標識
var timer = setInterval(function () {}, 1000);
var timer2 = setInterval(function () {}, 1000);
console.log(timer)//1
console.log(timer2)//2
  • clearInterval(timer),那麼清除定時器的時候它會利用唯一標識;
var timer = setInterval(function () {
	//想讓它停止就加上
	clearInterval(timer);
}, 1000);

setTimeout
setTimeout推遲多少毫秒再執行前面的函數,並且只執行一次

var time =  setTimeout(function () {}, 1000)
clearTimeOut(time);

全是window上的方法,裏面函數的this都指向window
setInterval(“conso.log(‘a’)”, 1000)它有另外的一種特殊的形式,把字符串裏面的內容當做js代碼在執行

設置一個計時器

<body>
	minutes:<input type="text" value="0">
	seconds:<input type="text" value="0">
</body>
input{
	border: 1px solid rgba(0,0,0,0,8);
	text-align: right;
	font-size: 20px;
	font-weight: bold;
	
}
// JavaScript Document
var minutesNode = document.getElementsByTagName('input')[0];
var secondsNode = document.getElementsByTagName('input')[1];
var minutes = 0, //設置兩個初始值爲0
	seconds = 0;

var timer = setInterval(function () { //開啓定時器
	seconds++; //seconds每10毫秒加1
	if (seconds === 60) { //當seconds一直增加到等於60的時候
		seconds = 0; //seconds清空等於0
		minutes++; //然後miutes加上1
	}
	secondsNode.value = seconds; //secods == secondsNode裏面的value
	minutesNode.value = minutes; //minutes == minutesNode裏面的value
	if (minutes === 5) { //當minutes一直增加到等於5的時候
		clearInterval(timer); //清理定時器,停止運行!!!
	}
}, 10);

獲取窗口屬性

1.查看滾動條滾動距離
ie9以上及其它瀏覽器

window.pageXOffset / pageYOffset

得到的數值就是(橫向或者豎直)滾動條滾動的距離。

ie8以及ie8以下

document.body.scrollLeft / top
document.documentElement.scrollLeft

兼容性比較混亂,用時取兩個值想加,因爲不可能存在兩個同時有值
(document.body.scrollLeft/scrollTop如果有值,那麼documentElement.scrollLeft/scrollTop一定爲0)

封裝兼容性方法,求滾動輪滾動的距離getScrollOffset()
解決不兼容的問題

function getScrollOffSet () {
	if(window.pageOffset) {
		return {
	    	x : window.pageXOffset,
	    	y : window.pageYOffset
	    }
	}else{
		return {
	    	x : document.body.scrollLeft + documentElement.scrollLeft,
	    	y : document.body.scrollTop + documentElement.scrollTop
	    }
	}
}	

2.查看視口的尺寸

ie8和ie8以下不兼容

window.innerWidth /window.innerHeight

標準模式下,任意瀏覽器都兼容

document.documentElement.clientWidth/clientHeight

怪異模式下

 document.body.clientWidth,
 document.body.clientHeight

瀏覽器的渲染模式:

ie標準模式 如聲明<!DOCTYPE html> 表示以h5文檔

ie怪異模式(混雜模式),html文檔不帶 <!DOCTYPE html> 使當前代碼支持以前的瀏覽器版本
查看瀏覽器處於什麼模式document.compatMode//css1Compat(標準模式)/BackCompat(怪異模式)

解決不兼容問題:

function getViewPortOffset () {
    if(window.innerWidth) {
        return{
            w : window.innerWidth,
            h : window.innerHeight
        }
    }else{
        if(document.compatMode === "BackCompat") {
            return{
                w : document.body.clientWidth,
                h : document.body.clientHeight
            }
        }else{
            return{
                w : document.documentElement.clientWidth,
                h : document.documentElement.clientHeight
            }
        }
    }

3.查看元素的幾何尺寸
getBoundingClientRect();
兼容性很好

該方法返回一個對象,對象裏面有left,top,right,bottom等屬性
left和top代表元素左上角的x和y座標,right和bottom代表元素右下角的x和y座標

var box=document.getElementById('box');         // 獲取元素
 
alert(box.getBoundingClientRect().top);         // 元素上邊距離頁面上邊的距離
 
alert(box.getBoundingClientRect().right);       // 元素右邊距離頁面左邊的距離
 
alert(box.getBoundingClientRect().bottom);      // 元素下邊距離頁面上邊的距離
 
alert(box.getBoundingClientRect().left);        // 元素左邊距離頁面左邊的距離

返回的結果不是實時的

<div style = "width : 100px; height:100px; background-color: red; position: absolute;left: 100px; top: 100px;"></div>

var div = document.getElementsByTagName('div')[0];
console.log(div.getBoundingClientRect());

查看元素的尺寸
offsetWidth /offsetHeight 包含 padding的寬高,不含margin
查看元素的位置
offsetLeft /offsetTop //對於無定位父級的元素,返回相對文檔的座標,對有定位父級的元素,返回相對應於最近有定位的父級的座標。
dom.offsetParent
返回最近有定位的父級,如果沒有,返回body,body.offsetParent 返回null

例如:求元素相對於文檔的座標 getEmentPosition

4.讓滾動條滾動
window上有三個方法

scroll();

scrollTo();

scrollBy()
三個方法功能類似,用法都是將x,y座標傳入,實現讓滾動輪滾動到當前位置
但是scrollBy() 會在之前的數據基礎之上做累加,可用於做快速閱讀功能

<script>
function scrollWindow(){
	window.scrollBy(500,500);
}
</script>
<body>

<input type="button" onclick="scrollWindow()" value="滾動條" />
<p>滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 </p>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<p>滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 </p>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<p>滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 </p>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<p>滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 </p>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<p>滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 </p>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<p>滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 </p>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<p>滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 </p>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<p>滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 滾動 </p>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

</body>

點擊按鈕滾動500像素

腳本化css

讀寫元素css的屬性

dom.style.prop

可讀寫行間樣式,沒有兼容性問題,碰到float這樣的保留字屬性前面應加css
例如:float---------cssFloat

複合屬性必須拆解,組合單詞變成小駝峯式寫法
寫入的值必須是字符串格式
它是唯一一個可讀寫的方式,但是它只能作用於行間樣式,就是說只能讀出/寫入行間樣式的屬性值

 <style type = "text/css">
    div{
        width: 200px;
    }
 </style>

<div style = " height: 100px;background-color: rgb(90, 80, 80); position:absolute;left: 0;top:0; "></div>

var div = document.getElementsByTagName('div')[0];
console.log(div.style.width)//""爲空

window.getComputedStyle(ele,null)
獲取當前元素一切css展示的顯示值

  • 查詢計算樣式
  • 計算樣式可讀
  • 返回計算樣式的值絕對都是絕對值,沒有相對單位
  • ie8以及ie8以下不兼容

getComputedStyle()
第二個參數通常情況下爲null,但是也可以放上僞元素,來獲取它的僞元素的尺寸

 window.getComputedStyle(div,"after");//獲取僞元素唯一的方法
console.log(window.getComputedStyle(div,"after").width)

ele.currentStyle

  • 查詢樣式
  • 計算樣式可讀
  • 返回的計算樣式的值不是經過轉換的絕對值
  • ie獨有的屬性
  • 封裝兼容性方法 getStyle(elem.prop)

在這裏插入圖片描述解決不兼容問題:

function getStyle(elem, prop) {
    if(window.getComputedStyle) {
        return window.getComputedStyle(elem,null)[prop];
    }else{
        return elem.currentStyle[prop];
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章