ProfilKevin.WangFotosBlogListen Extras Hilfe

凯峰 王

Beruf
Foto 1 von 4
Weitere Alben (1)
07 Januar

scriptaculous学习笔记(三)

Slider滑动杆

滑动杆是通过两个Div嵌套而成的。一个是滑动槽,一个是滑动杆。将这两个div注册为滑动杆就可以了。

 

<div ID="track1" STYLE="width:200px;background-color:#aaa;height:5px;">

    <div ID="handle1" STYLE="width:5px;height:10px;background-color:#f00;"> </div>

</div>

<script>

 new Control.Slider('handle1','track1',{

      sliderValue:0.5,

      onSlide:function(v){$('debug1').innerHTML='slide: '+v},

      onChange:function(v){$('debug1').innerHTML='changed! '+v}});

</script>

 

程序通过new Control.Slider( )来注册滑动杆。第一个id是滑动杆,可以以[‘id1’,’id2’,…]的方式来注册多个滑动杆

第二个id是滑动槽。

后面花括号{}中的参数:

sliderValue:滑动杆初始值,当有多个滑动杆的时候,用 [v1,v2,…]的方式指定多个缺省值

range: $R(2,15) 滑动槽的值的上下限范围。默认是0~1

axis: 'vertical', 可以获得一个上下拖动的滑动杆.缺省为水平.

restricted:true, 多个滑杆时,初始值大的滑杆与初始值小的滑杆不能互相倒置大小.

values: [1,2,3…] 滑动槽的多个预设值。滑杆只能滑动到其中的某个值。

onSlide:function(v) 事件:滑动时触发。V是滑杆当前值。

onChange:function(v) 事件:值改变时触发。V是滑杆当前值。

滑杆区域:(多个滑杆之间围成的上下界区域)

spans:['span7-1','span7-2'],

startSpan:'span7-start',

endSpan:'span7-end',

这个地方还没有仔细看,不是非常明白。

注意:当存在多个滑杆时,滑动槽设为relative,滑动杆应设为display:absolute;left:0 ;top:0;

 

 

scriptaculous学习笔记(二)

Effect效果对象

下拉效果&上拉效果

 

<div id="d1">

 aaaaaaa<p>bbbbbbbbbbbbbbbbb<p>ccccccccccccc<p>

</div>

 <a href="#" onclick="Effect.BlindDown('d1',{});; return false;">BlindDown()</a>

<p>

  <a href="#" onclick="Effect.BlindUp('d1',{});; return false;">BlindUp()</a>

Effect.BlindDown('d1',{})函数的花括号里面{}可以跟参数:

 duration:1.0; 这个数字表示动作持续时间。

delay: 0.5   延迟0.5秒再启动效果

如果想让一个Div开始的时候隐藏,点击下拉的时候才拉下,那么只需要将此Div的属性设为:display: none

 

上滚&下滚效果

这一组函数:

Effect.SlideUp('d1',{});

Effect.SlideDown('d1',{});

这组函数效果与Blind那一组基本一样,效果粗看起来差不多……我也是细心比较才发现的。原来Blind这一对内容是不会随着上拉或下拉而动的。而Slide中的内容会被拉上或拉下。

 

变色闪动效果

Effect.Highlight('d1',{duration:1.5})

此元素将会改变几次颜色并最终返回原来的颜色。

 

渐变显示效果

Effect.Appear(‘d1’,{})

原来的元素初始CSSdisplay:none,用此效果后渐渐显示,渐变的alpha滤镜效果。

膨胀消失效果

Effect.Puff(‘d1’,{})

 

消失后可以使用Element.show('d1') 再次将元素显示出来。

 

渐渐消失效果

Effect.Fade('d1')

渐渐显示效果

Effect.Appear('test_img')

震动效果

Effect.Shake(‘d1’,{})

此元素将会左右震动

闪烁效果

Effect.Pulsate('d1',{})

此函数通过alpha滤镜来进行闪烁。

 

长大效果

 Effect.Grow("d1",

{duration:5.0, direction: 'bottom-right', opacityTransition: Effect.Transitions.linear});

其中:direction 是指的元素从什么方向进入。

如果不指定后面的参数,元素缺省是从下面的中间开始变大。没有alpha效果。

萎缩效果

Effect.Shrink(“d1”,{})

长大效果Grow()的相反效果。

 

Toggle各种效果

汉语里面不知道怎么翻译Toggle,大体意思是:当某物打开的时候触发就关闭,而关闭的时候触发就打开 的一种像乒乓开关的行为。这种行为在做页面时特别有用。

Effect.toggle('d2','BLIND')

