Difference between revisions of "Team:OUC-China/js/jquery.bootstrap.min.js"
(Created page with "→* * jquery.bootstrap.js Copyright (c) Kris Zhang <kris.newghost@gmail.com> License: MIT (https://github.com/newghost/bootstrap-jquery-plugin/blob/master/LICENSE): String.prot...") |
ShuiqingWang (Talk | contribs) |
||
Line 1: | Line 1: | ||
− | / | + | /* |
− | * jquery. | + | * jquery.tocible.min.js v1.2.0, jQuery Tocible |
− | + | * | |
− | + | * Under MIT license, available at http://www.opensource.org/licenses/MIT. | |
− | */ | + | * |
− | + | * A lightweight table of contents navigation plugin | |
+ | * https://github.com/markserbol/tocible | ||
+ | * | ||
+ | */ | ||
+ | |||
+ | (function(a) { | ||
+ | var k = { | ||
+ | heading: "h2", | ||
+ | subheading: "h3", | ||
+ | reference: ".ref", | ||
+ | title: "", | ||
+ | hash: !1, | ||
+ | offsetTop: 50, | ||
+ | speed: 800, | ||
+ | collapsible: !0, | ||
+ | maxWidth: 150 | ||
+ | }; | ||
+ | a.fn.tocible = function(m) { | ||
+ | var d = a.extend({}, k, m); | ||
+ | return this.each(function() { | ||
+ | var b = a(this), | ||
+ | e, f, g, h, l; | ||
+ | b.find(".tocible").remove(); | ||
+ | f = b.find(d.reference); | ||
+ | f.css({ | ||
+ | visibility: "hidden" | ||
+ | }); | ||
+ | l = f.offset().left; | ||
+ | e = a("<div/>", { | ||
+ | "class": "tocible", | ||
+ | html: "<ul/>" | ||
+ | }); | ||
+ | e.css({ | ||
+ | "max-width": d.maxWidth | ||
+ | }); | ||
+ | b.append(e).css({ | ||
+ | position: "relative" | ||
+ | }); | ||
+ | if (d.title) { | ||
+ | var k = a(d.title).length ? a(d.title).text() : d.title; | ||
+ | a("<div/>", { | ||
+ | "class": "tocible_header", | ||
+ | html: k + "<span/>" | ||
+ | }).prependTo(e).click(function() { | ||
+ | a(this).siblings("ul").slideToggle({ | ||
+ | duration: "slow", | ||
+ | step: contain | ||
+ | }); | ||
+ | a(this).find("span").toggleClass("toc_open") | ||
+ | }) | ||
+ | } | ||
+ | g = b.find(d.heading); | ||
+ | h = b.find(d.subheading); | ||
+ | g.add(h).each(function() { | ||
+ | var c = a(this), | ||
+ | e, b, f; | ||
+ | e = c.attr("id") ? "#" + c.attr("id") : "#"; | ||
+ | b = c.text(); | ||
+ | c.is(g) ? f = "heading" : c.is(h) && (f = "subheading"); | ||
+ | b = a("<a/>", { | ||
+ | text: b, | ||
+ | href: e | ||
+ | }); | ||
+ | a("<li/>", { | ||
+ | "class": "tocible_" + f | ||
+ | }).append(b).appendTo(".tocible > ul"); | ||
+ | b.click(function(b) { | ||
+ | b.preventDefault(); | ||
+ | b = c.offset(); | ||
+ | if (d.hash) { | ||
+ | var f = a(window).scrollTop(); | ||
+ | history.pushState ? history.pushState({}, document.title, e) : (window.location.hash = e, a(window).scrollTop(f)) | ||
+ | } | ||
+ | a("html, body").stop(!0).animate({ | ||
+ | scrollTop: b.top - 10 - 83 | ||
+ | }, d.speed) | ||
+ | }) | ||
+ | }); | ||
+ | contain = function() { | ||
+ | var c = a(window).scrollTop(), | ||
+ | g = b.offset().top; | ||
+ | e.css({ | ||
+ | top: d.offsetTop + 10, | ||
+ | bottom: "auto", | ||
+ | left: l | ||
+ | }); | ||
+ | g + b.outerHeight() <= c + e.height() + d.offsetTop ? e.css({ | ||
+ | position: "absolute", | ||
+ | bottom: 0, | ||
+ | top: "auto", | ||
+ | left: f.position().left | ||
+ | }) : c >= g ? e.css({ | ||
+ | position: "fixed", | ||
+ | bottom: "auto", | ||
+ | top: d.offsetTop + 80, | ||
+ | left: f.offset().left - 170 | ||
+ | }) : e.css({ | ||
+ | position: "absolute", | ||
+ | left: f.position().left - 170 | ||
+ | }) | ||
+ | }; | ||
+ | onScroll = function() { | ||
+ | d.collapsible && a(".tocible li.tocible_subheading").hide(); | ||
+ | g.add(h).each(function(c) { | ||
+ | var b = a(this).offset().top; | ||
+ | c = a(".tocible li").eq(c); | ||
+ | a(window).scrollTop() >= b - 20 ? (c.addClass("toc_scrolled").siblings().removeClass("toc_scrolled"), d.collapsible && (c.siblings().filter(".tocible_subheading").hide(), c.is(".tocible_subheading") ? c.prevAll(".tocible_heading:first").nextUntil(".tocible_heading").show() : c.is(".tocible_heading") && c.nextUntil(".tocible_heading").show())) : c.removeClass("toc_scrolled") | ||
+ | }) | ||
+ | }; | ||
+ | a(window).on("resize scroll", function(a) { | ||
+ | contain(); | ||
+ | onScroll() | ||
+ | }).trigger("scroll") | ||
+ | }) | ||
+ | } | ||
+ | })(jQuery); |
Revision as of 15:25, 15 September 2015
/*
* jquery.tocible.min.js v1.2.0, jQuery Tocible * * Under MIT license, available at http://www.opensource.org/licenses/MIT. * * A lightweight table of contents navigation plugin * https://github.com/markserbol/tocible * */
(function(a) { var k = { heading: "h2", subheading: "h3", reference: ".ref", title: "", hash: !1, offsetTop: 50, speed: 800, collapsible: !0, maxWidth: 150 }; a.fn.tocible = function(m) { var d = a.extend({}, k, m); return this.each(function() { var b = a(this), e, f, g, h, l; b.find(".tocible").remove(); f = b.find(d.reference); f.css({ visibility: "hidden" }); l = f.offset().left; e = a("<div/>", { "class": "tocible", html: "<ul/>" }); e.css({ "max-width": d.maxWidth }); b.append(e).css({ position: "relative" }); if (d.title) { var k = a(d.title).length ? a(d.title).text() : d.title; a("<div/>", { "class": "tocible_header", html: k + "<span/>" }).prependTo(e).click(function() { a(this).siblings("ul").slideToggle({ duration: "slow", step: contain }); a(this).find("span").toggleClass("toc_open") }) } g = b.find(d.heading); h = b.find(d.subheading); g.add(h).each(function() { var c = a(this), e, b, f; e = c.attr("id") ? "#" + c.attr("id") : "#"; b = c.text(); c.is(g) ? f = "heading" : c.is(h) && (f = "subheading"); b = a("<a/>", { text: b, href: e });
a("