JS中加载cssText延时


<!Doctype html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

<style>

* {

padding: 0;

margin: 0;

}

html {

height: 100%;

}

body {

height: 100%;

background: url(img/pic10.jpg) no-repeat;

background-size: cover;

overflow: hidden;

}

.snowLand {

position: absolute;

left: 0;

bottom: 0;

background: white;

width: 100%;

height: 0;

}

</style>

</head>

<body>

<div class="snowLand"></div>

<script>

var screenW = document.documentElement.offsetWidth || document.body.offsetWidth;

var screenH = document.documentElement.offsetHeight || document.body.offsetHeight;

var oBody = document.getElementsByTagName(‘body‘)[0];

var oSnowLand = document.getElementsByClassName(‘snowLand‘)[0];

var snowLandH = 0;

var snowNum = 0;

function getRan(min, max) {

return Math.floor(Math.random() * (max - min + 1)) + min;

}

function Snow(size, l, t, deg, lastTime) {

this.size = size;

this.l = l;

this.t = t;

this.deg = deg;

this.lastTime = lastTime;

}

Snow.prototype.createSnow = function () {

var _this = this;

this.oImg = document.createElement(‘img‘);

this.oImg.src = "img/snowflake.png";

this.oImg.style.cssText = ‘width:‘ + this.size + ‘px;height:‘ + this.size + ‘px;position:absolute;left:‘ + this.l + ‘px;top:‘ + (-this.size) + ‘px;transform:rotate(0deg);transition:all ‘ + this.lastTime + ‘s ease-in;‘;

oBody.appendChild(this.oImg);

setTimeout(function () {

_this.snowFall(_this);

}, 100);//这里延时若是加的不够,就可能出现cssText还没完全加载进去就执行snowfall,于是可能就不会执行transition事件的监听,就会出现图片一直停留在屏幕中的问题

}

Snow.prototype.snowFall = function (_this) {

_this.oImg.style.top = _this.t + ‘px‘;

_this.oImg.style.transform = ‘rotate(‘ + _this.deg + ‘deg)‘;

//因为完成transition的属性有两个,所以不加控制的话会执行两次 oBody.removeChild(_this.oDiv);

_this.flag = true;

_this.oImg.addEventListener(‘transitionend‘, function () {

if (_this.flag == true) {

oBody.removeChild(_this.oImg);

_this.flag = false;

//每10个雪花,升高10px

//console.log(sonwLandH)

if (snowLandH <= 100) {

snowNum++;

snowLandH = parseInt(snowNum / 10) * 10;

oSnowLand.style.height = snowLandH + ‘px‘;

}

}

}, false)

}

setInterval(function () {

for (var i = 0; i < 6; i++) {

var nowSize = getRan(10, 30);

var snow = new Snow(nowSize, getRan(0, screenW - nowSize), screenH + nowSize, getRan(360, 1440), getRan(3, 6));

snow.createSnow();

}

}, 1000);

</script>

</body>

</html>

时间: 2024-10-07 21:33:41

JS中加载cssText延时的相关文章

java使用htmlunit工具抓取js中加载的数据

htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容.项目可以模拟浏览器运行,被誉为java浏览器的开源实现.这个没有界面的浏览器,运行速度也是非常迅速的.采用的是Rhinojs引擎.模拟js运行. 说白了就是一个浏览器,这个浏览器是用Java写的无界面的浏览器,正因为其没有界面,因此执行的速度还是可以滴,HtmlUnit提供了一系列的API,这些API可以干的功能比较多,如表单的填充,表单的提交,模仿点击链接,由于内置了Rhinojs

Arcgis for js,Openlayers中加载GeoJSON

概述: 在前文中,讲述了在JAVA环境下如何将shp转换为GeoJSON,在本文,分别讲述在Arcgis for js,Openlayers2和Openlayers3中加载展示GeoJSON. 实现: 1.Openlayers2中加载GeoJSON 在OL2中,可以直接调用OL2的借口实现GeoJSON的加载,代码示例: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT

JS 动态加载脚本 执行回调[transfer]

JS 动态加载脚本 执行回调 关于在javascript里面加载其它的js文件的问题可能很多人都遇到过,但很多朋友可能并不知道怎么判断我们要加载的js文件是否加载完成,如果没有加载完成我们就调用文件里面的函数是不会成功的.本文讲解怎么在js中加载其它js文件并在加载完成后执行回调函数. 我们可以动态的创建 <script> 元素,然后通过更改它的 src 属性来加载脚本,但是怎么知道这个脚本文件加载完成了呢,因为我们有些函数需要在脚本加载完成生效后才能开始执行. 经过对网络上资源的搜索,我发现

JS 动态加载脚本 执行回调

JS 动态加载脚本  执行回调 关于在javascript里面加载其它的js文件的问题可能很多人都遇到过,但很多朋友可能并不知道怎么判断我们要加载的js文件是否加载完成,如果没有加载完成我们就调用文件里面的函数是不会成功的.本文讲解怎么在js中加载其它js文件并在加载完成后执行回调函数. 我们可以动态的创建 <script> 元素,然后通过更改它的 src 属性来加载脚本,但是怎么知道这个脚本文件加载完成了呢,因为我们有些函数需要在脚本加载完成生效后才能开始执行. 经过对网络上资源的搜索,我发

在HTML文件中加载js

js加载只分为两种: 1.全局js,放在<head>标签里面,整个页面很多都用到的,它是优先加载的. 2.局部js,放在</html>结束标签以内的任何位置,它是第二加载的. 在HTML文件中加载js,布布扣,bubuko.com

前端设计中关于外部js文件加载的速度优化

在一般情况下,许多人都是将<script>写在了<head>标签中,而许多浏览器都是使用单一的线程来加载js文件的,从上往下,从左往右. 若是加载过程出错,那么网页就会阻塞,就像许多网站用Google的CDN库,而我们在墙内访问一样.页面不会出来,一直加载这个js文件,直到浏览器放弃加载为止! 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default

Django中加载js和css文件

Django中加载js和css文件 项目的目录结构如下: mysite |-mysite |-|-static |-|---js和css文件 |-|-|-init.py |-| |-models.py |-| |-views.py |-|-init.py |-|-settings.py |-|-urls.py |-templates |-|-(template html 文件) settings.py中static变量的设置: STATIC_ROOT = os.path.join(os.path

vue中加载three.js的gltf模型

vue中加载three.js的gltf模型 一.开始引入three.js相关插件.首先利用淘宝镜像,操作命令为: cnpm install three //npm install three也行 二.three.js中所有的控件插件,都可以在node_modules下面的three里面找到 三.安装好以后,在页面中引入three.js并使用:在所调用页面引入的代码为 import * as THREE from "three"; import { GLTFLoader } from &

JQuery实现图片的预加载与延时加载

转自:http://www.rjboy.cn/?p=1002 预加载, Js代码   function loadimg(arr,funLoading,funOnLoad,funOnError){ var numLoaded=0, numError=0, isObject=Object.prototype.toString.call(arr)==="[object Object]" ? true : false; var arr=isObject ? arr.get() : arr; f