页面效果简单做(不断收集更新)

简介:有自己写的,也有网上看到的,即使是别人写的也会对其改动,或添加注释,并保持统一的编码风格,便于阅读。目标是不用库即可完成,简单做,能够阐述逻辑和原理清楚即可,因此可能考虑不是最周详的,包括跨浏览器的问题,如果你打算使用在项目中使用最好测试清楚,还可能要进一步修改之。

注意:打算提供在线例子的,但短时间内没有静态空间,所以例子的事情要稍等一阵子。已提供在线例子。

1、简易拖放效果

使用了 DOM 1 的方式登记事件,其实无必要 addEventListener,因为根据鼠标事件,同一时刻通常 document 只有一个 mousemove/mouseup 事件。点击查看例子。

<meta charset="utf-8" />  
<title>拖放 DD</title>  
<script>   
    SimpleDrag = function(el) {  
        this.el = el;  
        this._x = this._y = 0;  
        el.onmousedown = delegate(this, this.start);  
        this.move = delegate(this, this.move);  
          
        function delegate(object, fn){ // 绑定当前 this,并且修正浏览器兼容问题 e ||  window.event
            return function(e) {    
                return fn.call(object, (e || window.event));    
            }  
        }  
    };  
    SimpleDrag.prototype = {  
        start : function(e) {  
            this._x = e.clientX - this.el.offsetLeft;  
            this._y = e.clientY - this.el.offsetTop;  
            document.onmousemove = this.move;  
            document.onmouseup = this.stop;  
        },  
        // 拖动    
        move : function(e) {  
            this.el.style.left = e.clientX - this._x + "px";  
            this.el.style.top  = e.clientY - this._y + "px";  
        },  
        // 停止拖动    
        stop : function() {  
            document.onmousemove = document.onmouseup = null;  
        }  
    };  
</script>  
<style>  
    .dragable{  
        background-color:#C4E3FD;   
        width:50px; height:50px;  
        position:absolute;  
        left: 20px;  
        cursor:move;  
    }  
    .dragEl_1{  
        top : 10px;  
        border:5px solid blue;   
    }  
    .dragEl_2{  
        top : 80px;  
        border:5px solid red;   
    }  
</style>  
<div class="dragable dragEl_1">1</div>    
<div class="dragable dragEl_2">2</div>    
<script>  
    new SimpleDrag(document.querySelector(".dragEl_1"));    
    new SimpleDrag(document.querySelector(".dragEl_2"));    
</script>

2、上下滚动内容

原理是取出最尾元素放到前头。点击查看例子。

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>上下滚动内容</title>
</head>
<body>
	<ul id="scroll">
		<li>11111111111</li>
		<li>22222222222</li>
		<li>33333333333</li>
		<li>44444444444</li>
		<li>55555555555</li>
		<li>66666666666</li>
		<li>77777777777</li>
		<li>88888888888</li>
		<li>99999999999</li>
		<li>00000000000</li>
	</ul>  

	<ol id="scrollA">
		<li>11111111111</li>
		<li>22222222222</li>
		<li>33333333333</li>
		<li>44444444444</li>
		<li>55555555555</li>
		<li>66666666666</li>
		<li>77777777777</li>
		<li>88888888888</li>
		<li>99999999999</li>
		<li>00000000000</li>
	</ol>  

	<script>
		/**
		 * @param {Element} el 列表元素
		 * @param {Number} interval 动画时间间隔
		 * @param {Boolean} canstop 是否可以鼠标移入时候暂停动画
		 */
		function ScrollContent(el, interval, canstop) {
			interval = interval || 3000;
			canstop  = canstop  || false;

			function scroll() {
				var lastEl = el.firstChild;
				while (lastEl.nodeType != 1)  // 找到最后一个元素
					lastEl = lastEl.nextSibling;

				el.appendChild(el.removeChild(lastEl)); // 把最后一个元素放到前头
			}

			var t = window.setInterval(scroll, interval);

			if (canstop) {
				el.onmouseover = function() {
					if (t) window.clearInterval(t);
				}
				el.onmouseout = function() {
					t = window.setInterval(scroll, interval);
				}
			}
		}

		new ScrollContent(document.getElementById(‘scroll‘), 1000);
		new ScrollContent(document.getElementById(‘scrollA‘), 500, true);
	</script>
