前段时间在国外的博客上看到这个jQuery的书籍展示效果,觉得很是不错,并下载了源码,自己重新编写了CSS和JS,效果:如下
说明:因为在此页面中是通过使用iframe标签引入外部页面,加上显示页面的宽度有限,所以当鼠标移动到Info图标上时,部分内容被遮盖住,这时你可以通过外部链接查看:Demo
具体代码实现如下:(源代码下载)
1.html代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<div id="books">
<div class="overclear buttons">
<a href="#" class="prev"><img src="images/books_prev.gif" alt="Previous" /></a>
<div class="showing"><!-- showing --></div>
<a href="#" class="next"><img src="images/books_next.gif" alt="Next" /></a>
</div>
<div class="overclear top">
<img src="images/books_left_top.gif" alt="" class="float_left" />
<img src="images/books_right_top.gif" alt="" class="float_right" />
</div>
<div class="inner">
<ul class="overclear">
<li class="loader"><!-- loader --></li>
</ul>
</div>
<div class="overclear btm">
<img src="images/books_left_btm.gif" alt="" class="float_left" />
<img src="images/books_right_btm.gif" alt="" class="float_right" />
</div>
</div> |
2.CSS代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
* { margin:0; padding:0;} body { font:12px/16px Verdana, Geneva, sans-serif; color:#000;} img { border:0;} a { text-decoration:none; outline:none; hide-focus:expression(this.hideFocus=true);} ul { list-style:none;} #books { width:500px;} .prev img, .next img { width:40px; height:30px;} .top img, .btm img { width:20px; height:20px;} .overclear { overflow:hidden; height:1%;} .float_left { float:left;} .float_right { float:right;} .top { background:url(images/books_top.gif) repeat-x;} .btm { background:url(images/books_btm.gif) repeat-x;} .buttons { position:relative; height:32px; margin-bottom:5px;} .prev { position:absolute; top:0; left:0;} .next { position:absolute; top:0; right:0;} .showing { margin:0 60px; height:80%; font-family:Tahoma, Geneva, sans-serif; text-align:center; padding-top:4px;} .inner { height:125px; background:url(images/books_left_mid.gif) repeat-y;} .inner ul { background:url(images/books_right_mid.gif) repeat-y right; height:100%; padding-left:25px;} .loader { background:url(images/books_loader.gif) no-repeat 50% 50%;; height:100%;} .book { width:90px; float:left; padding-right:25px; position:relative; padding-bottom:3px;} .book .info { position:absolute; top:107px; left:88px;} .book .thumb img { padding:3px; border:1px solid #ddd;} .books-tooltip { display:none; position:absolute; background:#fff; z-index:2;} .books-tooltip { width:320px;} .books-info { border:1px solid #ccc; padding:10px; height:70px;} |
为了兼容ie6,需在head标签内加上代码:
1 2 3 4 5 |
<!--[if lt IE 7]>
<style type="text/css">
.book { padding-right:12.5px;}
</style>
< ![end if]--> |
3.xml代码:
因为代码过长的原因,不在此贴出,请阅读外部链接的源代码:XML
4.jQuery代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
$(document).ready(function() { var perNum = 4; //每页显示的书本数目 var currentPage = 1; //默认显示第一页 var startPos = 0; //默认从第一本书开始显示 var endPos = 4; //显示4本书 //从xml中获得数据,并与html结合 $.get(\'books.xml\', function(data){ $(\'div.inner ul\').empty(); var length = $(\'book\', data).length; $(\'book\', data).each(function(index) { var $book = $(this); var link = $book.find(\'href\').text(); var title = $book.find(\'title\').text(); var author = $book.find(\'author\').text(); var imageSrc = $book.find(\'src\').text(); var total = $book.find(\'total\').text(); var average_rating = $book.find(\'average_rating\').text(); var html = \'<li class="book">\'; html += \'<a class="info" href="\' + link + \'">\'; html += \'<img src="images/books_info.gif" alt="more info" />\'; html += \'</a>\'; html += \'<a class="thumb" href="\' + link + \'" title="\' + title + \'">\'; html += \'<img src="\' + imageSrc + \'" alt="\' + title + \'" />\'; html += \'</a>\'; html += \'</li>\'; $(\'#books ul\').append($(html)); var bookToolTip = \'<div id="books_ToolTip\' + index + \'" class="books-tooltip">\'; bookToolTip += \'<div class="books_pointer_left"></div>\'; bookToolTip += \'<div class="books-info">\'; bookToolTip += \'<p>\' + title + \'(by<em>\' + author + \'</em>)</p>\'; bookToolTip += \'<p><img src="images/stars_\' + average_rating + \'.gif" />(\' + total + \')</p>\'; bookToolTip += \'</div>\'; bookToolTip += \'</div>\'; $(\'body\').append($(bookToolTip)); }); //显示每页的书本 var show =function(start, end) { if(end >= length) { end = length; } $(\'div.showing\').empty(); $(\'<p>Viewing \' + (start+1) + \' - \'+ end + \' of \' + length + \'</p>\').appendTo($(\'div.showing\')); $(\'#books ul li\').hide().slice(start, end).fadeIn(); if(currentPage <= 1) { $(\'.prev\').fadeOut(\'fast\'); } else { $(\'.prev\').fadeIn(\'fast\'); } if(currentPage >= length / perNum) { $(\'.next\').fadeOut(\'fast\'); } else { $(\'.next\').fadeIn(\'fast\'); } }; show(startPos, endPos); //显示前一页 $(\'.prev\').click(function() { currentPage --; startPos = perNum * (currentPage - 1); endPos = perNum * currentPage; show(startPos, endPos); }); //显示下一页 $(\'.next\').click(function() { currentPage ++; startPos = perNum * (currentPage - 1); endPos = perNum * currentPage; show(startPos, endPos); }); //鼠标移动到Info图标上时,显示书本的描述信息 $(\'.info\').css({\'opacity\': \'0.9\'}).hover(function() { //$(\'a.info\').index(this) 获得该超链接的index var offset = $(this).offset() var left = offset.left + 20; var top = offset.top + 20; $(\'#books_ToolTip\' + $(\'a.info\').index(this)).css({\'opacity\': \'0.7\', \'left\': left, \'top\': top}).fadeIn(); }, function() { $(\'#books_ToolTip\' + $(\'a.info\').index(this)).fadeOut(\'fast\'); }); }); }); |