Posts tagged with mootools

Jquery版的简单Accordion效果

还在使用mootools的时候,就非常喜欢这个Accordion(折叠菜单)效果,特别是slideUp和slideDown的滑动,接近flash的效果。今天我们就来用jquery来制作一个简单的Accordion效果。

首先准备好html结构,因为是针对sandbox template,它的sidebar结构是这样的:

<div class="sidebar">
<ul class="xoxo">
<li class="widget">
<h3 class="widget-title">content 1</h3>
<ul>
<li>this is content under content 1</li>
<li>this is content under content 1</li>
</ul>
</li>
<li class="widget">
<h3 class="widget-title">content 2</h3>
<ul>
<li>this is content under content 2</li>
<li>this is content under content 2</li>
</ul>
</li>
</ul>
</div>

有了结构,我们就可以开始对结构做文章了,先把所有需要折叠的内容先隐藏:

$('li.widget > ul').hide();

这里我们使用的 > 相似于CSS中的一级子元素选择符,隐藏所有第一级的ul元素。

接着我们设定折叠的控制器,本例中我们使用h3:

$('li.widget > h3').click(function() {
var content = $(this).next();
content.slideToggle('fast');
});

next()来获得跟h3平级的下一个元素,也就是我么不能够结构中的ul,然后用slideToggle来执行折叠动作,也就是slideUpslideDown。这时候我们已经可以进行正常的折叠操作了,但是我想要做到同时只能展开一个内容,该如何处理?

其实也不难,jquerySelectors很强大,看看怎么做:

var others = content.parent().siblings("li.widget").find("ul:visible");

这里的parent()用来获取父元素,find()就是遵循一定的规则(使用Selectors)去查找符合条件的元素,本例中查找li.widget下的所有visible(CSS属性visibility:visible; 也就是本例中被展开的)的ul元素。

最后我们得到这样的内容:

$(document).ready(function(){
$('li.widget > ul').hide();
$('li.widget > h3').click(function() {
var content = $(this).next();
var others = content.parent().siblings("li.widget").find("ul:visible");
if (others.length ) {
others.slideUp('fast', function() {
content.slideToggle('fast');
});
} else {
content.slideToggle('fast');
}
});
});

一个简单的效果看这里

简单的javascript判断浏览器

今天浏览mootoolssvn版本的时候,发现判断浏览器的部分有小更新,并且加入了对操作系统的判断(以下的代码中未包括)

var Client = {
Engine: {'name': 'unknown', 'version': ''},
Features: {}
};

Client.Features.xhr = !!(window.XMLHttpRequest);
Client.Features.xpath = !!(document.evaluate);

if (window.opera) Client.Engine.name = 'opera';
else if (window.ActiveXObject) Client.Engine = {'name': 'ie', 'version': (Client.Features.xhr) ? 7 : 6};
else if (!navigator.taintEnabled) Client.Engine = {'name': 'webkit', 'version': (Client.Features.xpath) ? 420 : 419};
else if (document.getBoxObjectFor != null) Client.Engine.name = 'gecko';
Client.Engine[Client.Engine.name] = Client.Engine[Client.Engine.name + Client.Engine.version] = true;

可能的结果

Client.Engine.ie = true; //IE浏览器,版本不限
Client.Engine.ie6 = true; //IE 6
Client.Engine.ie7 = true; //IE 7
Client.Engine.opera = true; //opera
Client.Engine.gecko = true; //Mozilla/Gecko(包括firefox)
Client.Engine.webkit = true; //Safari
Client.Engine.webkit419 = true; //Safari2
Client.Engine.webkit420 = true; //Safari3

现在你可以用类似这样的代码来执行你的XX Only了 :)

if (Client.Engine.ie) {
IE Only!!!
}

打算尝试一下JQuery

jquery

新版的wordpress把内置的js应用转移到JQuery,最近很风靡的一个WP插件wp-ajax-edit-comments也改成用JQuery,很不幸,都是从prototype过来的,无疑prototype是一个伟大的JavaScript library,不过臃肿还是让一些人放弃了。

我目前使用的是mootools,个人觉得是十一个非常优秀的作品,特别是它的plugins and addons模式,让人眼前一亮。而换用JQuery只是一个尝试而已,希望它真的是“Write Less, Do More”

Search-hilite also

眼馋firefox的页面搜索有高亮的效果,很想在blog上也搞一个这样的效果,如果你也眼馋的话,来试一试吧.

其实每什么难的,加一个插件不就好了,so more for wordpress.我用了一个名为google highlight的插件(默认不支持中文),虽然名字里只有google,但是它还支持了lycos,yahoo和wordpress的站内搜索,(本站启用了livesearch,说不定过几天后也支持了 :))

使用方法很简单,放到plugins目录,然后后台激活.over

接着你就可以尝试一些花哨的想法,比如高亮闪烁(一点也不花哨...) ,还可以修改,让它支持中文字符(修改成中文支持以后,判断高亮变得不太准确了...)

试一下效果,点击 mootools+lightbox

如果你觉得还可以的话,继续看下面的代码(基于mootools)

var searchHilite = new Class({
initialize: function()
{
this.hlclass = "hilite";
this.items = $A(document.getElementsByClassName(this.hlclass));
if (this.items.length == 0) return false;
this.hilite();
},
hilite: function()
{
this.items.each(function(item)
{
new Fx.Color(item,'background-color',{duration: 2000}).custom('#ffffff','#D81317');
new Fx.Color(item,'color',{duration: 2000}).custom('#999999','#ffffff');
});
}
});
window.onload = function () { new searchHilite(); }

ok,love your owner highlight

mootools版的lightbox

lightbox是个经典的东西,造就了一种新的图片浏览方式。mootools是一个新发布的framework,现在要说的是这两个的结合品。

本来lightbox是使用Prototype + Scriptaculous的方式,不可否认Prototype是一个很好的framework,(mootools也有很多借鉴它的地方),不过这些天用下来,总觉得mootools有一种很轻逸的感觉(- -!)

转到正题,我们要做的就是mootools + ?? 做出Prototype + Scriptaculous + lightbox的效果。原作者:Christophe Beyls(可能需要代理才能访问,方正我是访问不了)

需要的东西

mootools.77 可以到mootools download页面下载,需要至少

  • Native scripts: 全部选择
  • Addons: 选一个Fx.js
  • Plugins: 选一个Window.js

然后就是那个??moobox.js使用的方式跟lightbox2一样,预览的效果在这里

Valerio 发布了 Mootools

Valerio 今晚发布了 Mootools,又是一个javascript framework,集成了 Valerio 以前做的 效果类 ( moo.fx ) Ajax类 ( moo.ajax ), Dom选择类 ( moo.dom ), 另外加了拖拽(Drag and Drop), Sortable lists(中文不知道该怎么解释,效果是在一个“狭小”的空间里有一个列表可以拖拽排序 ^^!), Cookies管理以及其他一些功能。做成了一个a choice of more than fifteen scripts, plugins and addons(额...虽然能理解,但是不会用中文解释,小学没好好念书...)

Valerio 自己的一句话来说

mootools infact, makes it possible for you to extend HTML elements with your own methods, to make your life easier, and your coding style alot cooler.
— Valerio

下载 | 文档 | 演示(later)

 1