Effect.toggle('d2',’appear’)

Effect.toggle('d2',’slide’)

似乎所有这种有着相反效果的函数都可以在这里设置Toggle, ’BLIND’中的效果名大小写不敏感。

 

 

取消效果函数

这几个函数真是乏善可陈……唯一要提的就是关于中止这几个动画过程的函数:cancel()

例如:

effect1=new Effect.SlideUp(‘d1’,{duration:10.0});

想要在这10秒钟中止动画过程: effect1.cancel()

 

效果队列

这个神秘的queue属性,还有待进一步学习……

  function startTimeline() {

    // 3x highlight in front

    for(var i=0; i<3; i++)

      new Effect.Highlight('d3', { duration: 1.0, queue: 'front' });

   

    // insert scale at very beginning

    new Effect.Scale('d1', 75, { scaleContent: true, duration: 1.0, queue: 'front' });

   

    // parallel implied, delay 0.5 sec

    new Effect.Highlight('d1', { delay: 0.5 });

   

    // puff at end

    new Effect.Puff('d2', { duration: 4.0, queue: 'end' });

  }

 

scriptaculous学习笔记(一)

这两篇文章是我昨天一天的成果。scriptaculous真的是一个很好的类库,不过国内的资料似乎很少(起码我没有搜索到),正好是在学习这个咚咚,写个笔记来记录一下吧。

准备

包含库文件:

<script src="../prototype.js" type="text/javascript"></script>

  <script src="../scriptaculous.js" type="text/javascript"></script>

可排序对象

例子:

以下代码将创建一个列表,并且可以拖动排序,每次移动户都将触发一个可以返回列表顺序的函数,并且已经序列化,可以通过Ajax传给服务器端。

//建立列表:

<ul id="x">

<li id="item_1">1</li>

<li id="items_2">2</li>

<li d="items_3">3</li>

<li d="items_4">4</li>

</ul>

//开始建立可排序组件

<script type="text/javascript" language="javascript" charset="utf-8">

// <![CDATA[

   Sortable.create('x',    

{overlap:'horizontal',

ghosting:true,

constraint:false,

    onUpdate:function(sortable){alert(Sortable.serialize(sortable))},

    onChange:function(element){$('state').innerHTML = Sortable.serialize(element.parentNode)}

  });

这样一个可以排序的列表就作好啦~~恭喜~!

 

讲解

其中,Sortable.create()的作用是将这个id=”x”<UL>转化为可排序控件。第一个参数’x’便是此控件的ID 花括号{ }内的属性列表是一些预置属性和各种动作的触发函数:

各个属性的意义:

l         overlap : horizontal | vertical指明了列表是水平方向还是垂直方向排列。(constraint属性中会和此属性有关)

l         ghosting: true | false这个属性指明了拖动行时是否会在原来位置显示虚影占位。

l         constraint: 'vertical' | 'horizontal' | false 这个属性指明了是否会被约束拖动方向。

l         onUpdate:function(sortable){} update事件将会在完成一次排序行为时(拖动后鼠标松开时)被触发。”sortable”参数中将会传入被绑定的<UL>对象。

l         onChange:function(element){} :此事件将会在鼠标拖动时被触发,每移动一下都将触发此事件。注意:此事件传入的element参数是<UL>下被拖动的<LI>而非整个<UL>

 

构造函数中的参数列表:

 

      

参数名          初始值                     说明

element:          element

tag:                'li',                // assumes li children,标签内可被拖动的子标签名

      dropOnEmpty:       false,               ??

      tree:               false,               // fixme: unimplemented ??

      overlap:            'vertical',            // one of 'vertical', 'horizontal'

      constraint:          'vertical',            // one of 'vertical', 'horizontal', false

      handle:            false,               // or a CSS class ,CSS样式是此handle指定样式的标签部分可拖动如为false则整体可拖.      

      only:              false,                ???

      hoverclass:         null,                //被拖入位置的CSS

      ghosting:          false,                //显示残影占位

      format:            null,                 //???

      onChange:         Prototype.emptyFunction,

      onUpdate:         Prototype.emptyFunction

     dropOnEmpty:       true              //or false 指定此<UL>等可排序区域可否接受其他<UL>中的元素

      containment:        ["list1","list2"]      dropOnEmpty设为true,在此参数中设置可接受的列表id

 

 

除了构造函数,其余的常用方法:

 

l          Sortable.serialize(sortable)  静态方法。返回一个当前sortable对象的按照排序顺序先后排列序号的字符串:如x[]=1& x[]=2& x[]=3,每一个<Li>的序号通过<li id="item_1">1</li>的下滑线后面的数字指定。下滑线前面的单词在一组排序中应使用一个相同的前缀。不同的组,前缀应该不同。

