jquery类似百度百科底部导航预览,代码很简单,这里就不多废话了。
效果图:
CSS
* {
margin: 0;
padding: 0
}
.wrap {
width: 1000px;
overflow: hidden;
margin: 0 auto;
}
.content {
width: 780px;
float: left;
}
.slide {
width: 200px;
float: right;
}
HTML
<div class=\"wrap\">
<div class=\"content\">
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"1\"></a>
<span class=\"headline-1-index\">1</span>
<span class=\"headline-content\">part1</span>
</h2>
<div class=\"para\">
content1,content1
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"2\"></a>
<span class=\"headline-2-index\">2</span>
<span class=\"headline-content\">part2</span>
</h2>
<div class=\"para\">
content2,content2
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-2\">
<a class=\"anchor-2\" name=\"2-1\"></a>
<!--<span class=\"headline-2-index\">2-1</span>-->
<span class=\"headline-content\">part2-1</span>
</h2>
<div class=\"para\">
content2-1,content2-1
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-2\">
<a class=\"anchor-2\" name=\"2-2\"></a>
<!--<span class=\"headline-1-index\">2-2</span>-->
<span class=\"headline-content\">part2-2</span>
</h2>
<div class=\"para\">
content2-2,content2-2
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"3\"></a>
<span class=\"headline-1-index\">3</span>
<span class=\"headline-content\">part3</span>
</h2>
<div class=\"para3\">
content,content
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"4\"></a>
<span class=\"headline-1-index\">4</span>
<span class=\"headline-content\">part4</span>
</h2>
<div class=\"para4\">
content,content
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"5\"></a>
<span class=\"headline-1-index\">5</span>
<span class=\"headline-content\">part5</span>
</h2>
<div class=\"para\">
content5,content5
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"6\"></a>
<span class=\"headline-1-index\">6</span>
<span class=\"headline-content\">part6</span>
</h2>
<div class=\"para\">
content6,content6
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"7\"></a>
<span class=\"headline-1-index\">7</span>
<span class=\"headline-content\">part7</span>
</h2>
<div class=\"para\">
content7,content7
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"8\"></a>
<span class=\"headline-1-index\">8</span>
<span class=\"headline-content\">part8</span>
</h2>
<div class=\"para\">
content8,content8
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"9\"></a>
<span class=\"headline-1-index\">9</span>
<span class=\"headline-content\">part9</span>
</h2>
<div class=\"para\">
content9,content9
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"10\"></a>
<span class=\"headline-1-index\">10</span>
<span class=\"headline-content\">part10</span>
</h2>
<div class=\"para\">
content10,content10
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"11\"></a>
<span class=\"headline-1-index\">11</span>
<span class=\"headline-content\">part11</span>
</h2>
<div class=\"para\">
content11,content11
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"12\"></a>
<span class=\"headline-1-index\">12</span>
<span class=\"headline-content\">part12</span>
</h2>
<div class=\"para\">
content12,content12
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"13\"></a>
<span class=\"headline-1-index\">13</span>
<span class=\"headline-content\">part13</span>
</h2>
<div class=\"para\">
content13,content13
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"14\"></a>
<span class=\"headline-1-index\">14</span>
<span class=\"headline-content\">part14</span>
</h2>
<div class=\"para\">
content14,content14
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<h2 class=\"headline-1\">
<a class=\"anchor-1\" name=\"15\"></a>
<span class=\"headline-1-index\">15</span>
<span class=\"headline-content\">part15</span>
</h2>
<div class=\"para\">
content15,content15
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
bottom
</div>
</div>
<div class=\"slide\" style=\"\">
<div id=\"sideToolbar\" style=\"position: fixed; bottom: 0\">
<div id=\"sideCatalog\" class=\"sideCatalogBg\" style=\"visibility: visible;\">
<div id=\"sideCatalog-sidebar\">
<div class=\"sideCatalog-sidebar-top\"></div>
<div class=\"sideCatalog-sidebar-bottom\"></div>
</div>
<div id=\"sideCatalog-updown\" style=\"visibility: visible;\">
<div id=\"sideCatalog-up\" class=\"sideCatalog-up-disable\" title=\"向上翻页\"></div>
<div id=\"sideCatalog-down\" class=\"sideCatalog-down-enable\" title=\"向下翻页\"></div>
</div>
<div id=\"sideCatalog-catalog\">
<dl style=\"width:175px;zoom:1\">
<!--
<dd id=\"sideToolbar-item-0-1\" class=\"sideCatalog-item2 heightlight\">
<span class=\"sideCatalog-index1\">1</span>
<a class=\"nslog:1026\" onclick=\"return false;\" title=\"part1\" href=\"#1\">part1</a>
<span class=\"sideCatalog-dot\"></span>
</dd>
<dd id=\"sideToolbar-item-0-2\" class=\"sideCatalog-item1\">
<span class=\"sideCatalog-index1\">2</span>
<a class=\"nslog:1026\" onclick=\"return false;\" title=\"part2\" href=\"#2\">part2</a>
<span class=\"sideCatalog-dot\"></span>
</dd>
<dd id=\"sideToolbar-item-0-2-1\" class=\"sideCatalog-item2\">
<span class=\"sideCatalog-index1\">2-1</span>
<a class=\"nslog:1026\" onclick=\"return false;\" title=\"part2\" href=\"#2-1\">part2-1</a>
<span class=\"sideCatalog-dot\"></span>
</dd>
-->
</dl>
</div>
</div>
<a id=\"sideCatalogBtn\" class=\"\" style=\"visibility: visible;\" href=\"javascript:void(0);\"></a>
<a id=\"sideToolbar-up\" style=\"visibility: visible;\" title=\"返回顶部\" href=\"javascript:void(0)\"></a>
</div>
</div>
</div>
JS
<script>
var allEle = $(\':header[class*=\"headline\"]\');
var headLen = allEle.length;
var ddArr = [];
//根据页面内容生成slide导航;
allEle.each(function(i){
var sideIndex,
sideName,
ddId,
highlight=\'\',
ddClass,
sideAnchor;
sideName = $(this).find(\'.headline-content\').text();
if($(this).hasClass(\'headline-1\')){
sideAnchor = sideIndex = $(this).find(\'.anchor-1\').eq(0).attr(\'name\');
ddClass = \'sideCatalog-item1\';
}else{
sideAnchor = $(this).find(\'.anchor-2\').eq(0).attr(\'name\');
sideIndex = sideAnchor.replace(\'-\',\'.\');
ddClass = \'sideCatalog-item2\';
}
ddId = \'sideToolbar-item-0-\'+ sideAnchor;
if(i==0){
highlight = \'highlight\';
}
var ddHtml = \'<dd id=\"\'+ ddId +\'\" class=\"\'+ddClass + \' \' + highlight +\'\">\'
+ \'<span class=\"sideCatalog-index1\">\'+ sideIndex +\'</span>\'
+ \'<a class=\"nslog:1026\" onclick=\"return false;\" title=\"part\'+sideAnchor+\'\" href=\"#\'+sideAnchor+\'\">\'+ sideName +\'</a>\'
+ \'<span class=\"sideCatalog-dot\"></span>\'
+ \'</dd>\';
ddArr.push(ddHtml);
});
$(\'#sideCatalog-catalog dl\').html(ddArr.join(\'\'));
//设置导航的位置
var slideTop = $(window).height() - $(\'.slide\').height();
$(\'.slide\').css(\'top\',slideTop);
var slideInnerHeight = $(\'#sideCatalog-catalog dl\').height();
var slideOutHeight = $(\'#sideCatalog-catalog\').height();
var enableTop = slideInnerHeight - slideOutHeight;
var step = 50;
//点击向上的按钮
$(\'#sideCatalog-down\').bind(\'click\', function () {
if ($(this).hasClass(\'sideCatalog-down-enable\')) {
if ((enableTop - Math.abs(parseInt($(\'#sideCatalog-catalog dl\').css(\'top\')))) > step) {
$(\'#sideCatalog-catalog dl\').stop().animate({\'top\': \'-=\' + step}, \'fast\');
$(\'#sideCatalog-up\').removeClass(\'sideCatalog-up-disable\').addClass(\'sideCatalog-up-enable\');
} else {
$(\'#sideCatalog-catalog dl\').stop().animate({\'top\': -enableTop}, \'fast\');
$(this).removeClass(\'sideCatalog-down-enable\').addClass(\'sideCatalog-down-disable\');
}
} else {
return false;
}
})
//点击向下的按钮
$(\'#sideCatalog-up\').bind(\'click\', function () {
if ($(this).hasClass(\'sideCatalog-up-enable\')) {
if (Math.abs(parseInt($(\'#sideCatalog-catalog dl\').css(\'top\'))) > step) {
$(\'#sideCatalog-catalog dl\').stop().animate({\'top\': \'+=\' + step}, \'fast\');
$(\'#sideCatalog-down\').removeClass(\'sideCatalog-down-disable\').addClass(\'sideCatalog-down-enable\');
} else {
$(\'#sideCatalog-catalog dl\').stop().animate({\'top\': \'0\'}, \'fast\');
$(this).removeClass(\'sideCatalog-up-enable\').addClass(\'sideCatalog-up-disable\');
}
} else {
return false;
}
})
//点击导航中的各个目录
$(\'#sideCatalog-catalog dl\').delegate(\'dd\', \'click\', function () {
var index = $(\'#sideCatalog-catalog dl dd\').index($(this));
scrollSlide($(this), index);
var ddIndex = $(this).find(\'a\').stop().attr(\'href\').lastIndexOf(\'#\');
var ddId = $(this).find(\'a\').stop().attr(\'href\').substring(ddIndex+1);
var windowTop = $(\'a[name=\"\' + ddId + \'\"]\').offset().top;
$(\'body,html\').animate({scrollTop: windowTop}, \'fast\');
})
//滚动页面,即滚动条滚动
$(window).scroll(function () {
if($(this).scrollTop()>$(this).height()){
$(\'.slide\').show();
}else{
$(\'.slide\').hide();
}
for (var i=headLen-1; i>=0; i--) {
if ($(this).scrollTop() >=allEle.eq(i).offset().top - allEle.eq(i).height()) {
var index = i;
$(\'#sideCatalog-catalog dl dd\').eq(index).addClass(\'highlight\').siblings(\'dd\').removeClass(\'highlight\');
scrollSlide($(\'#sideCatalog-catalog dl dd\').eq(index), index);
return false;
} else {
$(\'#sideCatalog-catalog dl dd\').eq(0).addClass(\'highlight\').siblings(\'dd\').removeClass(\'highlight\');
}
}
})
//导航的滚动,以及向上,向下按钮的显示隐藏
function scrollSlide(that, index){
if (index < 5) {
$(\'#sideCatalog-catalog dl\').stop().animate({\'top\': \'0\'}, \'fast\');
$(\'#sideCatalog-down\').removeClass(\'sideCatalog-down-disable\').addClass(\'sideCatalog-down-enable\');
$(\'#sideCatalog-up\').removeClass(\'sideCatalog-up-enable\').addClass(\'sideCatalog-up-disable\');
} else if (index > 11) {
$(\'#sideCatalog-catalog dl\').stop().animate({\'top\': -enableTop}, \'fast\');
$(\'#sideCatalog-down\').removeClass(\'sideCatalog-down-enable\').addClass(\'sideCatalog-down-disable\');
$(\'#sideCatalog-up\').removeClass(\'sideCatalog-up-disable\').addClass(\'sideCatalog-up-enable\');
} else {
var dlTop = parseInt($(\'#sideCatalog-catalog dl\').css(\'top\')) + slideOutHeight / 2 - (that.offset().top - $(\'#sideCatalog-catalog\').offset().top);
$(\'#sideCatalog-catalog dl\').stop().animate({\'top\': dlTop}, \'fast\');
$(\'#sideCatalog-down\').removeClass(\'sideCatalog-down-disable\').addClass(\'sideCatalog-down-enable\');
$(\'#sideCatalog-up\').removeClass(\'sideCatalog-up-disable\').addClass(\'sideCatalog-up-enable\');
}
}
//置顶
$(\'#sideToolbar-up\').bind(\'click\', function(){
$(\'body,html\').animate({scrollTop: 0}, \'fast\');
})
//slide内容的显示与隐藏
$(\'#sideCatalogBtn\').bind(\'click\', function(){
if($(this).hasClass(\'sideCatalogBtnDisable\')){
$(this).removeClass(\'sideCatalogBtnDisable\');
$(\'#sideCatalog\').css(\'visibility\',\'visible\');
}else{
$(this).addClass(\'sideCatalogBtnDisable\');
$(\'#sideCatalog\').css(\'visibility\',\'hidden\');
}
})
</script>
本文地址:https://www.stayed.cn/item/21297
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我