摘要: 和单链表类似,只不过是增加了一个指向前面一个元素的指针而已。示意图:python 实现代码:#!/usr/bin/python# -*- coding: utf-8 -*-class Node(object): def __init__(self,val,p=0): self.data = val self.next = p self.prev = pclass LinkList(object): def __init__(self): self.head = 0 def __getitem__(self, key): ... 阅读全文
posted @ 2013-11-08 10:35 yupeng 阅读(9580) 评论(0) 推荐(0) 编辑
摘要: 链表的定义: 链表(linked list)是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址。由于每个结点都包含了可以链接起来的地址信息,所以用一个变量就能够访问整个结点序列。也就是说,结点包含两部分信息:一部分用于存储数据元素的值,称为信息域;另一部分用于存储下一个数据元素地址的指针,称为指针域。链表中的第一个结点的地址存储在一个单独的结点中,称为头结点或首结点。链表中的最后一个结点没有后继元素,其指针域为空。 如下图所示:单链表的结构:单链表的插入和删除示意图:python实现代码:#!/usr/bin/python# -*- coding.. 阅读全文
posted @ 2013-11-08 10:17 yupeng 阅读(76642) 评论(3) 推荐(2) 编辑
摘要: 算法简要: 追加直接往列表后面添加元素,插入是将插入位置后的元素全部往后面移动一个位置,然后再将这个元素放到指定的位置,将长度加1删除是将该位置后面的元素往前移动,覆盖该元素,然后再将长度减1 #!/usr/bin/python# -*- coding: utf-8 -*-class SeqList(object): def __init__(self,maxsize): self.maxsize = maxsize self.data = range(maxsize) self.last = len(self.data) -1 def... 阅读全文
posted @ 2013-11-03 16:37 yupeng 阅读(3104) 评论(3) 推荐(1) 编辑
摘要: 什么是生成器? 生成器是一个包含了特殊关键字yield的函数。当被调用的时候,生成器函数返回一个生成器。可以使用send,throw,close方法让生成器和外界交互。生成器也是迭代器,但是它不仅仅是迭代器,拥有next方法并且行为和迭代器完全相同。所以生成器也可以用于python的循环中,如何使用?首先看一个例子: 1 #!/usr/bin/python 2 # -*- coding: utf-8 -*- 3 4 def flatten(nested): 5 for sublist in nested: 6 for element in sublist: 7 ... 阅读全文
posted @ 2013-10-11 18:20 yupeng 阅读(1314) 评论(0) 推荐(1) 编辑
摘要: 什么是迭代器? 迭代器是带有next方法的简单对象,当然也要实现__iter__函数。迭代器能在一序列的值上进行迭代,当没有可供迭代时,next方法就会引发StopIteration 的异常。python中有很多的对象都是迭代器,例如:列表,元素,字符串,文件,映射,集合如何使用迭代器?1. for 变量 in 可迭代对象例如:list1 = [1,2,3,4,5]for ele in list1: print ele,结果为:1 2 3 4 52. if 变量 in 可迭代对象例如:list1 = [1,2,3,4,5]var = 1if var in list1: print... 阅读全文
posted @ 2013-10-11 16:56 yupeng 阅读(543) 评论(1) 推荐(1) 编辑
摘要: #!/usr/bin/env python## Copyright 2009 Facebook## Licensed under the Apache License, Version 2.0 (the "License"); you may# not use this file except in compliance with the License. You may obtain# a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by app 阅读全文
posted @ 2013-10-10 23:08 yupeng 阅读(10328) 评论(0) 推荐(0) 编辑
摘要: 什么是python的装饰器? 网络上的定义: 装饰器就是一函数,用来包装函数的函数,用来修饰原函数,将其重新赋值给原来的标识符,并永久的丧失原函数的引用。 在google上搜索下python 装饰器 可以搜索到很多关于很多的关于装饰器的文章,一个很简单,最能说明装饰器的例子如下:#-*- coding: UTF-8 -*-import time def foo(): print 'in foo()' # 定义一个计时器,传入一个,并返回另一个附加了计时功能的方法def timeit(func): # 定义一个内嵌的包装函数,给传入的函数加上计时功能的包装 ... 阅读全文
posted @ 2013-10-10 22:22 yupeng 阅读(1109) 评论(0) 推荐(0) 编辑
摘要: 在前面的例子用,我用了BeautifulSoup来从58同城抓取了手机维修的店铺信息,这个库使用起来的确是很方便的。本文是BeautifulSoup 的一个详细的介绍,算是入门把。文档地址:http://www.crummy.com/software/BeautifulSoup/bs4/doc/什么是BeautifulSoup?Beautiful Soup是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。它可以大大节省你的编程时间。直接看例子:#!/usr 阅读全文
posted @ 2013-10-10 19:39 yupeng 阅读(109721) 评论(0) 推荐(6) 编辑
摘要: 在python中,对正则表达式的支持是通过re模块来支持的。使用re的步骤是先把表达式字符串编译成pattern实例,然后在使用pattern去匹配文本获取结果。其实也有另外一种方式,就是直接使用re模块的方法,但是这样就不能使用编译后的pattern实例了。实例:#!/usr/bin/python# -*- coding: utf-8 -*-import repat = re.compile(r'hello')match = pat.match('hello world!')if match: print match.group()match1 = re.ma 阅读全文
posted @ 2013-10-10 11:21 yupeng 阅读(1547) 评论(0) 推荐(0) 编辑
摘要: 之前在ququ的博客上看到说 python 中的BeautifulSoup 挺好玩的,今天下午果断下载下来,看了下api,挺好用的,完了2把,不错。晚上写了一个使用python抓取58手机维修信息的精准的商家信息:废话不多说了,直接上代码:#!/usr/bin/python# -*- coding: utf-8 -*-import urllibimport os,datetime,stringimport sysfrom bs4 import BeautifulSoupreload(sys)sys.setdefaultencoding('utf-8')__BASEURL__ = 阅读全文
posted @ 2013-10-01 00:32 yupeng 阅读(1866) 评论(0) 推荐(1) 编辑
摘要: 1、关于i++python 中的没有 i++ ,如果写了会报语法错误。但是python 中有 --i,++i,+-i,-+i,他们不是实现-1操作的,仅仅是作为判断运算符号,类似数学中的负负得正i = 2print ++i //2print -+i //-2print +-i //-2print --i //22、逻辑表达式python 中没有 && ,!, || 这3个运算符,在逻辑表达式中写成这3个会抱逻辑错误的。要实现同样的功能,要写成 and,not,or返回值 2 and 3 返回3返回值 2 or 3 返回2返回值 not 2 and 3 返回 False 阅读全文
posted @ 2013-09-29 16:24 yupeng 阅读(17101) 评论(0) 推荐(0) 编辑
摘要: 1.map(function,sequence) 对sequence 中的item依次执行function(item),见执行结果组成一个List返回例如:#!/usr/bin/python# -*- coding: utf-8 -*-def add100(x): return x+100hh = [10,11,12]print(map(add100,hh))def abc(a,b,c): return a*1000+b*100+clist1 = [11,22,33]list2 = [44,55,66]list3 = [77,88,99]print(map(abc,list1,li... 阅读全文
posted @ 2013-09-29 16:01 yupeng 阅读(6656) 评论(0) 推荐(0) 编辑
摘要: 1、关于函数 1)不需要指定返回类型,不需要指定是否有返回值,每个函数都有返回值,没有的话,就返回None 2)参数也可以不指定类型,可以有默认参数,但是必须放到最后,调用的时候指定参数的值,和顺序无关 3)支持lamda方式2、关于数据类型 python 是一种动态数据类型的语言,在运行期间才去确定数据类型的语言 python 是一种强类型的语言,如果不执行强制转换,不能将一种类型当做另外一种类型的。所以python 是一种动态数据类型,又是一种强类型的语言,一个类型一经确定,后面就一直是这个类型了。 阅读全文
posted @ 2013-09-27 07:37 yupeng 阅读(670) 评论(0) 推荐(0) 编辑
摘要: html5 现在支持全屏特性了,fullscreen api接口如下所示(使浏览器窗口全屏),见下列代码:(1)全屏 // Find the right method, call on correct elementfunction launchFullScreen(element) { if(element.requestFullScreen) { element.requestFullScreen(); } else if(element.mozRequestFullScreen) { element.mozRequestFullScreen(); } else if(e... 阅读全文
posted @ 2013-06-13 11:41 yupeng 阅读(2796) 评论(1) 推荐(0) 编辑
摘要: 记录一下:1.arguments是一个对象, 是函数的一个特性,只有在函数内才具有这个特性,在函数外部不用使用。举例:function test(){ alert(typeof arguments); //object } alert(typeof arguments); //undefined2.callee,callercallee 表示当前正在使用的函数,例如 arguments.callee 表示testcaller 表示当前函数的调用者,如果在最顶层 那么就为 null ,如 test() 为 null ;test2() 为testfunction test(){ aler... 阅读全文
posted @ 2012-09-07 19:02 yupeng 阅读(772) 评论(1) 推荐(2) 编辑
摘要: 本文参考:http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/#singletonpatternjavascript目录: 1)什么是单例 2)使用场景 3)类比 3)举例什么是单例? 单例要求一个类有且只有一个实例,提供一个全局的访问点。因此它要绕过常规的控制器,使其只能有一个实例,供使用者使用,而使用着不关心有几个实例,因此这是设计者的责任 In JavaScript, Singletons serve as a shared resource namespace which isolate im... 阅读全文
posted @ 2012-09-06 16:15 yupeng 阅读(2752) 评论(0) 推荐(0) 编辑
摘要: 昨天在帮mac用户解决一个不能登录的问题的时候,去现场是使用的safari浏览器,之前没调试过safari,所以临阵磨枪,当场学习了下safari下的调试,感觉safari也很好使,现在记录下:如何开启safari调试?safari默认是不开启的。1)点击设置-偏好设置2)选择高级3)刷新浏览器,右键4)出现了你所熟悉的框框好了。下面你就可以调试了。 阅读全文
posted @ 2012-08-28 10:01 yupeng 阅读(32149) 评论(0) 推荐(1) 编辑
摘要: 由于公司的业务比较多,设计到客户端和web端的,关于不能登录的问题也各种各样,今天和fulong总结了一下web端不能登录的一些原因,所有问题都来源于现场分析,然后总结的问题不能登录的原因,有以下几种:1)https证书不受信任2)第三方cookie被禁用3)不支持创建xmlhttpRequest4)本地时间不正确5)域名被劫持下面来分析一下是怎么判断上述问题的:1)https证书不受信任这个问题是在客户端碰到的,但是对于web端同样适用,这个要看你的登录接口是否采用https的,如果不是使用https的,那么就肯定不是这个原因,那如果采用了https 的接口,我们如何判断是否是https证书 阅读全文
posted @ 2012-08-27 15:04 yupeng 阅读(3503) 评论(1) 推荐(1) 编辑
摘要: 问题:假设现在有4个域名,www.a.com,www.b.com,www.c.com,www.d.com,在a.com这个域内登录了,不种其他3个域名的cookie,如果用户输入其他的三个域的时候,也能保证用户在不输入用户名和密码的时候也能登录说在前面的话:1)在web端登录和未登录:使特定的cookie的值生效/失效,这个特定,就是你所制定的规则。2)问题的关键:如何获得cookie的值,就获得了帐号的通行证,就可以登录了,然后就是做你想做的事情了。比如修改,删除资料,修改密码,做你想做的任何事情,总之,你控制了这个帐号了。分析:1)在www.a.com 这域名下登录,我们可以将cookie 阅读全文
posted @ 2012-08-27 13:00 yupeng 阅读(12756) 评论(10) 推荐(2) 编辑
摘要: 一、什么是单点登录SSO(Single Sign-On) SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。二、单点登录解决了什么问题 解决了用户只需要登录一次就可以访问所有相互信任的应用系统,而不用重复登录。三、单点登录的技术实现机制 如下图所示: 当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;用户再访问别的... 阅读全文
posted @ 2012-05-24 23:46 yupeng 阅读(104678) 评论(9) 推荐(22) 编辑
摘要: 最近老是和cookie打交道,今天专门来总结下cookie的一些问题。一、什么是cookie? Cookie(复数形态Cookies),中文名称为小型文本文件或小甜饼[1],指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。定义于RFC2109。为网景公司的前雇员Lou Montulli在1993年3月所发明。【来自维基百科】 Cookie是保存在客户端中的一小段文本信息,在你浏览网页的时候,浏览器就会将其存储在硬盘上,下次访问同一地址的时候,只要cookie没有失效,浏览器就会将其信息再次发给服务器。所以,cookie伴随着用户请求和页面在.. 阅读全文
posted @ 2012-05-24 00:35 yupeng 阅读(15511) 评论(2) 推荐(8) 编辑
摘要: 这个问题是在组件css加载方案中碰到的 场景: 元素的样式我们可以写在style里面,也可以写到外链css里面,如果没有设置,也会读取浏览器默认的css的,现在我们要计算getComputedstyle某个元素的最终所使用的css样式 区别: 1)style 是行内样式的写法,如果style 内有值的话,就会读取出来,如果没有,那么就为空,可读可写 2)getComputedstyle 是读取元素的最终所使用的css的值,只读的 解决方案: 在ie和非ie下是不一样的处理办法的。 在ie下: 通过element.currentStyle 可以获得当前元素的样式 非ie... 阅读全文
posted @ 2012-05-23 17:09 yupeng 阅读(2638) 评论(0) 推荐(2) 编辑
摘要: 场景: 现有3个域,aa.com,bb.com,cc.com,aa.com 是用户中心,login.aa.com 是用户中心的登陆入口,现要求在任何一个域内登录,其他域不用重复登录了。方案: 我们知道,如果要保证3个域内都同时登陆了,就必须共享登陆的信息,登陆的信息,可以存储在客户端,也可以存储在服务器端,要共享这些信息,就必须要解决多域名下如果同步这些信息的问题,以客户端为例,我觉得有2种办法: 1)对其他的两个域都设置一个login.xx.com 的这么一个子域(设置这个是为了方便管理),在任何一个网站访问,点击登陆的时候,都跳转到用户中心的登陆入口login.aa.com 去登陆,... 阅读全文
posted @ 2012-05-22 23:58 yupeng 阅读(6590) 评论(12) 推荐(4) 编辑
摘要: 引子:上周三进行了代码优化,其中有一个很普遍的代码,例如: if(test =="") {dothis();}else{dothat()} ----->可以简化为 !test ? dothis():dothat(); if(test =="") {dothis()} ----->可以简化为 !test&&dothis();看这个问题简化的根源,其实就是对test的值进行判断,判断是否为false或者是true,如果test==""就执行dothis()这个函数,这个其实就是类型的判断问题,看来"& 阅读全文
posted @ 2012-05-22 00:34 yupeng 阅读(2159) 评论(7) 推荐(2) 编辑
摘要: 在web的开发的开发过程中,前端总是在处理后端打的各种变量,变量可以包含着中的各种各样的字符,如果不对这些字符进行”特殊“处理的话,轻者导致页面不正常的显示,潜入了其他的东西,亦即页面挂了,或者弹出不应该弹出的东西,这些都是我们不期望看到的,重者可能导致密码泄露,网站的访问量突然猛增,服务器挂掉。 在前端的开发中,涉及到以下几种语境: 1)直接显示在页面上, eg:<div>{%username%}</div>,<input type="text" value="{%username%}"/> 2)在script 标签 阅读全文
posted @ 2012-05-21 12:03 yupeng 阅读(9475) 评论(6) 推荐(11) 编辑
摘要: 本文翻译是http://haslayout.net/css/目前,这个网站上包含了 46 个“普通的Bug” , 5个“布局方面的Bug” ,6 个“可以绕开的Bug” 以及 1 个“IE崩溃的Bug”,所有的这些Bug有58个指南和70个解决方法。这个列表目前更新到:2009年8月19日,周三 ,15时38分47秒。最新发表的教程:该网站包含44 IE6 bugs, 28 IE7 bugs 和19 IE8 bugs.下面是所有的bug列表,你可以点击每个BUG名的链接查看更详细的说明和解决方法。IE的CSS Bug:普通Bug这部分IE的 bug 是比较普通的无法归到其它种类,或是同时属于多 阅读全文
posted @ 2012-04-10 07:41 yupeng 阅读(1210) 评论(2) 推荐(0) 编辑
摘要: 说明本文是翻译http://dmitrysoshnikov.com/ecmascript/chapter-6-closures/概要本文将介绍一个在JavaScript经常会拿来讨论的话题 ——闭包(closure)。闭包其实已经是个老生常谈的话题了; 有大量文章都介绍过闭包的内容(其中不失一些很好的文章,比如,扩展阅读中Richard Cornford的文章就非常好), 尽管如此,这里还是要试着从理论角度来讨论下闭包,看看ECMAScript中的闭包内部究竟是如何工作的。正如在此前文章中提到的,这些文章都是系列文章,相互之间都是有关联的。因此,为了更好的理解本文要介绍的内容, 建议先去阅读下 阅读全文
posted @ 2012-04-10 00:00 yupeng 阅读(1299) 评论(0) 推荐(1) 编辑
摘要: 本文是翻译http://dmitrysoshnikov.com/ecmascript/chapter-5-functions/#introduction概要In this article we will talk about one of the general ECMAScript objects — about functions. In particular, we will go through various types of functions, will define how each type influencesvariables objectof a context and 阅读全文
posted @ 2012-04-09 17:29 yupeng 阅读(6133) 评论(0) 推荐(1) 编辑
摘要: 本文是翻译http://dmitrysoshnikov.com/ecmascript/chapter-4-scope-chain/概要As we already know from thesecond chapterconcerning thevariable object, the data of anexecution context(variables, function declarations, and formal parameters of functions) are stored as properties of the variables object.Also, we k 阅读全文
posted @ 2012-04-09 13:27 yupeng 阅读(1875) 评论(0) 推荐(1) 编辑
摘要: 本文是翻译http://dmitrysoshnikov.com/ecmascript/chapter-3-this/概要本文将进一步讨论与执行上下文密切相关的概念——this关键字。事实证明,this这块的内容非常的复杂,它在不同执行上下文的情况下其值都会不同,并且会相应的引发一些问题。很多程序员一看到this关键字,就会把它和面向对象的编程方式联系在一起,它指向利用构造器新创建出来的对象。在ECMAScript中,也支持this,然而, 正如大家所熟知的,this不仅仅只用来表示创建出来的对象。接下来给大家揭开在ECMAScript中this神秘的面纱。定义This是执行上下文的一个属性:a 阅读全文
posted @ 2012-04-08 21:05 yupeng 阅读(1604) 评论(0) 推荐(0) 编辑
摘要: 本文是翻译Dmitry Soshnikov 的文章Variable object文章地址:http://dmitrysoshnikov.com/ecmascript/chapter-2-variable-object/概要我们总是会在程序中定义一些函数和变量,之后会使用这些函数和变量来构建我们的系统。然而,对于解释器来说,它又是如何以及从哪里找到这些数据的(函数,变量)?当引用一个对象的时候,在解释器内部又发生了什么?许多ECMA脚本程序员都知道,变量和执行上下文是密切相关的:var a = 10; // 全局上下文中的变量 (function () { var b = 20; // 函数上. 阅读全文
posted @ 2012-04-08 20:35 yupeng 阅读(1158) 评论(0) 推荐(0) 编辑
摘要: 说明本文是翻译Dmitry Soshnikov 的文章Execution Contexts. 文章地址:http://dmitrysoshnikov.com/ecmascript/chapter-1-execution-contexts/概要在这篇文章中,我们将向大家介绍ECMAscript的可执行上下文以及相关的可执行上下文的类型定义每当控制器进入ECMAscript可执行代码的时候,控制器就进入了一个可执行上下文。可执行上下文(简称EC)是一个抽象的概念,在ECMA262中用他来区分不同类型的可执行代码标准规范中并没有从技术实现的角度来定义执行上下文的具体结构和类型;这是实现标准的ECMA 阅读全文
posted @ 2012-04-07 22:07 yupeng 阅读(3142) 评论(0) 推荐(0) 编辑
摘要: 首先说明一下:Js中的作用域不同于其他语言的作用域,要特别注意。JS中作用域的概念: 表示变量或函数起作用的区域,指代了它们在什么样的上下文中执行,亦即上下文执行环境。Javascript的作用域只有两种:全局作用域和本地作用域,本地作用域是按照函数来区分的。首先来看几道题目:1.if(true){ var aa= "bb";}console.log(aa); //bb for(var i = 0; i < 100; i++){ //do}console.log(i); //1002.var bb = '11111';function aa() { a 阅读全文
posted @ 2012-04-07 09:25 yupeng 阅读(2162) 评论(4) 推荐(2) 编辑
摘要: 在javascript的使用过程中,constructor 和prototype这两个概念是相当重要的,深入的理解这两个概念对理解js的一些核心概念非常的重要。我们在定义函数的时候,函数定义的时候函数本身就会默认有一个prototype的属性,而我们如果用new 运算符来生成一个对象的时候就没有prototype属性。我们来看一个例子,来说明这个function a(c){ this.b = c; this.d =function(){ alert(this.b); }}var obj = new a('test');alert(typeof obj.proto... 阅读全文
posted @ 2012-04-06 22:03 yupeng 阅读(62399) 评论(13) 推荐(18) 编辑
只有注册用户登录后才能阅读该文。 阅读全文
posted @ 2012-03-31 08:23 yupeng 阅读(2178) 评论(18) 推荐(7) 编辑
摘要: 快捷键在日常的使用还是挺多的,例如熟悉的粘贴ctrl+v,复制 ctrl+c,使用快捷键能提高我们的做事效率,特别是当我们熟悉了一种操作后,再次使用它来进行操作就会变得很方便,很顺手,对于使用键盘的重度用户,键盘永远比鼠标来的快。本文主要提到用js的方法设置tabindex 和js设置组合快捷键1)tabindex: 就是利用tab来轻松的控制页面中的链接和表单元素 它的用法很简单:obj.tabindex = tabindex; 这个tabindex 的值,按照w3c 的规定可以从0开始 一直到32767 这个比较的简单,关键是明白他的作用,这里就不举例了。这里有一篇文章对tabind... 阅读全文
posted @ 2012-03-30 08:14 yupeng 阅读(750) 评论(0) 推荐(0) 编辑
摘要: 最近在做一个项目,已经到了后期,通常我们在后期主要是做一些代码优化的工作,本文主要谈谈前端的代码优化方面的一些问题,分为CSS篇和JS篇一、CSS篇 1)内联元素inline,inline元素对一些Css不起作用,例如margin-top,margin-bottom,vertical-align,overflow,height,width如果是内联元素,然后设置这些属性,是根本不会起到作用的,因为内联元素本身是没有高度的。 类似这样的代码: <span style="margin-top:10px; height:100;width:100"><img s 阅读全文
posted @ 2012-03-29 23:12 yupeng 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 第一次听到Range这个概念是在空间编辑器的技术交流会上,当时作者给我们提到编辑器中最重要的概念就是Range,通过操作range,就可以实现编辑器的所有操作。到底具体什么是range呢,其实简单点就是选区,大家对矩形可能有概念,其实range可以理解为矩形,只要我们选定了一个文本,那么这个文本就占有空间了,所以range是有起始和结束位置的。一、关于浏览器的兼容性 目前主要有3种关于range的类似的对象,分别是W3C range 对象,Mozzlia selection ,ie TextRange 关于这三种的区别,请查看文档http://www.quirksmode.org/dom... 阅读全文
posted @ 2012-03-20 08:07 yupeng 阅读(10724) 评论(5) 推荐(3) 编辑
摘要: 在html4中type 被list-style-type给替代了,start 和value几乎不常用,很少看到有这样的代码,但是html5的新标准这几个属性又重新被捡回来了。1)个人感觉使用type 属性list-style-type 简单,也容易记忆下面来对应下这两个之间的关系 type list-style-type type="1"decimal(默认样式)type="a"lower-alphatype="A"upper-alphatype="i"lower-romantype="I"up 阅读全文
posted @ 2012-03-18 20:47 yupeng 阅读(1799) 评论(0) 推荐(0) 编辑
摘要: 上文对html5支持的浏览器的拖拽效果进行了分析,本文不采用任何库,来分析下拖拽的过程先想想我们平时拖拽是怎么操作的,大致可以分为几下几个步骤:鼠标按下,鼠标移动,拖拽,被拖动的物件跟着走鼠标松开,物件停止,无拖动了计算距离,拖拽的距离(鼠标移动)对应在事件上就是onmousedown,onmousemove ,开始拖拽onmouseup ,停止拖拽计算相对的拖拽距离下面我们按照这种思路,写一个拖拽效果,假设我们拖动标题,这块的内容就跟着走。首先我们来写一个含有标题和内容的块css为:#doc{border:1px solid #a0b3d6; background:white;positio 阅读全文
posted @ 2012-03-18 18:09 yupeng 阅读(989) 评论(2) 推荐(0) 编辑