l          Sortable .destroy(sortable)  静态方法。撤销此对象的排序属性。

 

 

常见问题:

当我们给<UL>外面加上DIV,比如<div style=”overflow-y:scroll;height:100px;”>

我们会发现页面一团糟了,UL溢出了DIV, 页面乱七八糟。

不用急,在DivStyle中加入 “position:relative;”就解决了<UL>不听指挥的问题。

现在再用一下,拖动有点问题……我们会发现定位不准确了,这是因为没有考虑到滚动条的偏移量。

我们在Sortable的构造函数前加上一句:

Position.includeScrollOffsets = true;

此问题便会迎刃而解~~!哈。

 

04 Januar

我滑 我滑 我滑滑滑

一个假期过去,日子也来到了2006年。那该死的DeadLine也又逼近了一步。
昨天公司组织滑雪,动员大家带家属参加:沈当夫妇,Dra夫妇,其余的都是孤寡男生。第一次滑雪,感觉还是很激动地,在雪地上也不知不觉地多摔了许多跟头。要说这滑雪还真是体力活,几趟下来就满身是汗。
上午玩得是双板,厚重的鞋子加上滑雪板和滑雪杆也有个几十斤。尤其是鞋子,从小到大没穿过这么沉的,鞋面非常硬,是用来镶到滑雪板上面的。(以前还一直疑惑怎么鞋子掉不下来)。双板还算比较好滑了,技术要领跟旱冰有点像。但最苦恼的是摔倒了很难爬起来,浑身用不出一点劲。下午玩得是单板,看着那些包头的教练在雪上跟跳舞似的摆出各种POSE,羡慕的不得了。一上单板才知道,这东西滑块了容易,但是停下来就难了。转弯也要复杂一些。一看到前面有人我就不得不主动坐到地上进行刹车。
晚上大家玩得尽兴而归,连上楼梯都会感觉腿软。在饱餐一顿后,就都回家躺在床上装死了。
 
现在是第二天的早晨,我带着一身的酸疼,写下了这片BLOG.
 
结论:
  • 平时要好好锻炼身体。不然累得够呛。
  • 第一次滑雪的话一定要请教练。可以玩得尽兴的多。
  • 风镜、手套、防晒霜一定要配好。(那些教练脸都黑红色的)
29 Dezember

选框架就像挑老婆,要看仔细咯

这两天病怏怏的.可能跟天气变冷两天没吃肉圣诞喝多酒有关系.今天特告假一天,在书城挑了本《Junit In Action》,躺在床上看,最终还是惦记着办公室的电脑,急急忙忙的走了过来。出了一身汗,衣服都透了~~
这几天都在看着js的各种各样的框架,要考虑着dra设计的变态交互功能的实现,心里面七上八下的。总结一下吧:
1。Rico,这个负以盛名的Ajax框架,我本来是寄以厚望的。在学习中发现了许多该框架的问题:
  • 层拖动定位不准确。在页面有滚动条的时候在IE中有定位问题。Netscape/Firefox中基本正常。
  • 圆角有时会发生错误。圆角大概是使用Div或者什么构成的。在IE中会经常错位。
  • 提供的Ajax封装使用比较麻烦。

2。dojo ,一些比较有用的基础函数,还正在学习~~

3。DWR,这个框架比较神奇,通过它可以令js与java对象通信……据说内部也是使用的xmlhttp进行的转化,不过我在想,这样一来就不需要url来url去了……假如能够直接操纵bean那世界就太完美了。不过学长子楠告诫我:用这个会很麻烦……还在继续考察中~有兴趣的朋友可以去搜索一下。

4。prototype,一个奇思妙想的js基础框架,使得许多原来的繁复工作变得简单。一片比较好的学习笔记:https://compdoc2cn.dev.java.net/prototype/html/prototype.js.cn.html,据说是从先进的Rails里面剥离出来的~~呵呵。

5。scriptaculous,比较难记的名字…据说在Ajax方面,好评度23%名列第二。集成了一些比较好的基本功能。有待学习~~
沈当叫我吃饭……先写到这里吧,以后还要继续学习,网站少不了Ajax,也少不了js。
27 Dezember

Web2.0 Coder的圣诞节的祷词

All I want for Christmas is Ajax