</body>
</html> 

3、左右滚动内容

原理跟前者一样,只不过是把元素换为字符串,应该是更简单的了。点击查看在线例子。

<meta charset="utf-8" />
<title>水平字幕滚动</title>

<div class="content1">这是一段滚动的文字11111111</div>
<div class="content2">这是一段滚动的文字22222222</div>
<script>
	/**
	 * @param {Element} el 列表元素
	 * @param {Number} interval 动画时间间隔
	 * @param {Boolean} canstop 是否可以鼠标移入时候暂停动画
	 */
	function ScrollContent_Hoz(el, interval, canstop) {
		interval = interval || 500;
		canstop  = canstop  || false;
		var arr = el.innerHTML.split("");
		function scroll() {
			arr.push(arr.shift());
			el.innerHTML = arr.join("");
		}

		var t = window.setInterval(scroll, interval);

		if (canstop) {
			el.onmouseover = function() {
				if (t) window.clearInterval(t);
			}
			el.onmouseout = function() {
				t = window.setInterval(scroll, interval);
			}
		}
	}

	new ScrollContent_Hoz(document.querySelector(‘.content1‘));
	new ScrollContent_Hoz(document.querySelector(‘.content2‘), null, true);
</script>

3、多级联动下拉菜单

联动本身并无多大难点,只是 onchange 事件的运用即可。值得一提的是这个演示了日历控件所涉及的日历生成算法——当然这是后话了。点击查看在线例子。

<meta charset="UTF-8">
<title>联动 Select 下拉</title>
<select id="year">
	<option value="0">--请选择--</option>
</select>年
<select id="month">
	<option value="0">--请选择--</option>
</select>月
<select id="day">
	<option value="0">--请选择--</option>
</select>日

<script>
	function initSelect(selectEl, i, end) {
		selectEl.length = 1;
		for (; i <= end; i++) {
			try {
				selectEl.add(new Option(i, i), null);
			} catch (e) {
				selectEl.add(new Option(i, i));
			}
		}
	}
	var year = document.getElementById("year");
	var month = document.getElementById("month");
	var day = document.getElementById("day");

	initSelect(year, 1970, 2012);

	year.onchange = function() {
		if (this.value != 0) {
			initSelect(month, 1, 12);
		} else {
			month.length = 1;
			day.length = 1;
		}
	}
	month.onchange = function() {
		if (this.value != 0) {
			var m30 = {
				2 : 1,
				4 : 1,
				6 : 1,
				9 : 1,
				11 : 1
			};
			if (this.value == 2) { // 二月份特别处理
				if (isLeapYear(year.value))
					 initSelect(day, 1, 29);
				else initSelect(day, 1, 28);
			} else if (this.value in m30) // 三十天的月份
			/*
			因为2、4、6、9、11月份都是30天,如果把它们放在一个数组中,那么还要遍历来判断是否相等,则比较麻烦了,于是在这里把这些都当成对象来处理,使用 in 判断即可
			*/
					 initSelect(day, 1, 30);
			else 	 initSelect(day, 1, 31);
		} else day.length = 1;
	}
	// 判断闰年的条件:能被4整除且不能被100整除 或 能被100整除且能被400整除
	function isLeapYear(y) {
		return (y % 4 == 0 && y % 100 != 0)
			|| (y % 100 == 0 && y % 400 == 0);
	}
</script>

http://www.zgwlsc.net/lstore/static/src/widget/carousel/main.js

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-03 10:02:57

页面效果简单做(不断收集更新)的相关文章

HTML与CSS简单页面效果实例

本篇博客实现一个HTML与CSS简单页面效果实例 index.html 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Insert title here</title> 6 <link href="style.css" rel="stylesheet" type="t

在页面切换时使用RxJava持续更新UI界面

