
標題: [mootools] image menu - 不用Flash達到滑動清單效果. [打印本頁]
作者: 凱森 時間: 2009-2-12 11:58 標題: [mootools] image menu - 不用Flash達到滑動清單效果.
無意間在Google 搜索「image Menu」找到的

滿有質感的,要修改也很方便
希望對大家在構置版面的時候會有幫助!
下面是範例網址:
http://www.phatfusion.net/imagemenu/index.htm
download:
http://www.phatfusion.net/imagemenu/imagemenu.zip
作者: wmh 時間: 2009-2-14 12:03
DEMO:
[jsg.example]
<link rel="stylesheet" href="_lib/mootools/plugins/imagemenu/imageMenu.css" type="text/css" media="all" />
<div id="imageMenu">
<ul>
<li class="landscapes" style="margin-left: 0"><a href="http://www.aaronbirchphotography.com">Landscapes</a></li>
<li class="people" style="margin-left: 0"><a href="http://www.aaronbirchphotography.com">People</a></li>
<li class="nature" style="margin-left: 0"><a href="http://www.aaronbirchphotography.com">Nature</a></li>
<li class="urban" style="margin-left: 0"><a href="http://www.aaronbirchphotography.com">Urban</a></li>
<li class="abstract" style="margin-left: 0"><a href="http://www.aaronbirchphotography.com">Abstract</a></li>
</ul>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/mootools/1.11/mootools-yui-compressed.js"></script>
<script type="text/javascript" src="_lib/mootools/plugins/imagemenu/imageMenu.js"></script>
<script type="text/javascript">
window.addEvent('domready', function() {
var myMenu = new ImageMenu($$('#imageMenu a'),{openWidth:310, border:2, onOpen:function(e,i){alert(e);return true;}});
});
</script>
[/jsg.example]
作者: terry.lin 時間: 2009-3-16 17:56 標題: 與jquery ui blockUI 搭配有問題
老大,我單獨使用這個js是可以作用的,
但是若搭配jquery ui 的 blockUI 時圖片就不會動,但是blockUI還是有作用,
請問有解決的方法嗎?謝謝
作者: wmh 時間: 2009-3-16 19:15
哦,會不會是 global varible 相衝?
用 Firebug 有沒有看到錯誤訊息呢?
作者: terry.lin 時間: 2009-3-17 16:10
原帖由 wmh 於 2009-3-16 19:15 發表 
哦,會不會是 global varible 相衝?
用 Firebug 有沒有看到錯誤訊息呢?
有耶,紅色是標記的錯誤行數,如下:
this.elements[0].getStyle is not a function
this.widths.closed = this.elements[0].getStyle('width').toInt();
Exception..."Component returned failure code:0x80040111(NS_ERROR_NOT_AVAILABLE) [nsIChannel.contentType]"
nsresult:"
channel.contentType = "application/vnd.mozilla.maybe.feed";
作者: wmh 時間: 2009-3-17 20:34
你說的是用 jQuery BlockUI 嗎:
[jsg.example]
<input type="button" value="按我,產生全頁遮罩!" id="demo2" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript" src="_lib/jquery/plugins/jquery.blockUI.1.33.js"></script>
<script type="text/javascript">
$j = jQuery.noConflict();
$j(document).ready(function() {
$j("#demo2").click(function() {
$j.blockUI({ message: '<div style="padding: 5px"><img src="http://www.cachefile.net/graphics/activity/mentalized.net/snake_transparent.gif" /> 歡迎來到 jsGears.com !<br /><br />滑鼠再點一次關閉全頁遮罩。</div>'
});
setTimeout(function() {
$j(document).one('click', function() {
$j.unblockUI();
});
}, 100);
});
});
</script>
[/jsg.example]
我這一頁同時用了 BlockUI 看起來是正常的,不過我有用 jQuery.noConflict() 的語法,請參考:
http://jsgears.com/thread-63-1-1.html
作者: terry.lin 時間: 2009-3-18 10:48
原帖由 wmh 於 2009-3-17 20:34 發表 
你說的是用 jQuery BlockUI 嗎:
[jsg.example]
$j = jQuery.noConflict();
$j(document).ready(function() {
$j("#demo2").click(function() {
$j.blockUI({ message: ' 歡迎來到 jsGears.com !滑鼠再點一 ...
謝謝版主,我再試看看!
作者: terry.lin 時間: 2009-3-25 17:56 標題: 回復 6# 的帖子
老大,用了這個語法後果然可以使用了,真是謝謝您!
作者: ronaldy 時間: 2009-4-26 14:18 標題: 請問可以改圖片高度嗎?
對不起我是新手,不太懂jquery和mootools,請問我想改圖片的
高度可以怎辨,THX
作者: wmh 時間: 2009-4-26 16:20
你可以參考範例檔,圖片的高度應該是在 css 內設定的。就依實際的圖片高度設定即可。
作者: ronaldy 時間: 2009-4-26 20:09 標題: THX
謝謝,唔該哂版主大人
作者: ivannatong 時間: 2009-6-3 17:46
我係新手
想問下個d相係咪可以連結去網頁
而唔係單單彈個視窗
如果係要點做??
thx
作者: 凱森 時間: 2009-6-3 20:10 標題: 回復 12# 的帖子
在程式碼約43行
<script type="text/javascript">
window.addEvent('domready', function(){
var myMenu = new ImageMenu($$('#imageMenu a'),{openWidth:310, border:2, onOpen:function(e,i){alert(e);}});
});
</script>
紅色字體的部份拿掉即可...
作者: ivannatong 時間: 2009-6-4 18:53
唔得BOR
一樣係彈個個視窗
THX
作者: wmh 時間: 2009-6-4 21:48
不好意思,因為我看不懂你的發言,可以改用普通話嗎?這樣或許我可以幫幫看~
作者: ivannatong 時間: 2009-6-4 22:59 標題: 回復 15# 的帖子
我盡量試一下
請問相片能不能連去其他網頁?
而不是單單有一個視窗
如果是,要怎樣做
thx
作者: wmh 時間: 2009-6-5 00:05
喔,可以的,以官方的範例來說,原始的 HTML 結構是 <li> 底下有一層 <a>,因此該連結的位址會被傳入到 function 內的第一個參數,這時如果你需要連去其他網頁,可以用 location.href = e; 去讓網頁轉址。
<script type="text/javascript">
window.addEvent('domready', function(){
var myMenu = new ImageMenu($$('#imageMenu a'),{
openWidth:310, border:2,
onOpen:function(e, i) {
location.href = e;
}
});
});
</script>
作者: ivannatong 時間: 2009-6-5 00:19
行啦!
謝謝您=]
作者: ivannatong 時間: 2009-6-5 23:04
不好意思
不過有些仍會有個視窗
按了enter就會到連結的網站
請問怎樣可以不要那些視窗
作者: hjj28810 時間: 2009-8-10 00:01
图片的高度可以改了,但宽度怎么改啊???
作者: wmh 時間: 2009-8-10 23:41
寬度可透過 CSS 調整喔。
#imageMenu ul li a {
text-indent: -1000px;
background:#FFFFFF none repeat scroll 0%;
border-right: 2px solid #fff;
cursor:pointer;
display:block;
overflow:hidden;
width:98px;
height: 200px;
}
作者: hjj28810 時間: 2009-8-11 15:05
我要改的是整个div的宽度,怎么改啊????这个宽度只是里面图片的宽度吧?
作者: wmh 時間: 2009-8-11 17:45
應該都是透過 CSS 調整,試試看改 #imageMenu 的寬度
作者: hjj28810 時間: 2009-8-11 21:03
在设计里面看已经改了,但调试出来还是那样。。。晕哦
作者: JS領事 時間: 2009-8-11 22:01
JavaScript就是不斷調圖片div萈度得到效果的……
所以大概也得改?
作者: pzpili 時間: 2010-3-8 15:11
版大您好
我在實做時遇到了問題想要請教您
http://www.aaronbirchphotography.com/
在image.js裡面可以控制按扭下面滑動視窗的高度為275
(就是下面那兩排縮圖)
如果我希望他可以隨我內容多少而決定高度
該怎麼改寫呢
作者: wmh 時間: 2010-3-9 08:42
回復 26# pzpili
可以試試看用 JavaScript 去改變 #kwick .kwick 的高度。
作者: wmh 時間: 2010-3-9 08:43
回復 26# pzpili
可以試試看用 JavaScript 去改變 #kwick .kwick 的高度,
或是由 server 端送出頁面時,同時送出一份樣式覆蓋原始的高度設定即可。
作者: henry620 時間: 2010-4-2 19:47
請問一下image menu 在frame分割下..用ie是不是有問題...主頁的frame如下<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
<title>test</title>
</head>
<frameset rows="240,*" cols="*" framespacing="0" frameborder="no" border="0" >
<frame src="new_top.html" name="topFrame" scrolling="no" noresize="noresize" id="topFrame" title="topFrame" />
<frame src="bottom.html" name="mainFrame" noresize="noresize" id="mainFrame" title="mainFrame" />
</frameset>
<body>
</body>
</html>
如果用ie開..image menu就不都動...但如果單獨開frame中的網頁..又會動....用firefox沒問題..只是ie才會這樣...有辦法解決嗎?
作者: wmh 時間: 2010-4-3 10:03
回復 29# henry620
有範例嗎?什麼樣的情況下?
作者: henry620 時間: 2010-4-3 15:40
本帖最後由 henry620 於 2010-4-3 18:35 編輯
範例:
index.html (有上下2個frame,上面的有用imageMenu,下面隨便)<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
<title>test</title>
<style type="text/css">
<!--
body {
background-image: url(img/bg.gif);
}
.style1 {font-size: 24px}
-->
</style></head>
<frameset rows="240,*" cols="*" framespacing="0" frameborder="no" border="0" >
<frame src="imageMenu_top.html" name="topFrame" scrolling="no" noresize="noresize" id="topFrame" title="topFrame" />
<frame src="bottom.html" name="mainFrame" noresize="noresize" id="mainFrame" title="mainFrame" />
</frameset>
<body>
</body>
</html>
imageMenu_top.html(有用imageMenu的)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
<title></title>
<body>
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/imageMenu.css" type="text/css" media="screen" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js"></script>
<script type="text/javascript" src="lighter/Lighter.js"></script>
<script type="text/javascript" src="lighter/Fuel.css.js"></script>
<script type="text/javascript" src="lighter/Fuel.html.js"></script>
<script type="text/javascript" src="lighter/Fuel.js.js"></script>
<script type="text/javascript" src="js/fx.elements.js"></script>
<script type="text/javascript" src="js/imageMenu.js"></script>
<script type="text/javascript">
window.addEvent('domready', function(){
var advancedMenu = new ImageMenu($('#imageMenuAdvanced a'),{
openWidth:310,
border:2,
open: 0,
});
});
</script>
<div id="imageMenuAdvanced" class="imageMenu" align="center">
<ul>
<li class="landscapes"><a href="http://www.aaronbirchphotography.com">Landscapes</a></li>
<li class="people"><a href="http://www.aaronbirchphotography.com">People</a></li>
<li class="nature"><a href="http://www.aaronbirchphotography.com">Nature</a></li>
<li class="urban"><a href="http://www.aaronbirchphotography.com">Urban</a></li>
<li class="abstract"><a href="http://www.aaronbirchphotography.com">Abstract</a></li> </ul>
</div>
</body>
</html>
如果用ie8開index.html..imageMenu就沒反應..圖不會打開...但如果開imageMenu_top.html..又正常的...
作者: wmh 時間: 2010-4-3 19:01
回復 31# henry620
我單獨開 imageMenu_top.html 也是無法運作喔~
你可能要先確定這個檔案是正常的,
或是試著改回 mootools 1.11 版,$ 改用 $$
作者: sy0921639035 時間: 2010-9-7 13:17
您好!!
請問要怎麼使用呢??
下載下來的檔案有一個.js跟.css的檔案
不好意思 我是個新手 請大大幫忙!!
作者: jaydarman 時間: 2010-9-22 14:35
請問 如果我想製作網頁相簿
要怎麼才能做到跟 http://www.aaronbirchphotography.com/這網頁上一樣的呢
抱歉新手發問
作者: shauyu 時間: 2011-12-15 00:37
請問一個問題
我用以下的代碼有做出一樣的滑動效果
但是我希望一進到網頁的時候, 第一個圖片是已經先展開的狀態
該如何改寫呢?/* ==== slider nameSpace ==== */
var slider = function() {
/* ==== private methods ==== */
function getElementsByClass(object, tag, className) {
var o = object.getElementsByTagName(tag);
for ( var i = 0, n = o.length, ret = []; i < n; i++) {
if (o[i].className == className) ret.push(o[i]);
}
if (ret.length == 1) ret = ret[0];
return ret;
}
function setOpacity (obj,o) {
if (obj.filters) obj.filters.alpha.opacity = Math.round(o);
else obj.style.opacity = o / 100;
}
/* ==== Slider Constructor ==== */
function Slider(oCont, speed, iW, iH, oP) {
this.slides = [];
this.over = false;
this.S = this.S0 = speed;
this.iW = iW;
this.iH = iH;
this.oP = oP;
this.oc = document.getElementById(oCont);
this.frm = getElementsByClass(this.oc, 'div', 'slide', 'slide');
this.NF = this.frm.length;
this.resize();
for (var i = 0; i < this.NF; i++) {
this.slides[i] = new Slide(this, i);
}
this.oc.parent = this;
this.view = this.slides[0];
this.Z = this.mx;
/* ==== on mouse out event ==== */
this.oc.onmouseout = function () {
this.parent.mouseout();
return false;
}
}
Slider.prototype = {
/* ==== animation loop ==== */
run : function () {
this.Z += this.over ? (this.mn - this.Z) * .5 : (this.mx - this.Z) * .5;
this.view.calc();
var i = this.NF;
while (i--) this.slides[i].move();
},
/* ==== resize ==== */
resize : function () {
this.wh = this.oc.clientWidth;
this.ht = this.oc.clientHeight;
this.wr = this.wh * this.iW;
this.r = this.ht / this.wr;
this.mx = this.wh / this.NF;
this.mn = (this.wh * (1 - this.iW)) / (this.NF - 1);
},
/* ==== rest ==== */
mouseout : function () {
this.over = false;
setOpacity(this.view.img, this.oP);
}
}
/* ==== Slide Constructor ==== */
Slide = function (parent, N) {
this.parent = parent;
this.N = N;
this.x0 = this.x1 = N * parent.mx;
this.v = 0;
this.loaded = false;
this.cpt = 0;
this.start = new Date();
this.obj = parent.frm[N];
this.txt = getElementsByClass(this.obj, 'div', 'text');
this.img = getElementsByClass(this.obj, 'img', 'diapo');
this.bkg = document.createElement('div');
this.bkg.className = 'backgroundText';
this.obj.insertBefore(this.bkg, this.txt);
if (N == 0) this.obj.style.borderLeft = 'none';
this.obj.style.left = Math.floor(this.x0) + 'px';
setOpacity(this.img, parent.oP);
/* ==== mouse events ==== */
this.obj.parent = this;
this.obj.onmouseover = function() {
this.parent.over();
return false;
}
}
Slide.prototype = {
/* ==== target positions ==== */
calc : function() {
var that = this.parent;
// left slides
for (var i = 0; i <= this.N; i++) {
that.slides[i].x1 = i * that.Z;
}
// right slides
for (var i = this.N + 1; i < that.NF; i++) {
that.slides[i].x1 = that.wh - (that.NF - i) * that.Z;
}
},
/* ==== HTML animation : move slides ==== */
move : function() {
var that = this.parent;
var s = (this.x1 - this.x0) / that.S;
/* ==== lateral slide ==== */
if (this.N && Math.abs(s) > .5) {
this.obj.style.left = Math.floor(this.x0 += s) + 'px';
}
/* ==== vertical text ==== */
var v = (this.N < that.NF - 1) ? that.slides[this.N + 1].x0 - this.x0 : that.wh - this.x0;
if (Math.abs(v - this.v) > .5) {
this.bkg.style.top = this.txt.style.top = Math.floor(2 + that.ht - (v - that.Z) * that.iH * that.r) + 'px';
this.v = v;
this.cpt++;
} else {
if (!this.pro) {
/* ==== adjust speed ==== */
this.pro = true;
var tps = new Date() - this.start;
if(this.cpt > 1) {
that.S = Math.max(2, (28 / (tps / this.cpt)) * that.S0);
}
}
}
if (!this.loaded) {
if (this.img.complete) {
this.img.style.visibility = 'visible';
this.loaded = true;
}
}
},
/* ==== light ==== */
over : function () {
this.parent.resize();
this.parent.over = true;
setOpacity(this.parent.view.img, this.parent.oP);
this.parent.view = this;
this.start = new Date();
this.cpt = 0;
this.pro = false;
this.calc();
setOpacity(this.img, 100);
}
}
/* ==== public method - script initialization ==== */
return {
init : function() {
// create instances of sliders here
// parameters : HTMLcontainer name, speed (2 fast - 20 slow), Horizontal ratio, vertical text ratio, opacity
this.s1 = new Slider("slider", 12, 2.3/3, 1/3.2, 90);
setInterval("slider.s1.run();", 16);
}
}
}();
歡迎光臨 jsGears.com 技術論壇 - AJAX, JavaScript, jQuery, 網站開發, 前端效能優化 (http://jsgears.com/) |
|