叶子网络bbs论坛
标题: javascirpt 特效编程 [打印本页]
作者: rain 时间: 2014-10-14 21:48
标题: javascirpt 特效编程
本帖最后由 rain 于 2014-10-18 00:41 编辑
先来个最基础的js入门程序,往后就省略开头,直接写中间部分内容。
<script type="text/javascript">
document.write("Hellow World !");
</script>
一、自动刷新页面
方法一:<meta http-equiv="refresh" content="20"> 每20秒刷新一次
方法二:用js写
<script type="text/javascript">
function fresh(){
window.location.reload();
}
setTimeout('fresh()',20000); //自动刷新定时器
</script>
//reload()函数的作用是让浏览器刷新当前网页。
作者: rain 时间: 2014-10-17 16:10
本帖最后由 rain 于 2014-10-17 16:13 编辑
二、写个让页面前进和后退的按钮
1、js部分
//前进
function goForward(){window.history.forward();}
//后退
function goBack(){window.history.back();}
2、网页部分写好按钮
<input type="button" value="前进" onclick="goForward()"/>
<input type="button" value="后退"/>
效果
ps:history 对象里,还有一个go()函数,用正负值表示,例如go(1)表示前进一页。
作者: rain 时间: 2014-10-17 21:35
本帖最后由 rain 于 2014-10-17 21:41 编辑
三、关闭页面按钮
1、js
function closeWin(){window.close();}
2、css
<input type="button" value="关闭窗口" onclick=closeWin()/> //onclick 动作省去了“”,防止代码干扰
单击按钮,则该页面关闭
作者: rain 时间: 2014-10-18 00:22
本帖最后由 rain 于 2014-10-18 02:31 编辑
四、页面载入等待界面
1、js
function submitForm(){
var doing = document.getElementById('doing'); //获取界面的dom
doing.style.display=' '; //取消隐藏
self.location.reload(); // 重新刷新页面
}
2、css
<div id="doing" style="z-index:99; left:0px;top:0px;display:none; width:100%; position:absolute;height:100%;background:#ccc;">
载入中,请等待。。。。
</div>
<p>
<input type="button" value="提交表单" />
</p>
点击按钮时出现等待提示,提交完成后恢复页面
作者: rain 时间: 2014-10-18 02:25
五、若干秒后不操作自动关闭窗口
var willClose = true; //定义一个是否关闭的全局变量
function clickBody(){
willClose = false; //单击网页后,把变量置为false
}
setInterval ( function() {
if (willClose){
window.close(); //关闭窗口
}else{
willClose = true ;
}
},10000); // 10秒后才执行该函数
setInterval() 用来记时和进行重复操作。本例中是10秒后执行第一个参数。
作者: rain 时间: 2014-10-18 03:05
六、修改网页标题
1、js
function changeTitle(){
var newTitle=document.getElementById('newTitle').value; //得到新的Title值
document.title=newTitle; //修改标题
}
2、css
<input type="text" name="newTitle" id="newTitle" value="" />
<input type="button" value="修改标题" />
在这里输入内容,点击按钮,则页面标题就改掉了
作者: rain 时间: 2014-10-18 03:51
本帖最后由 rain 于 2014-10-18 04:04 编辑
七、禁止网页放入框架
防止网页被随意地引入到别人的框架里。
if(self != top){ //判断当前页是否为最顶层框架的网页
top.location.href=self.location.href; //如果不是,则进行跳转
}
top和self是否等同,可以作为网页是否在一个框架中打开的判断标准。
作者: rain 时间: 2014-10-18 04:02
本帖最后由 rain 于 2014-10-18 04:04 编辑
八、跳转到其它页面
function changURL(){
var newURL = document.getElementById('newURL').value; //得到新的url值
self.location.href=newURL; //通过修改地址栏的地址来跳转到新的网页地址
下面写个输入组件就可以了
如果网页处于一个框架当中,那么这样的跳转仅限于框架里,而不是整个窗口。如果整个窗口跳转,应把self换成window。
作者: rain 时间: 2014-10-18 04:07
九、进入页面时的问候
alert('欢迎您的光临'); //弹出对用户的问候
可以放在</html>后边
作者: rain 时间: 2014-10-18 05:12
十、在网页里动态加载javascript
function loadJs(){
var theHead = document.getElementsByTagName('head').item(0); //得到html的头部dom
var myScript = document.createElement('script'); //创建脚本的dom对象实例
myScript.src='./myjs.js'; //指定脚本路径
myScript.type='text/javascript'; //指定脚本类型
myScript.defer=true; //程序下载完后再解析和执行
theHead.appendChild(myScript); //把dom挂载到头部
}
定义按钮
<input type="button" value="动态加载JS" onclick=loadJS() />
作者: rain 时间: 2014-11-13 15:55
<html>
<head>
<title>从下往上的信息滚动特效</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript">
var timer = null; //定时器
//页面加载完成的事件回调
function init(){
var time = 30; //定义滚动的时间间隔,毫秒
//获取容器的DOM
var container = document.getElementById('container');
var d1 = document.getElementById('con1');
var d2 = document.getElementById('con2');
d2.innerHTML = d1.innerHTML //把第二个容器的内容填充为第一个
function MyMarquee(){ //定义滚动的函数
//如果d2的高度已经超过最大的限制
if(d2.offsetHeight <= container.scrollTop)
//把容器的滚动条恢复到最初的位置
container.scrollTop -= d1.offsetHeight;
else{
//滚动条的位置往top移动一个像素
container.scrollTop++;
}
}
timer = setInterval(MyMarquee,time);//开始一个定时执行
container.onmouseover=function() { //定义鼠标放上事件
clearInterval(timer); //结束滚动
}
container.onmouseout=function() { //定义鼠标移出事件
timer=setInterval(MyMarquee,time);//再次开始
}
}
</script>
</head>
<body style="text-align:center" onLoad="init();">
<div id="container" style="overflow:hidden;height:100px;">
<table align="left" cellpadding="0" cellspace="0" border="0">
<tr>
<td id="con1" valign="top">
<img src="1.jpg"><img src="1.jpg"><img src="1.jpg">
</td>
</tr>
<tr>
<td id="con2" valign="top"></td>
</tr>
</table>
</div>
</body>
</html>
作者: rain 时间: 2014-11-13 16:47
本帖最后由 rain 于 2014-11-13 20:27 编辑
<html>
<head>
<title>可以拖动的层</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript">
var isOver = false; //是否正在移动的标志变量
var l = 0; //left变量
var t = 0; //top变量
//监听网页加载完成的事件
function init(){
//获取层box的DOM
var boxTitle = document.getElementById('boxTitle');
boxTitle.onmousedown = mouseDown; //设置mousedown事件
boxTitle.onmousemove = mouseMove; //设置mousemove事件
boxTitle.onmouseup = mouseUp; //设置mouseup事件
}
//定义box的鼠标按下事件
function mouseDown(event){
var e = event; //定义事件e变量
x = e.clientX; //得到事件发生的x坐标
y = e.clientY; //得到事件发生的y坐标
//得到box的左上角的坐标
l = parseInt(document.getElementById("box").style.left);
t = parseInt(document.getElementById("box").style.top);
isOver=true; //把正在移动变量设置为true
}
function mouseMove(event){
if(isOver){ //当正在移动的时候
var e = event; //得到事件变量e
//得到box的DOM
var box = document.getElementById("box");
var newleft = l + e.clientX - x;//计算新的left的值
var newtop = t + e.clientY - y; //计算新的top的值
box.style.left = newleft + "px";//设置新的left值,带上单位
box.style.top = newtop + "px"; //设置新的top值,带上单位
}
}
function mouseUp(event){ //鼠标按下释放事件
if(isOver){
isOver = false; //设置变量为false
}
}
</script>
<style>
</style>
</head>
<body style="text-align:center">
<div id="box" style="border: 1px solid black; position: absolute; left: 200px; top: 100px; width: 300px; height: 200px; z-index: 99;">
<h4 align="right" id="boxTitle" style="margin: 0px; padding: 3px; background-color: black; opacity: 0.75; border: 1px solid black; height: 18px; cursor: pointer;">
<span style="float:left; color:white;">这里是标题栏</span></h4>
<div id="boxMsg">这是一个可拖动的层</div>
</div>
</body>
</html>
作者: rain 时间: 2014-11-13 17:39
本帖最后由 rain 于 2014-11-13 17:43 编辑
<html>
<head>
<title>广告图切换特效</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript">
var currIndex = 1;
function init(){
var length = 5;
for(var i = 0; i < length; i++)
{
document.getElementById('slideshow_footbar').innerHTML += '<div class="slideshow-bt" index="'+(length-i)+'"></div>';
}
var btns = document.getElementsByClassName('slideshow-bt');
btns[length-1].className += ' bt-on';
for(var i=0;i<btns.length;i++){
btns.onclick=function(){
slideTo(this.attributes['index'].value);
};
}
setInterval(function(){
if(currIndex + 1 > 5)
currIndex = 0;
slideTo(currIndex + 1);
},3000);
}
function slideTo(index){
index = parseInt(index);
var picArr = document.getElementById('slideshow_photo').childNodes;
for(var i=0;i<picArr.length;i++){
if(picArr.attributes
&& picArr.attributes['index']
&& parseInt(picArr.attributes['index'].value)==index){
picArr.style.zIndex = 2;
currIndex = index;
}else if(picArr.attributes
&& picArr.attributes['index']){
picArr.style.zIndex = 1;
}
}
var btns = document.getElementsByClassName('slideshow-bt');
for(var i=0;i<btns.length;i++){
if(parseInt(btns.attributes['index'].value) == index){
btns.className = 'slideshow-bt bt-on';
}else{
btns.className = 'slideshow-bt';
}
}
}
</script>
<style>
#slideshow_wrapper {
POSITION: relative;
PADDING-BOTTOM: 0px;
BACKGROUND-COLOR: #121212;
PADDING-LEFT: 0px;
WIDTH: 650px;
PADDING-RIGHT: 0px;
HEIGHT: 400px;
OVERFLOW: hidden;
PADDING-TOP: 0px
}
#slideshow_footbar {
Z-INDEX: 5;
POSITION: absolute;
FILTER: alpha(opacity=50);
WIDTH: 100%;
BOTTOM: 0px;
HEIGHT: 30px;
background-color: black;
opacity:0.5;
}
#slideshow_photo {
POSITION: absolute;
WIDTH: 100%;
HEIGHT: 100%;
CURSOR: pointer
}
#slideshow_photo A {
Z-INDEX: 1;
BORDER-BOTTOM: 0px;
POSITION: absolute;
BORDER-LEFT: 0px;
MARGIN: 0px;
DISPLAY: block;
BORDER-TOP: 0px;
TOP: 0px;
BORDER-RIGHT: 0px;
LEFT: 0px
}
#slideshow_footbar .slideshow-bt {
BACKGROUND-COLOR: #d2d3d4;
MARGIN: 10px 10px 0px 0px;
WIDTH: 10px;
DISPLAY: inline;
FLOAT: right;
HEIGHT: 10px;
FONT-SIZE: 0px
}
#slideshow_footbar .bt-on {
BACKGROUND-COLOR: #30b1eb
}
</style>
</head>
<body style="text-align:center">
<DIV id="slideshow_wrapper">
<DIV id="slideshow_photo">
<A target="_blank" style="Z-INDEX: 2" href="#" index="1"><IMG border=0 src="2.jpg"></A>
<A target="_blank" style="Z-INDEX: 1" href="#" index="2"><IMG border=0 src="3.jpg"></A>
<A target="_blank" style="Z-INDEX: 1" href="#" index="3"><IMG border=0 src="3.jpg"></A>
<A target="_blank" style="Z-INDEX: 1" href="#" index="4"><IMG border=0 src="3.jpg"></A>
<A target="_blank" style="Z-INDEX: 1" href="#" index="5"><IMG border=0 src="3.jpg"></A>
</DIV>
<DIV id="slideshow_footbar"></DIV>
</DIV>
</body>
</html>
作者: rain 时间: 2014-11-13 20:26
本帖最后由 rain 于 2014-11-13 20:45 编辑
绕死人的浮动框
<html>
<head>
<title>悬浮的广告层</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript">
function goScroll(o){
var space=document.getElementById(o).offsetTop;
document.getElementById(o).style.top=space+'px';
var goTo = 0;
window.setInterval(function(){
var height =document.documentElement.scrollTop+document.body.scrollTop+space;
var top = parseInt(document.getElementById(o).style.top);
if(height!= top){
goTo = height-parseInt((height - top)*0.9);
document.getElementById(o).style.top=goTo+'px';
}
},50);
}
function init(){
goScroll('con1');
}
</script>
<style>
#con1{
background-color:gray;
left: 0px;
top: 100px;
width:100px;
height:100px;
position: absolute;
z-index = 1;
}
</style>
</head>
<body style="text-align:center">
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<div id="con1">
这是一个广告
</div>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</body>
</html>
document.body.scrollTop与document.documentElement.scrollTop两者有个特点,就是同时只会有一个值生效。比如document.body.scrollTop能取到值的时候,document.documentElement.scrollTop就会始终为0;反之亦然。所以,如果要得到网页的真正的scrollTop值,可以这样:
var sTop=document.body.scrollTop+document.documentElement.scrollTop;
这两个值总会有一个恒为0,所以不用担心会对真正的scrollTop造成影响。
作者: rain 时间: 2014-11-17 17:29
<html>
<head>
<title>让表格行的背景颜色间隔开</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript">
//为表格改变样式的函数
function chCell(){
//获取DOM
var tbl = document.getElementById('tbl');
var rows = tbl.rows; //得到当前的表格的row数组
var len = tbl.rows.length; //当前的行数
for(var i=1;i<len;i++){ //遍历所有行
var r = rows[i]; //当前行
r.onmouseover = function(){ //定义鼠标移入事件
//把背景色变成粉红色
this.style.backgroundColor = 'pink';
};
r.onmouseout = function(){ //定义鼠标移出事件
//把背景色变回白色
this.style.backgroundColor = 'white';
};
}
}
</script>
</head>
<body style="text-align:center" onLoad="chCell();">
<table id="tbl" align="center" border="1">
<tr>
<th>名字</th>
<th>年龄</th>
</tr>
<tr>
<td>A</td>
<td>12</td>
</tr>
<tr>
<td>B</td>
<td>11</td>
</tr>
<tr>
<td>C</td>
<td>15</td>
</tr>
</table>
</body>
</html>
作者: rain 时间: 2014-11-17 22:11
带下拉菜单的导航栏
<html>
<head>
<title>二级导航菜单</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script src="jquery.js"></script>
<script type="text/javascript">
//使用jquery的加载回调函数开始定义菜单的功能
$(function(){
var menus = $('.menu a'); //得到菜单下所有的链接
for(var i=0;i<menus.length;i++){//遍历这些链接
var m = menus[i]; //得到当前的链接
$(m).mouseover(function(){ //为菜单链接定义onmouover事件
//得到当前鼠标移入的菜单项的下标
var index = $('.menu a').index(this);
$('.sub_menu').hide(); //把所有的二级菜单隐藏
$('.sub_menu').eq(index).show();//显示当前下标的菜单项
//并且计算出这个菜单项应该处于的定位位置
$('.sub_menu').eq(index).css('margin-left',(100*index)+'px');
});
}
});
</script>
<style>
.menu{
list-style: none;
width: 400px;
margin: 10px auto 0;
padding:0;
}
.menu li{
float:left;
width:98px;
border:1px solid black;
}
.menu a{
color:black;
width:100%;
}
.menu a:hover{
background-color:pink;
}
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.sub_menu{
border:1px solid black;
width: 100px;
padding:0;
display: none;
margin:0;
}
.sub_div{
width: 400px;
margin: 0 auto;
}
</style>
</head>
<body style="text-align:center">
<ul class="menu clearfix">
<li><a href="#">菜单</a></li>
<li><a href="#">菜单</a></li>
<li><a href="#">菜单</a></li>
<li><a href="#">菜单</a></li>
</ul>
<div class="sub_div">
<ul class="sub_menu">
<li><a href="#">菜单</a></li>
</ul>
<ul class="sub_menu">
<li><a href="#">菜单</a></li>
<li><a href="#">菜单</a></li>
</ul>
<ul class="sub_menu">
<li><a href="#">菜单</a></li>
</ul>
<ul class="sub_menu">
<li><a href="#">菜单</a></li>
<li><a href="#">菜单</a></li>
<li><a href="#">菜单</a></li>
</ul>
</div>
</body>
</html>
作者: rain 时间: 2014-11-24 14:52
动态加载导航菜单
<html>
<head>
<title>动态加载的导航菜单</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script src="jquery.js"></script>
<script type="text/javascript">
var arr = []; //定义数据数组变量
//为菜单指定数据,包含了名字和URL
arr[0] = [{name:'菜单1',url:'#'},{name:'菜单11',url:'#'}];
arr[1] = [{name:'菜单2',url:'#'}];
arr[2] = [{name:'菜单3',url:'#'},{name:'菜单31',url:'#'},{name:'菜单32',url:'#'}];
//在jquery的加载回调函数里操作
$(function(){
//定义菜单的html内容,以ul打头
var html = '<ul class="menu clearfix">';
//根据数组变量的长度,开始串联第一级菜单
for(var i=0;i<arr.length;i++){
html += '<li><a href="#">菜单'+(i+1)+'</a></li>';
}
html += '</ul>';
//第一级菜单组合完成
//开始组合二级菜单
html += '<div class="sub_div clearfix">';
//使用两次循环开始串联第二级菜单
for(var i=0;i<arr.length;i++){
var a = arr[i];
html += '<ul class="sub_menu">';//使用sub_menu的ul
for(var j=0;j<a.length;j++){
var item = a[j]; //得到数据
//拼接字符
html += '<li><a href="'+item['url']+'">'+item['name']+'</a></li>';
}
html += '</ul>'; //完成ul
}
html += '</div>'; //完成全部的菜单html
$('body').append(html); //挂接在body里
//开始指定菜单的功能
var menus = $('.menu a'); //得到菜单下所有的链接
for(var i=0;i<menus.length;i++){//遍历这些链接
var m = menus[i]; //得到当前的链接
$(m).mouseover(function(){ //为菜单链接定义onmouover事件
//得到当前鼠标移入的菜单项的下标
var index = $('.menu a').index(this);
$('.sub_menu').hide(); //把所有的二级菜单隐藏
$('.sub_menu').eq(index).show();//显示当前下标的菜单项
//并且计算出这个菜单项应该处于的定位位置
$('.sub_menu').eq(index).css('margin-left',(100*index)+'px');
});
}
});
</script>
<style>
.menu{
list-style: none;
width: 300px;
margin: 10px auto 0;
padding:0;
}
.menu li{
float:left;
width:98px;
border:1px solid black;
}
.menu a{
color:black;
width:100%;
}
.menu a:hover{
background-color:pink;
}
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.sub_menu{
border:1px solid black;
width: 100px;
padding:0;
display: none;
margin:0;
float:left;
}
.sub_div{
width: 305px;
margin: 0 auto;
}
</style>
</head>
<body style="text-align:center">
</body>
</html>
作者: rain 时间: 2014-11-24 14:53
三级联动导航菜单
<html>
<head>
<title>三级联动导航菜单</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script src="jquery.js"></script>
<script type="text/javascript">
var arr = []; //定义数据数组变量
//为菜单指定数据,包含了名字和URL
arr[0] = [{name:'菜单1',url:'#'},{name:'菜单11',url:'#'}];
arr[1] = [{name:'菜单2',url:'#'}];
arr[2] = [{name:'菜单3',url:'#'},{name:'菜单31',url:'#'},
{name:'菜单32',url:'#',child:[
{name:'菜单321',url:'#'}
]}]; //包含了子菜单
//在jquery的加载回调函数里操作
$(function(){
//定义菜单的html内容,以ul打头
var html = '<ul class="menu clearfix">';
//根据数组变量的长度,开始串联第一级菜单
for(var i=0;i<arr.length;i++){
html += '<li><a href="#">菜单'+(i+1)+'</a></li>';
}
html += '</ul>';
//第一级菜单组合完成
//开始组合二级菜单
html += '<div class="sub_div clearfix">';
//使用两次循环开始串联第二级菜单
for(var i=0;i<arr.length;i++){
var a = arr[i]; //得到当前的数据
html += '<ul class="sub_menu">';//拼接二级菜单项
var sub_count = 1; //开始计数id
for(var j=0;j<a.length;j++){ //遍历
var item = a[j]; //得到数据
var sub = ''; //定义拼接有子菜单的class属性
if(item['child']) //如果包含了子属性,则定义class
sub = 'sub sub_'+j+'_'+sub_count++;
//拼接动态的第二级菜单的字符
html += '<li><a href="'+item['url']+'" class="'+sub+'" index="'+j+'">'+item['name']+'</a></li>';
}
html += '</ul>'; //完成第二级菜单
var sub_count = 1; //开始为三级菜单的id计数
for(var j=0;j<a.length;j++){ //遍历第三级菜单
var item = a[j]; //得到数据
if(item['child']){ //如果包含三级菜单
var b = item['child']; //得到子菜单项的数据
//拼接第三层的字符
html += '<ul class="third_menu" id="'+'sub_'+j+'_'+sub_count+++'">';
//遍历第三层的数据变量
for(var k=0;k<b.length;k++){
html += '<li><a href="'+b[k]['url']+'">'+b[k]['name']+'</a></li>';
}
html += '</ul>'; //完成第三层
}
}
}
html += '</div>'; //完成全部的菜单html
$('body').append(html); //挂接在body里
var menus = $('.menu a'); //得到菜单下所有的链接
for(var i=0;i<menus.length;i++){//遍历这些链接
var m = menus[i]; //得到当前的链接
$(m).mouseover(function(){ //为菜单链接定义onmouover事件
//得到当前鼠标移入的菜单项的下标
var index = $('.menu a').index(this);
$('.sub_menu').hide(); //把其他二级菜单隐藏
$('.third_menu').hide();//三级也隐藏
$('.sub_menu').eq(index).show();//显示对应的二级菜单
//计算二级菜单应该定位的位置
$('.sub_menu').eq(index).css('margin-left',(100*index)+'px');
});
}
//为包含第三级菜单的二级菜单定义onmouseover事件
$('.sub').mouseover(function(){
//得到它的class属性
var className = $(this).attr('class');
//得到第三级菜单的id值
var subId = className.split(' ')[1];
$('#'+subId).show(); //显示第三级菜单
var index = $(this).attr('index');//得到它的下标
//计算第三级菜单显示的坐标位置
$('#'+subId).css('margin-top',(parseInt(index)*20)+'px');
});
});
</script>
<style>
.menu{
list-style: none;
width: 500px;
margin: 10px auto 0;
padding:0;
}
.menu li{
float:left;
width:98px;
border:1px solid black;
}
.menu a{
color:black;
width:100%;
}
.menu a:hover{
background-color:pink;
}
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.sub_menu{
border:1px solid black;
width: 100px;
padding:0;
display: none;
margin:0;
float:left;
}
.sub_div{
width: 505px;
margin: 0 auto;
}
.third_menu{
display:none;
float: left;
border:1px solid black;
width: 100px;
padding:0;
margin:0;
}
</style>
</head>
<body style="text-align:center">
</body>
</html>
欢迎光临 叶子网络bbs论坛 (http://xuanfly.com/) |
Powered by Discuz! X3.3 |