I don't want a tall skinny tree
or lots of presents under it.
All I ask for are some Web 2.0 goodies
that are zipped and not wrapped.
I want PHP and not PAJAMAS.
Give me widgets and not gadgets.
Give me a torrent of flashy de.licio.us gifts that flickr brightly under MySQL clouds.
I want Wiki and not wassel.
I want Christmas feeds and not Christmas food.
I want shareware and freeware and not underwear.
I want my OPML Christmas list to be meta-tagged and checked twice by automated folksonomy-based aggregators exhibiting an emergent Christmas cheer that can be mapped visually and dynamically on my poor and miserable blog that limps along like Tiny Tim on the pathetic crutches of Web 1.0 architecture.
All I want for Christmas is Ajax.
And may God bless us . . everyone.

22 Dezember

浅析软件项目管理中十个误区 (6--10)

误区6:软件项目管理只是相关技术部门的事情,与公司其他部门无关。分析:在竞争日益激烈的今天,软件项目规模大、复杂度高而且时间要求紧迫。要想提高公司的软件项目管理水平,这就需要提高公司的整体 参与意识,需要公司各个部门协同作战。例如需要会计部门协助进行项目预算,财务管理和费用控制;需要研究部门(技术委员会)指派专家 协助进行各种风险评估,提供技术指导;需要后勤部门提供各种保障。
误区7:在开发进度滞后的情况下,可以聘请更多的程序员加入到开发团队中,通过增加人力资源来赶上进度。分析:在注重团队开发的时代,开发方应该根据目前的软件项目管理水平慎重考虑这个做法。如果新加入的程序员对目前软件项目的应用行业 有一定了解,并且可以很快适应了开发方的项目管理方式、软件开发风格、团队协作氛围;那么“新人”的加入是有益的。否则,可能会“好 心好意做坏事”。因为尽管其个人能力很高,但是为了使其与大家一起协同工作,开发团队不得不分出人手对其进行与项目有关的技术/业务培 训,更重要的(也是难度最大的)是还要引导其融入团队。这可能需要花费开发团队许多时间和精力,很有可能使项目进度更慢。
误区8:技术骨干应该成为项目的项目经理,项目经理一定是所有项目成员中薪水最高的。分析:在“软件作坊”时代,这是一种普遍使用而且效果不错的方法;而在“软件工厂”时代,这种方法却带来各种问题,有时甚至直接导致 项目失败。究其原因这主要是因为随着现代软件开发分工的细化,对项目经理的要求也发生了根本的改变——最注重的不是其对某项专业技术 的掌握程度,而是其组织、领导、协调开发团队的能力(当然,可以两者均突出最好)。至于项目经理的薪水问题,这和定薪制度有很大关系 。通常,项目经理执行的是管理人员的薪酬体系,而其他人员执行的是技术人员的薪酬体系。项目经理的薪水在项目成员中是比较高的,但不 一定是最高的。有时候,为了激励技术人员,项目中的技术骨干得到的酬劳比项目经理要高。
误区9:只有项目经理以及部门主管才会关心项目整体进度,程序员只关心自己的开发进度。分析:这是一种“官僚”的想法。实际上程序员作为团队中的一员,他不仅仅是在打一份工,更重要的是在参与一件“作品”的创作。在体味 工作的辛苦的同时,程序员更重要的是要享受创作的快感。项目经理不应该漠视程序员对“成就感”的追求,应该向每一个人详细描述最终“ 作品”将会如何美妙和令人兴奋,并且在到达最终目标的路上设立一系列的里程碑。每当项目整体推进到一个里程碑的时候,项目经理应该把 这个消息告诉每一位项目成员。实际上,这不仅仅可以让所有的项目成员享受到阶段胜利的喜悦,还可以激发大家更大的工作热情,提高工作 效率。
误区10:为了保证项目继续,为了留住核心程序员,加薪吧。分析:加薪可以说是很多企业在挽留程序员时所使用的常用方法。这一招可能暂时奏效,不过往往是人留下来了,但副作用也来了——加薪的 人未必见得多干活,没有加薪的人却开始消极怠工了。其实,项目的进行过多地依赖程序员的个人技术是“作坊”时代沿袭下来的“陋习”。 既然IT行业人员的流动是无法控制的,现在项目的执行应该更加注重团体的力量,应该更多的考虑公司整体技术水平和核心技术能力。例如形 成公司自己的专家知识库,类/函数库,第三方控件库,拥有自主版权的开发平台等。另外,实际上程序员萌生去意的原因很大程度上不是薪水 ,而是缺少激励和尊重。这需要项目经理使用“老土”一点的办法,找适当的时机对程序员做一做思想工作,向其描述项目的美好未来,让其 感受关心和尊重。总之,要从多方面着手保证项目的顺利开展,而不是简单地加薪。
 
My Custom Part|false|
  
Es wurden noch keine Listenelemente hinzugefügt.