这是从GOOGLE快照上找回来的一篇日志
主要就是用了一个隐藏层,当触发onmouseover事件后就调用显示该层,然后将提供的内容写入该层,也就显示了出来,跟着全是onmousemove事件,继续执行显示,当然该层的坐标随着鼠标的坐标而改变。
那这里就有一个问题,如果鼠标的坐标+层的宽度超过了浏览器的宽度的时候怎么办呢?如果不处理,该层会被缩小,直到不能再小的时候,就会出现横向滚动条,高度同理,所以在这里我们要处理一下,判断是否超出了宽度或高度,如果超出,就将层的坐标向左和上移,这样就可以了。
1、把fckeditor文件夹放到app/webroot/js里面
2、把fckeditor.php, fckeditor_php4.php, fckeditor_php5.php 复制到app/vendors下面
3、添加文件/app/views/helpers/fck.php,代码如下:
- App::import('Vendor','fckeditor');
- class FckHelper extends AppHelper{
- function fckeditor($namepair,$content){
- $editor_name='data';
- foreach ($namepair as $name){
- $editor_name.="[".$name."]";
- }
- $oFCKeditor=new FCKeditor($editor_name);
- $oFCKeditor->BasePath=/js/editor/';
- $oFCKeditor->Value=$content;
- $oFCKeditor->Create();
- }
- }
注意$oFCKeditor->BasePath=/js/editor/';这句,如果你是放在一个二级目录里面,不要要忘了把你的文件夹名字加进去,例如我访问的地址为:http://localhost/cakephp/,那这句就要这么写:$oFCKeditor->BasePath='/cakephp/js/editor/';
4、在appcontroller添加FCK助手。
- var $helpers=array('Fck');
5、在视图中这样调用:
- echo $fck->fckeditor(array('Model','filed'),'');
项目用的是cakephp,它的ajax用的是prototype,所以必须要加载,而我有几个功能实现要用Jquery,于是就出现了Jquery和Prototype共存的问题,Prototype我没用过,如果想用它来实现这几个功能,我怕又要学半天,时间有限啊。
于是上网搜了一下,解决了两个X共存的问题,方法如下:
1、将jquery.js放到prototype.js前面(这个是必须的!)。
2、在jquery.js后面将$变量重命名。
方法如下:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var jQuery=$;
</script>
<script type="text/javascript" type="text/javascript" src="prototype.js"></script>
3、将原来使用的$方法名一律替换为jQuery名,如$("obj")替换为jQuery("obj")。
原文地址:http://www.blogjava.net/beansoft/archive/2008/07/03/212407.html
昨天利用Kcaptcha在CakePHP中实现了验证码功能,但发现Kcaptcha验证码特大了,虽然可以调整大小,但会经常出现看不到的情况,而且在IE下很不清晰,在目前项目上用肯定会被KO掉。看了一下它在CakePHP的调用过程,其实就是向CakePHP添加了一个组件,于是我就想把自己的验证码程序也添加进去。SO 开始:
1、第一步和Kcaptcha有很大区别,因为不用下载。在/app/vendors目录下建立一个vcode目录
2、在vcode目录下建立vcode.php文件,内容为你生成验证码的程序段,当然可能需要修改一下,反正我这里是按照Kcaptcha的方式写的。内容如下:
- class VCODE{
- function VCODE(){
- ob_start();
- $width=65;
- $height=20;
- $sourcestrings="0123456789aqwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
- $image=imagecreate($width,$height);
- $colorarrs=array(
- imagecolorallocate($image,255,255,255),//white
- imagecolorallocate($image,0 ,0 , 0)//black
- );
- unset($this->sessionval);
- imagesetthickness($image,3);
- //随机得到字符串个数
- $strsize=rand(3,5);
- imagefill($image,0,0,$colorarrs[0]);
- //一个个的写字符串到图片
- for($i=0;$i<$strsize;$i++){
- $i_temp=rand(1,62);
- $this->sessionval .=$sourcestrings[$i_temp];
- $fontcolor=imagecolorallocate($image,rand(0,155),rand(0,155),rand(0,155));
- $y_i = $height/2 + $font_size /3 ;
- imagechar($image,5, 1+ $i * $width /$strsize,5,$sourcestrings[$i_temp],$fontcolor);
- }
- //写入session,以后验证用
- //unset($_SESSION['vCode']);
- //$_SESSION['vCode'] = $sessionval;
- //添加杂点
- for($i=0;$i<$width /$height *2;$i++)
- { $i_x=rand(0,$width);
- $i_y=rand(0,$height);
- $pixelcolor=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));
- imagesetpixel($image,$i_x,$i_y,$pixelcolor);
- }
- ob_clean();
- header('content-type:image/png');
- imagepng($image);
- imagedestroy($image);
- }
- function getKeyString(){
- return $this->sessionval;
- }
- }
3、在/app/controllers/components目录下建立Vcode.php文件,内容如下:
前提:kcaptcha需要在PHP v. 4.0.6或以上版本,还需要有GD库支持
1、从http://captcha.ru/en/kcaptcha/下载kcapcha,解压后放到/app/vendors目录下
2、在/app/controllers/components下建立文件captcha.php。内容如下:
- class CaptchaComponent extends Object
- {
- function startup(&$controller)
- {
- $this->controller = $controller;
- }
- function render()
- {
- App::import('Vendor','kcaptcha/kcaptcha');
- $kcaptcha = new KCAPTCHA();
- $this->controller->Session->write('captcha',$kcaptcha->getKeyString());
- }
- }
3、在你要用的controller中加入:
无聊,写了一个简单的DIV卷帘效果,并小打理了一下
测试:点我展开/关闭
1、对海量数据分析、挖掘有浓厚兴趣,沉稳厚重
2、熟悉PHP、JavaScript、HTML设计开发
3、了解HTTP协议,对程序性能优化有一定经验
4、精通MySQL数据库,能熟练地运用SQL语言
将就了一下前面滚动的方法,再加上上次那个图片轮转的一点缓冲效果,就整成这样了。
示例:http://www.fblog.net.cn/codeshow/divscroll/
代码很简单就不做解释了,就说下当div在展开和合拢的过程,为了不让它乱套,继续点击div是没有效果的,只有当它停止后,点击才会生效。在这个地方我用了一个变量b来控制,程序中的控制条件有两一个,if(a==0&&b==0)和if(a==1&&b==0),a==0和a==1分别代表了合拢状态和展开状态,而b==0和b==1则代表了停止的状态和动画的状态,所以默认下b是等于0的,当点击div后,置b==1那前面两个if条件都不会成立了,当动画停止,也就是clearInterval后,又置b==0,那两个if条件又成立了,这样就防止了不停的点击div造成的不良情况。
代码如下:
无缝滚动的代码网上一搜一大堆,但基本上都是只给了一堆代码,没有说明一下它的原理和实现的思路,这里就先简单的说下。
对了先看看示例,其实看得都很多了,不过美女还是可以看看的:
http://www.fblog.net.cn/codeshow/scroll/
滚动主要用到的是offsetWidth,offsetHeight,scrollLeft,scrollTop,根据字面意思就很好理解,向左、向右滚用到的肯定是offsetWidth和scrollLeft,向上、向下滚自然用的是offsetHeight和scrollTop。至于它们的意思,可以查下手册,或在网上搜一下就明白了。
为了好讲,这里就以左滚动为例。左滚动其实就是利用对包含要滚动对象的大容器的scrollLeft的控制来实现,在普通情况下,我们利用JS不断的增加大容器的scrollLeft,那需要滚动的对象就动了起来,但是这样,滚动对象始终会到头,也就是滚动完或者叫滚出了范围,那就不是无缝了。如何做到无缝,一般的做法是复制一次要滚动的对象让它和滚动对象相邻的排在一起,然后控制大容器的scrollLeft让它们一起滚动起来,当滚动到第一个滚动对象的边界的时候,让scollLeft归零,也就是让滚动对象跳回到初始位置,由于滚动对象和复制的对象一模一样,所以跳的那一瞬间是看不出来的,接着它继续滚动,这样就实现了无缝滚动。
说起来有点不清楚,边看代码边说就清楚了。
在CakePHP中,如果想利用一个跳转页面来提高一下用户体验,就可以使用flash()。
函数定义如下:
- Controller::flash($message,$url, $pause = 1)
评论:241个

留言:268个

在线:24人
访问:1254103次
注册人数:90人
建站时间:2005-12-10
F-Blogv1.0诞生
2005年12月17日
F-Blogv2.0诞生
2007年03月05日
F-Blogv3.0诞生
2007年7月1日
F-BLOG不再更新

Flash文件
WindowMedia文件