欢迎Follow我的GitHub, 关注我的CSDN. 在应用开发中, 我们需要使用后台任务更新前台界面, 不因页面切换而导致重新开始, 或因某些任务阻塞界面刷新, 比如显示下载或播放进度等. 为了追求更优质的用户体验, 需要大量使用后台任务, 常见的就是异步任务(AsyncTask)和后台服务(Service), 当然还有RxJava. 我写了一个示例, 来讲讲如何使用这些常用的后台方式. 主要 (1) 使用异步任务和后台服务更新页面, 避免内存泄露. (2) 使用RxJava的时间间隔\延迟

ASP.NET 数据库页面访问简单工具

在工作中,有很多项目已上线后,很多项目的数据库服务器都不会对外开放的,外网想直接访问客户数据库服务器时,可能会出现困难. 这时就需要一个可以查询,更新数据库操作的页面了: 本来用sql语句直接操作数据库数据是不好的,所以此页面工具只针对已经非常熟悉数据库结构的人来使用,因为可以执行更新/修改语句,请慎用. 目前没对这个页面做任何的访问限制,出于对数据的安全性考虑,强烈建议对本页面的访问做访问限制处理! <%@ Page Language="C#" %> <%@ Imp

stark组件开发之组合搜索页面效果和 URL

页面效果,只是样式.这个好解决!yield 的时候. 返回几个样式出去就好了! 并且前端写上一些样式的css {% if search_group_row_list %} <div class="panel panel-default"> <div class="panel-heading"> <i class="fa fa-filter" aria-hidden="true"></i

北易信息:网站每个页面都需要做优化吗

如今越来越多企业都选择用SEO优化的技巧来优化企业网站,为了网站能够有靠前的排名,都会针对企业的网站制定优化方案.但企业能做好优化的并不多,原因有很多,比如经常看到有些企业的网站就只给首页做了优化,其他页面都是没有针对性的优化,今天为大家分享:网站每个页面都需要做优化吗. 那么在给网站做优化的时候,需要每个页面都做优化,可以偷懒不做优化吗? 一.网站页面TDK 1.网站首页 网站首页的TDK非常重要,切记需要定位好网站的未来方向,与网站的内容,用户的需求,网站首页的TDK都是主要关键词. 2.网

新产品为了效果,做的比较炫,用了很多的图片和JS,所以前端的性能是很大的问题,分篇记录前端性能优化的一些小经验。

第一篇:HTTP服务器 因tomcat处理静态资源的速度比较慢,所以首先想到的就是把所有静态资源(JS,CSS,image,swf) 提到单独的服务器,用更加快速的HTTP服务器,这里选择了nginx了,nginx相比apache,更加轻量级, 配置更加简单,而且nginx不仅仅是高性能的HTTP服务器,还是高性能的反向代理服务器. 目前很多大型网站都使用了nginx,新浪.网易.QQ等都使用了nginx,说明nginx的稳定性和性能还是非常不错的. 1. nginx 安装(linux) htt

Android平台Camera实时滤镜实现方法探讨(十)--代码地址以及简单介绍(20160118更新)

简单做了个相机和图片编辑模块,时间原因非常多功能还没有做.尚有BUG,见谅,将在以后抽时间改动 代码地址 PS:请点个Star^-^ ----------------------------------------------------------------------------------------------------------------- 简单介绍: 1.眼下包括Instagram中19个滤镜,比如amaro,branan,earlybird,freud,hefe,lomo,

iOS开发之剖析&quot;秘密&quot;App内容页面效果

最近在玩"秘密",发现点击主界面的Cell进去后的页面效果不错,就写了个Demo来演示下. 它主要效果:下拉头部视图放大,上拉视图模糊而且到一定位置固定不动,其他Cell可以继续上移. @封装的主要效果类:MTHeadEffect.m(.h文件省略,很简单的) #import "MTHeadEffect.h" #import <QuartzCore/QuartzCore.h> #import <Accelerate/Accelerate.h>

jQuery oLoader实现的加载图片和页面效果

oLoader使用方法 不管是oLoader还是oPageLoader都是基于jQuery,所以调用前请先加载jquery库,作者已经将两个插件集成到一起:jquery.oLoader.min.js,已经打包好请戳源码下载. 调用jQuery oLoader非常简单,一句话如下: [js] view plaincopy $('#element').oLoader(); 使用oLoader加载图片: [js] view plaincopy $(function(){ $('img').oLoade