18 changed files with 1561 additions and 152 deletions
|
After Width: | Height: | Size: 5.9 KiB |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@ |
|||||
|
.api-single,.note-single{margin:25px 0 25px}#api{padding-top:0}.api-menu,.note-menu{margin-bottom:10px}.api-grid,.note-grid{padding-left:25px;padding-right:25px} |
||||
|
After Width: | Height: | Size: 4.2 KiB |
@ -0,0 +1,150 @@ |
|||||
|
@font-face { |
||||
|
font-family: "iconfont"; /* Project id 2374637 */ |
||||
|
src: url('iconfont.1.0.2.woff2?t=1636012998858') format('woff2'), |
||||
|
url('iconfont.1.0.2.woff?t=1636012998858') format('woff'), |
||||
|
url('iconfont.1.0.2.ttf?t=1636012998858') format('truetype'); |
||||
|
} |
||||
|
|
||||
|
.iconfont { |
||||
|
font-family: "iconfont" !important; |
||||
|
font-style: normal; |
||||
|
-webkit-font-smoothing: antialiased; |
||||
|
-moz-osx-font-smoothing: grayscale; |
||||
|
} |
||||
|
|
||||
|
.icon-jilu:before { |
||||
|
content: "\e66b"; |
||||
|
} |
||||
|
|
||||
|
.icon-dianzan2:before { |
||||
|
content: "\e602"; |
||||
|
} |
||||
|
|
||||
|
.icon-zan:before { |
||||
|
content: "\e61b"; |
||||
|
} |
||||
|
|
||||
|
.icon-detailscomments:before { |
||||
|
content: "\e618"; |
||||
|
} |
||||
|
|
||||
|
.icon-weibiaoti-:before { |
||||
|
content: "\e60e"; |
||||
|
} |
||||
|
|
||||
|
.icon-guanyu2:before { |
||||
|
content: "\e728"; |
||||
|
} |
||||
|
|
||||
|
.icon-hammer:before { |
||||
|
content: "\e87c"; |
||||
|
} |
||||
|
|
||||
|
.icon-ziyuan:before { |
||||
|
content: "\e635"; |
||||
|
} |
||||
|
|
||||
|
.icon-shezhi2:before { |
||||
|
content: "\e639"; |
||||
|
} |
||||
|
|
||||
|
.icon-shuju-zuopinlei:before { |
||||
|
content: "\e62d"; |
||||
|
} |
||||
|
|
||||
|
.icon-B:before { |
||||
|
content: "\e6fc"; |
||||
|
} |
||||
|
|
||||
|
.icon-zhiyuanshouye6:before { |
||||
|
content: "\e627"; |
||||
|
} |
||||
|
|
||||
|
.icon-redis:before { |
||||
|
content: "\e61a"; |
||||
|
} |
||||
|
|
||||
|
.icon-celery:before { |
||||
|
content: "\eb5b"; |
||||
|
} |
||||
|
|
||||
|
.icon-rabbitmq:before { |
||||
|
content: "\ec75"; |
||||
|
} |
||||
|
|
||||
|
.icon-youjian5:before { |
||||
|
content: "\e60b"; |
||||
|
} |
||||
|
|
||||
|
.icon-dingwei:before { |
||||
|
content: "\e656"; |
||||
|
} |
||||
|
|
||||
|
.icon-vertical_line:before { |
||||
|
content: "\e63b"; |
||||
|
} |
||||
|
|
||||
|
.icon-deng:before { |
||||
|
content: "\e619"; |
||||
|
} |
||||
|
|
||||
|
.icon-Html:before { |
||||
|
content: "\e696"; |
||||
|
} |
||||
|
|
||||
|
.icon-CDNjiasu:before { |
||||
|
content: "\e6c3"; |
||||
|
} |
||||
|
|
||||
|
.icon-iconfont:before { |
||||
|
content: "\e610"; |
||||
|
} |
||||
|
|
||||
|
.icon-jquery:before { |
||||
|
content: "\e655"; |
||||
|
} |
||||
|
|
||||
|
.icon-xiazai:before { |
||||
|
content: "\e601"; |
||||
|
} |
||||
|
|
||||
|
.icon-bootstrap:before { |
||||
|
content: "\e600"; |
||||
|
} |
||||
|
|
||||
|
.icon-API1:before { |
||||
|
content: "\e692"; |
||||
|
} |
||||
|
|
||||
|
.icon-vue1:before { |
||||
|
content: "\e8ad"; |
||||
|
} |
||||
|
|
||||
|
.icon-suanfamoxing:before { |
||||
|
content: "\e616"; |
||||
|
} |
||||
|
|
||||
|
.icon-django:before { |
||||
|
content: "\eb7b"; |
||||
|
} |
||||
|
|
||||
|
.icon-linux:before { |
||||
|
content: "\e63a"; |
||||
|
} |
||||
|
|
||||
|
.icon-python:before { |
||||
|
content: "\e68e"; |
||||
|
} |
||||
|
|
||||
|
.icon-icon_on_the_top:before { |
||||
|
content: "\e626"; |
||||
|
} |
||||
|
|
||||
|
.icon-weixin:before { |
||||
|
content: "\e660"; |
||||
|
} |
||||
|
|
||||
|
.icon-menu-fill:before { |
||||
|
content: "\e62a"; |
||||
|
} |
||||
|
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 5.7 KiB |
@ -0,0 +1,614 @@ |
|||||
|
!function (t, i, s) { |
||||
|
"use strict"; |
||||
|
var e, n = t.document, o = t.Modernizr, r = function (t) { |
||||
|
return t.charAt(0).toUpperCase() + t.slice(1) |
||||
|
}, a = "Moz Webkit O Ms".split(" "), h = function (t) { |
||||
|
var i, s = n.documentElement.style; |
||||
|
if ("string" == typeof s[t]) return t; |
||||
|
t = r(t); |
||||
|
for (var e = 0, o = a.length; o > e; e++) if (i = a[e] + t, "string" == typeof s[i]) return i |
||||
|
}, l = h("transform"), u = h("transitionProperty"), c = { |
||||
|
csstransforms: function () { |
||||
|
return !!l |
||||
|
}, csstransforms3d: function () { |
||||
|
var t = !!h("perspective"); |
||||
|
if (t) { |
||||
|
var s = " -o- -moz- -ms- -webkit- -khtml- ".split(" "), |
||||
|
e = "@media (" + s.join("transform-3d),(") + "modernizr)", |
||||
|
n = i("<style>" + e + "{#modernizr{height:3px}}</style>").appendTo("head"), |
||||
|
o = i('<div id="modernizr" />').appendTo("html"); |
||||
|
t = 3 === o.height(), o.remove(), n.remove() |
||||
|
} |
||||
|
return t |
||||
|
}, csstransitions: function () { |
||||
|
return !!u |
||||
|
} |
||||
|
}; |
||||
|
if (o) for (e in c) o.hasOwnProperty(e) || o.addTest(e, c[e]); else { |
||||
|
o = t.Modernizr = {_version: "1.6ish: miniModernizr for Isotope"}; |
||||
|
var d, f = " "; |
||||
|
for (e in c) d = c[e](), o[e] = d, f += " " + (d ? "" : "no-") + e; |
||||
|
i("html").addClass(f) |
||||
|
} |
||||
|
if (o.csstransforms) { |
||||
|
var m = o.csstransforms3d ? { |
||||
|
translate: function (t) { |
||||
|
return "translate3d(" + t[0] + "px, " + t[1] + "px, 0) " |
||||
|
}, scale: function (t) { |
||||
|
return "scale3d(" + t + ", " + t + ", 1) " |
||||
|
} |
||||
|
} : { |
||||
|
translate: function (t) { |
||||
|
return "translate(" + t[0] + "px, " + t[1] + "px) " |
||||
|
}, scale: function (t) { |
||||
|
return "scale(" + t + ") " |
||||
|
} |
||||
|
}, p = function (t, s, e) { |
||||
|
var n, o, r = i.data(t, "isoTransform") || {}, a = {}, h = {}; |
||||
|
a[s] = e, i.extend(r, a); |
||||
|
for (n in r) o = r[n], h[n] = m[n](o); |
||||
|
var u = h.translate || "", c = h.scale || "", d = u + c; |
||||
|
i.data(t, "isoTransform", r), t.style[l] = d |
||||
|
}; |
||||
|
i.cssNumber.scale = !0, i.cssHooks.scale = { |
||||
|
set: function (t, i) { |
||||
|
p(t, "scale", i) |
||||
|
}, get: function (t, s) { |
||||
|
var e = i.data(t, "isoTransform"); |
||||
|
return e && e.scale ? e.scale : 1 |
||||
|
} |
||||
|
}, i.fx.step.scale = function (t) { |
||||
|
i.cssHooks.scale.set(t.elem, t.now + t.unit) |
||||
|
}, i.cssNumber.translate = !0, i.cssHooks.translate = { |
||||
|
set: function (t, i) { |
||||
|
p(t, "translate", i) |
||||
|
}, get: function (t, s) { |
||||
|
var e = i.data(t, "isoTransform"); |
||||
|
return e && e.translate ? e.translate : [0, 0] |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
var y, g; |
||||
|
o.csstransitions && (y = { |
||||
|
WebkitTransitionProperty: "webkitTransitionEnd", |
||||
|
MozTransitionProperty: "transitionend", |
||||
|
OTransitionProperty: "oTransitionEnd otransitionend", |
||||
|
transitionProperty: "transitionend" |
||||
|
}[u], g = h("transitionDuration")); |
||||
|
var v, _ = i.event, A = i.event.handle ? "handle" : "dispatch"; |
||||
|
_.special.smartresize = { |
||||
|
setup: function () { |
||||
|
i(this).bind("resize", _.special.smartresize.handler) |
||||
|
}, teardown: function () { |
||||
|
i(this).unbind("resize", _.special.smartresize.handler) |
||||
|
}, handler: function (t, i) { |
||||
|
var s = this, e = arguments; |
||||
|
t.type = "smartresize", v && clearTimeout(v), v = setTimeout(function () { |
||||
|
_[A].apply(s, e) |
||||
|
}, "execAsap" === i ? 0 : 100) |
||||
|
} |
||||
|
}, i.fn.smartresize = function (t) { |
||||
|
return t ? this.bind("smartresize", t) : this.trigger("smartresize", ["execAsap"]) |
||||
|
}, i.Isotope = function (t, s, e) { |
||||
|
this.element = i(s), this._create(t), this._init(e) |
||||
|
}; |
||||
|
var w = ["width", "height"], C = i(t); |
||||
|
i.Isotope.settings = { |
||||
|
resizable: !0, |
||||
|
layoutMode: "masonry", |
||||
|
containerClass: "isotope", |
||||
|
itemClass: "isotope-item", |
||||
|
hiddenClass: "isotope-hidden", |
||||
|
hiddenStyle: {opacity: 0, scale: .001}, |
||||
|
visibleStyle: {opacity: 1, scale: 1}, |
||||
|
containerStyle: {position: "relative", overflow: "hidden"}, |
||||
|
animationEngine: "best-available", |
||||
|
animationOptions: {queue: !1, duration: 800}, |
||||
|
sortBy: "original-order", |
||||
|
sortAscending: !0, |
||||
|
resizesContainer: !0, |
||||
|
transformsEnabled: !0, |
||||
|
itemPositionDataEnabled: !1 |
||||
|
}, i.Isotope.prototype = { |
||||
|
_create: function (t) { |
||||
|
this.options = i.extend({}, i.Isotope.settings, t), this.styleQueue = [], this.elemCount = 0; |
||||
|
var s = this.element[0].style; |
||||
|
this.originalStyle = {}; |
||||
|
var e = w.slice(0); |
||||
|
for (var n in this.options.containerStyle) e.push(n); |
||||
|
for (var o = 0, r = e.length; r > o; o++) n = e[o], this.originalStyle[n] = s[n] || ""; |
||||
|
this.element.css(this.options.containerStyle), this._updateAnimationEngine(), this._updateUsingTransforms(); |
||||
|
var a = { |
||||
|
"original-order": function (t, i) { |
||||
|
return i.elemCount++, i.elemCount |
||||
|
}, random: function () { |
||||
|
return Math.random() |
||||
|
} |
||||
|
}; |
||||
|
this.options.getSortData = i.extend(this.options.getSortData, a), this.reloadItems(), this.offset = { |
||||
|
left: parseInt(this.element.css("padding-left") || 0, 10), |
||||
|
top: parseInt(this.element.css("padding-top") || 0, 10) |
||||
|
}; |
||||
|
var h = this; |
||||
|
setTimeout(function () { |
||||
|
h.element.addClass(h.options.containerClass) |
||||
|
}, 0), this.options.resizable && C.bind("smartresize.isotope", function () { |
||||
|
h.resize() |
||||
|
}), this.element.delegate("." + this.options.hiddenClass, "click", function () { |
||||
|
return !1 |
||||
|
}) |
||||
|
}, _getAtoms: function (t) { |
||||
|
var i = this.options.itemSelector, s = i ? t.filter(i).add(t.find(i)) : t, e = {position: "absolute"}; |
||||
|
return s = s.filter(function (t, i) { |
||||
|
return 1 === i.nodeType |
||||
|
}), this.usingTransforms && (e.left = 0, e.top = 0), s.css(e).addClass(this.options.itemClass), this.updateSortData(s, !0), s |
||||
|
}, _init: function (t) { |
||||
|
this.$filteredAtoms = this._filter(this.$allAtoms), this._sort(), this.reLayout(t) |
||||
|
}, option: function (t) { |
||||
|
if (i.isPlainObject(t)) { |
||||
|
this.options = i.extend(!0, this.options, t); |
||||
|
var s; |
||||
|
for (var e in t) s = "_update" + r(e), this[s] && this[s]() |
||||
|
} |
||||
|
}, _updateAnimationEngine: function () { |
||||
|
var t, i = this.options.animationEngine.toLowerCase().replace(/[ _\-]/g, ""); |
||||
|
switch (i) { |
||||
|
case "css": |
||||
|
case "none": |
||||
|
t = !1; |
||||
|
break; |
||||
|
case "jquery": |
||||
|
t = !0; |
||||
|
break; |
||||
|
default: |
||||
|
t = !o.csstransitions |
||||
|
} |
||||
|
this.isUsingJQueryAnimation = t, this._updateUsingTransforms() |
||||
|
}, _updateTransformsEnabled: function () { |
||||
|
this._updateUsingTransforms() |
||||
|
}, _updateUsingTransforms: function () { |
||||
|
var t = this.usingTransforms = this.options.transformsEnabled && o.csstransforms && o.csstransitions && !this.isUsingJQueryAnimation; |
||||
|
t || (delete this.options.hiddenStyle.scale, delete this.options.visibleStyle.scale), this.getPositionStyles = t ? this._translate : this._positionAbs |
||||
|
}, _filter: function (t) { |
||||
|
var i = "" === this.options.filter ? "*" : this.options.filter; |
||||
|
if (!i) return t; |
||||
|
var s = this.options.hiddenClass, e = "." + s, n = t.filter(e), o = n; |
||||
|
if ("*" !== i) { |
||||
|
o = n.filter(i); |
||||
|
var r = t.not(e).not(i).addClass(s); |
||||
|
this.styleQueue.push({$el: r, style: this.options.hiddenStyle}) |
||||
|
} |
||||
|
return this.styleQueue.push({$el: o, style: this.options.visibleStyle}), o.removeClass(s), t.filter(i) |
||||
|
}, updateSortData: function (t, s) { |
||||
|
var e, n, o = this, r = this.options.getSortData; |
||||
|
t.each(function () { |
||||
|
e = i(this), n = {}; |
||||
|
for (var t in r) s || "original-order" !== t ? n[t] = r[t](e, o) : n[t] = i.data(this, "isotope-sort-data")[t]; |
||||
|
i.data(this, "isotope-sort-data", n) |
||||
|
}) |
||||
|
}, _sort: function () { |
||||
|
var t = this.options.sortBy, i = this._getSorter, s = this.options.sortAscending ? 1 : -1, |
||||
|
e = function (e, n) { |
||||
|
var o = i(e, t), r = i(n, t); |
||||
|
return o === r && "original-order" !== t && (o = i(e, "original-order"), r = i(n, "original-order")), (o > r ? 1 : r > o ? -1 : 0) * s |
||||
|
}; |
||||
|
this.$filteredAtoms.sort(e) |
||||
|
}, _getSorter: function (t, s) { |
||||
|
return i.data(t, "isotope-sort-data")[s] |
||||
|
}, _translate: function (t, i) { |
||||
|
return {translate: [t, i]} |
||||
|
}, _positionAbs: function (t, i) { |
||||
|
return {left: t, top: i} |
||||
|
}, _pushPosition: function (t, i, s) { |
||||
|
i = Math.round(i + this.offset.left), s = Math.round(s + this.offset.top); |
||||
|
var e = this.getPositionStyles(i, s); |
||||
|
this.styleQueue.push({ |
||||
|
$el: t, |
||||
|
style: e |
||||
|
}), this.options.itemPositionDataEnabled && t.data("isotope-item-position", {x: i, y: s}) |
||||
|
}, layout: function (t, i) { |
||||
|
var s = this.options.layoutMode; |
||||
|
if (this["_" + s + "Layout"](t), this.options.resizesContainer) { |
||||
|
var e = this["_" + s + "GetContainerSize"](); |
||||
|
this.styleQueue.push({$el: this.element, style: e}) |
||||
|
} |
||||
|
this._processStyleQueue(t, i), this.isLaidOut = !0 |
||||
|
}, _processStyleQueue: function (t, s) { |
||||
|
var e, n, r, a, h = this.isLaidOut && this.isUsingJQueryAnimation ? "animate" : "css", |
||||
|
l = this.options.animationOptions, u = this.options.onLayout; |
||||
|
if (n = function (t, i) { |
||||
|
i.$el[h](i.style, l) |
||||
|
}, this._isInserting && this.isUsingJQueryAnimation) n = function (t, i) { |
||||
|
e = i.$el.hasClass("no-transition") ? "css" : h, i.$el[e](i.style, l) |
||||
|
}; else if (s || u || l.complete) { |
||||
|
var c = !1, d = [s, u, l.complete], f = this; |
||||
|
if (r = !0, a = function () { |
||||
|
if (!c) { |
||||
|
for (var i, s = 0, e = d.length; e > s; s++) i = d[s], "function" == typeof i && i.call(f.element, t, f); |
||||
|
c = !0 |
||||
|
} |
||||
|
}, this.isUsingJQueryAnimation && "animate" === h) l.complete = a, r = !1; else if (o.csstransitions) { |
||||
|
for (var m, p = 0, v = this.styleQueue[0], _ = v && v.$el; !_ || !_.length;) { |
||||
|
if (m = this.styleQueue[p++], !m) return; |
||||
|
_ = m.$el |
||||
|
} |
||||
|
var A = parseFloat(getComputedStyle(_[0])[g]); |
||||
|
A > 0 && (n = function (t, i) { |
||||
|
i.$el[h](i.style, l).one(y, a) |
||||
|
}, r = !1) |
||||
|
} |
||||
|
} |
||||
|
i.each(this.styleQueue, n), r && a(), this.styleQueue = [] |
||||
|
}, resize: function () { |
||||
|
this["_" + this.options.layoutMode + "ResizeChanged"]() && this.reLayout() |
||||
|
}, reLayout: function (t) { |
||||
|
this["_" + this.options.layoutMode + "Reset"](), this.layout(this.$filteredAtoms, t) |
||||
|
}, addItems: function (t, i) { |
||||
|
var s = this._getAtoms(t); |
||||
|
this.$allAtoms = this.$allAtoms.add(s), i && i(s) |
||||
|
}, insert: function (t, i) { |
||||
|
this.element.append(t); |
||||
|
var s = this; |
||||
|
this.addItems(t, function (t) { |
||||
|
var e = s._filter(t); |
||||
|
s._addHideAppended(e), s._sort(), s.reLayout(), s._revealAppended(e, i) |
||||
|
}) |
||||
|
}, appended: function (t, i) { |
||||
|
var s = this; |
||||
|
this.addItems(t, function (t) { |
||||
|
s._addHideAppended(t), s.layout(t), s._revealAppended(t, i) |
||||
|
}) |
||||
|
}, _addHideAppended: function (t) { |
||||
|
this.$filteredAtoms = this.$filteredAtoms.add(t), t.addClass("no-transition"), this._isInserting = !0, this.styleQueue.push({ |
||||
|
$el: t, |
||||
|
style: this.options.hiddenStyle |
||||
|
}) |
||||
|
}, _revealAppended: function (t, i) { |
||||
|
var s = this; |
||||
|
setTimeout(function () { |
||||
|
t.removeClass("no-transition"), s.styleQueue.push({ |
||||
|
$el: t, |
||||
|
style: s.options.visibleStyle |
||||
|
}), s._isInserting = !1, s._processStyleQueue(t, i) |
||||
|
}, 10) |
||||
|
}, reloadItems: function () { |
||||
|
this.$allAtoms = this._getAtoms(this.element.children()) |
||||
|
}, remove: function (t, i) { |
||||
|
this.$allAtoms = this.$allAtoms.not(t), this.$filteredAtoms = this.$filteredAtoms.not(t); |
||||
|
var s = this, e = function () { |
||||
|
t.remove(), i && i.call(s.element) |
||||
|
}; |
||||
|
t.filter(":not(." + this.options.hiddenClass + ")").length ? (this.styleQueue.push({ |
||||
|
$el: t, |
||||
|
style: this.options.hiddenStyle |
||||
|
}), this._sort(), this.reLayout(e)) : e() |
||||
|
}, shuffle: function (t) { |
||||
|
this.updateSortData(this.$allAtoms), this.options.sortBy = "random", this._sort(), this.reLayout(t) |
||||
|
}, destroy: function () { |
||||
|
var t = this.usingTransforms, i = this.options; |
||||
|
this.$allAtoms.removeClass(i.hiddenClass + " " + i.itemClass).each(function () { |
||||
|
var i = this.style; |
||||
|
i.position = "", i.top = "", i.left = "", i.opacity = "", t && (i[l] = "") |
||||
|
}); |
||||
|
var s = this.element[0].style; |
||||
|
for (var e in this.originalStyle) s[e] = this.originalStyle[e]; |
||||
|
this.element.unbind(".isotope").undelegate("." + i.hiddenClass, "click").removeClass(i.containerClass).removeData("isotope"), C.unbind(".isotope") |
||||
|
}, _getSegments: function (t) { |
||||
|
var i, s = this.options.layoutMode, e = t ? "rowHeight" : "columnWidth", n = t ? "height" : "width", |
||||
|
o = t ? "rows" : "cols", a = this.element[n](), |
||||
|
h = this.options[s] && this.options[s][e] || this.$filteredAtoms["outer" + r(n)](!0) || a; |
||||
|
i = Math.floor(a / h), i = Math.max(i, 1), this[s][o] = i, this[s][e] = h |
||||
|
}, _checkIfSegmentsChanged: function (t) { |
||||
|
var i = this.options.layoutMode, s = t ? "rows" : "cols", e = this[i][s]; |
||||
|
return this._getSegments(t), this[i][s] !== e |
||||
|
}, _masonryReset: function () { |
||||
|
this.masonry = {}, this._getSegments(); |
||||
|
var t = this.masonry.cols; |
||||
|
for (this.masonry.colYs = []; t--;) this.masonry.colYs.push(0) |
||||
|
}, _masonryLayout: function (t) { |
||||
|
var s = this, e = s.masonry; |
||||
|
t.each(function () { |
||||
|
var t = i(this), n = Math.ceil(t.outerWidth(!0) / e.columnWidth); |
||||
|
if (n = Math.min(n, e.cols), 1 === n) s._masonryPlaceBrick(t, e.colYs); else { |
||||
|
var o, r, a = e.cols + 1 - n, h = []; |
||||
|
for (r = 0; a > r; r++) o = e.colYs.slice(r, r + n), h[r] = Math.max.apply(Math, o); |
||||
|
s._masonryPlaceBrick(t, h) |
||||
|
} |
||||
|
}) |
||||
|
}, _masonryPlaceBrick: function (t, i) { |
||||
|
for (var s = Math.min.apply(Math, i), e = 0, n = 0, o = i.length; o > n; n++) if (i[n] === s) { |
||||
|
e = n; |
||||
|
break |
||||
|
} |
||||
|
var r = this.masonry.columnWidth * e, a = s; |
||||
|
this._pushPosition(t, r, a); |
||||
|
var h = s + t.outerHeight(!0), l = this.masonry.cols + 1 - o; |
||||
|
for (n = 0; l > n; n++) this.masonry.colYs[e + n] = h |
||||
|
}, _masonryGetContainerSize: function () { |
||||
|
var t = Math.max.apply(Math, this.masonry.colYs); |
||||
|
return {height: t} |
||||
|
}, _masonryResizeChanged: function () { |
||||
|
return this._checkIfSegmentsChanged() |
||||
|
}, _fitRowsReset: function () { |
||||
|
this.fitRows = {x: 0, y: 0, height: 0} |
||||
|
}, _fitRowsLayout: function (t) { |
||||
|
var s = this, e = this.element.width(), n = this.fitRows; |
||||
|
t.each(function () { |
||||
|
var t = i(this), o = t.outerWidth(!0), r = t.outerHeight(!0); |
||||
|
0 !== n.x && o + n.x > e && (n.x = 0, n.y = n.height), s._pushPosition(t, n.x, n.y), n.height = Math.max(n.y + r, n.height), n.x += o |
||||
|
}) |
||||
|
}, _fitRowsGetContainerSize: function () { |
||||
|
return {height: this.fitRows.height} |
||||
|
}, _fitRowsResizeChanged: function () { |
||||
|
return !0 |
||||
|
}, _cellsByRowReset: function () { |
||||
|
this.cellsByRow = {index: 0}, this._getSegments(), this._getSegments(!0) |
||||
|
}, _cellsByRowLayout: function (t) { |
||||
|
var s = this, e = this.cellsByRow; |
||||
|
t.each(function () { |
||||
|
var t = i(this), n = e.index % e.cols, o = Math.floor(e.index / e.cols), |
||||
|
r = (n + .5) * e.columnWidth - t.outerWidth(!0) / 2, |
||||
|
a = (o + .5) * e.rowHeight - t.outerHeight(!0) / 2; |
||||
|
s._pushPosition(t, r, a), e.index++ |
||||
|
}) |
||||
|
}, _cellsByRowGetContainerSize: function () { |
||||
|
return {height: Math.ceil(this.$filteredAtoms.length / this.cellsByRow.cols) * this.cellsByRow.rowHeight + this.offset.top} |
||||
|
}, _cellsByRowResizeChanged: function () { |
||||
|
return this._checkIfSegmentsChanged() |
||||
|
}, _straightDownReset: function () { |
||||
|
this.straightDown = {y: 0} |
||||
|
}, _straightDownLayout: function (t) { |
||||
|
var s = this; |
||||
|
t.each(function (t) { |
||||
|
var e = i(this); |
||||
|
s._pushPosition(e, 0, s.straightDown.y), s.straightDown.y += e.outerHeight(!0) |
||||
|
}) |
||||
|
}, _straightDownGetContainerSize: function () { |
||||
|
return {height: this.straightDown.y} |
||||
|
}, _straightDownResizeChanged: function () { |
||||
|
return !0 |
||||
|
}, _masonryHorizontalReset: function () { |
||||
|
this.masonryHorizontal = {}, this._getSegments(!0); |
||||
|
var t = this.masonryHorizontal.rows; |
||||
|
for (this.masonryHorizontal.rowXs = []; t--;) this.masonryHorizontal.rowXs.push(0) |
||||
|
}, _masonryHorizontalLayout: function (t) { |
||||
|
var s = this, e = s.masonryHorizontal; |
||||
|
t.each(function () { |
||||
|
var t = i(this), n = Math.ceil(t.outerHeight(!0) / e.rowHeight); |
||||
|
if (n = Math.min(n, e.rows), 1 === n) s._masonryHorizontalPlaceBrick(t, e.rowXs); else { |
||||
|
var o, r, a = e.rows + 1 - n, h = []; |
||||
|
for (r = 0; a > r; r++) o = e.rowXs.slice(r, r + n), h[r] = Math.max.apply(Math, o); |
||||
|
s._masonryHorizontalPlaceBrick(t, h) |
||||
|
} |
||||
|
}) |
||||
|
}, _masonryHorizontalPlaceBrick: function (t, i) { |
||||
|
for (var s = Math.min.apply(Math, i), e = 0, n = 0, o = i.length; o > n; n++) if (i[n] === s) { |
||||
|
e = n; |
||||
|
break |
||||
|
} |
||||
|
var r = s, a = this.masonryHorizontal.rowHeight * e; |
||||
|
this._pushPosition(t, r, a); |
||||
|
var h = s + t.outerWidth(!0), l = this.masonryHorizontal.rows + 1 - o; |
||||
|
for (n = 0; l > n; n++) this.masonryHorizontal.rowXs[e + n] = h |
||||
|
}, _masonryHorizontalGetContainerSize: function () { |
||||
|
var t = Math.max.apply(Math, this.masonryHorizontal.rowXs); |
||||
|
return {width: t} |
||||
|
}, _masonryHorizontalResizeChanged: function () { |
||||
|
return this._checkIfSegmentsChanged(!0) |
||||
|
}, _fitColumnsReset: function () { |
||||
|
this.fitColumns = {x: 0, y: 0, width: 0} |
||||
|
}, _fitColumnsLayout: function (t) { |
||||
|
var s = this, e = this.element.height(), n = this.fitColumns; |
||||
|
t.each(function () { |
||||
|
var t = i(this), o = t.outerWidth(!0), r = t.outerHeight(!0); |
||||
|
0 !== n.y && r + n.y > e && (n.x = n.width, n.y = 0), s._pushPosition(t, n.x, n.y), n.width = Math.max(n.x + o, n.width), n.y += r |
||||
|
}) |
||||
|
}, _fitColumnsGetContainerSize: function () { |
||||
|
return {width: this.fitColumns.width} |
||||
|
}, _fitColumnsResizeChanged: function () { |
||||
|
return !0 |
||||
|
}, _cellsByColumnReset: function () { |
||||
|
this.cellsByColumn = {index: 0}, this._getSegments(), this._getSegments(!0) |
||||
|
}, _cellsByColumnLayout: function (t) { |
||||
|
var s = this, e = this.cellsByColumn; |
||||
|
t.each(function () { |
||||
|
var t = i(this), n = Math.floor(e.index / e.rows), o = e.index % e.rows, |
||||
|
r = (n + .5) * e.columnWidth - t.outerWidth(!0) / 2, |
||||
|
a = (o + .5) * e.rowHeight - t.outerHeight(!0) / 2; |
||||
|
s._pushPosition(t, r, a), e.index++ |
||||
|
}) |
||||
|
}, _cellsByColumnGetContainerSize: function () { |
||||
|
return {width: Math.ceil(this.$filteredAtoms.length / this.cellsByColumn.rows) * this.cellsByColumn.columnWidth} |
||||
|
}, _cellsByColumnResizeChanged: function () { |
||||
|
return this._checkIfSegmentsChanged(!0) |
||||
|
}, _straightAcrossReset: function () { |
||||
|
this.straightAcross = {x: 0} |
||||
|
}, _straightAcrossLayout: function (t) { |
||||
|
var s = this; |
||||
|
t.each(function (t) { |
||||
|
var e = i(this); |
||||
|
s._pushPosition(e, s.straightAcross.x, 0), s.straightAcross.x += e.outerWidth(!0) |
||||
|
}) |
||||
|
}, _straightAcrossGetContainerSize: function () { |
||||
|
return {width: this.straightAcross.x} |
||||
|
}, _straightAcrossResizeChanged: function () { |
||||
|
return !0 |
||||
|
} |
||||
|
}, i.fn.imagesLoaded = function (t) { |
||||
|
function s() { |
||||
|
t.call(n, o) |
||||
|
} |
||||
|
|
||||
|
function e(t) { |
||||
|
var n = t.target; |
||||
|
n.src !== a && -1 === i.inArray(n, h) && (h.push(n), --r <= 0 && (setTimeout(s), o.unbind(".imagesLoaded", e))) |
||||
|
} |
||||
|
|
||||
|
var n = this, o = n.find("img").add(n.filter("img")), r = o.length, |
||||
|
a = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==", h = []; |
||||
|
return r || s(), o.bind("load.imagesLoaded error.imagesLoaded", e).each(function () { |
||||
|
var t = this.src; |
||||
|
this.src = a, this.src = t |
||||
|
}), n |
||||
|
}; |
||||
|
var z = function (i) { |
||||
|
t.console && t.console.error(i) |
||||
|
}; |
||||
|
i.fn.isotope = function (t, s) { |
||||
|
if ("string" == typeof t) { |
||||
|
var e = Array.prototype.slice.call(arguments, 1); |
||||
|
this.each(function () { |
||||
|
var s = i.data(this, "isotope"); |
||||
|
return s ? i.isFunction(s[t]) && "_" !== t.charAt(0) ? void s[t].apply(s, e) : void z("no such method '" + t + "' for isotope instance") : void z("cannot call methods on isotope prior to initialization; attempted to call method '" + t + "'") |
||||
|
}) |
||||
|
} else this.each(function () { |
||||
|
var e = i.data(this, "isotope"); |
||||
|
e ? (e.option(t), e._init(s)) : i.data(this, "isotope", new i.Isotope(t, this, s)) |
||||
|
}); |
||||
|
return this |
||||
|
} |
||||
|
}(window, jQuery); |
||||
|
let $mainNav = $("#mainNav"); |
||||
|
let $body = $("body"); |
||||
|
let $scroll_to_top = $("#scroll-to-top"); |
||||
|
// 页面顶部时,导航栏背景透明
|
||||
|
let toggle_flag = true; |
||||
|
$('.navbar-toggler').click(() => { |
||||
|
let all_class = $mainNav.attr('class'); |
||||
|
if (all_class.indexOf('navbar-shrink') === -1) { |
||||
|
$mainNav.addClass('navbar-shrink'); |
||||
|
} else { |
||||
|
if ($mainNav.offset().top <= 10) { |
||||
|
$mainNav.removeClass("navbar-shrink"); |
||||
|
} |
||||
|
} |
||||
|
toggle_flag = false; |
||||
|
}); |
||||
|
// 移动端点击空白处,隐藏菜单
|
||||
|
$body.click(() => { |
||||
|
$('.navbar-collapse').collapse('hide'); |
||||
|
if (toggle_flag) { // 阻止事件冒泡
|
||||
|
if ($mainNav.offset().top <= 10) { |
||||
|
$mainNav.removeClass("navbar-shrink"); |
||||
|
} |
||||
|
} |
||||
|
toggle_flag = true; |
||||
|
}); |
||||
|
// 移动端点击菜单后,隐藏菜单
|
||||
|
$('.js-scroll-trigger').click(() => { |
||||
|
$('.navbar-collapse').collapse('hide'); |
||||
|
}); |
||||
|
// 导航栏自动隐藏
|
||||
|
let previousTop = 0; |
||||
|
$(window).scroll(() => { |
||||
|
let currentTop = $(window).scrollTop(); |
||||
|
if (currentTop - previousTop < -10) { |
||||
|
// 下划
|
||||
|
$mainNav.removeClass("show-none"); |
||||
|
previousTop = currentTop; |
||||
|
} else if (currentTop - previousTop > 10) { |
||||
|
// 上划
|
||||
|
$mainNav.addClass("show-none"); |
||||
|
$('.navbar-collapse').collapse('hide'); |
||||
|
previousTop = currentTop; |
||||
|
} |
||||
|
if (currentTop < 60) { |
||||
|
// 首页常显示
|
||||
|
$mainNav.removeClass("show-none"); |
||||
|
} |
||||
|
}); |
||||
|
// 非顶部刷新时,设置导航栏不透明
|
||||
|
let navbarCollapse = () => { |
||||
|
if ($mainNav.offset().top > 10) { |
||||
|
$mainNav.addClass("navbar-shrink"); |
||||
|
} else { |
||||
|
$mainNav.removeClass("navbar-shrink"); |
||||
|
} |
||||
|
}; |
||||
|
navbarCollapse(); |
||||
|
$(window).scroll(navbarCollapse); |
||||
|
// 底部滚动
|
||||
|
$(window).scroll(() => { |
||||
|
if ($(window).scrollTop() < 100) { |
||||
|
$scroll_to_top.removeClass('show'); |
||||
|
} else { |
||||
|
$scroll_to_top.addClass('show'); |
||||
|
} |
||||
|
}); |
||||
|
$scroll_to_top.click(function (e) { |
||||
|
e.preventDefault() |
||||
|
$('html,body').animate({ |
||||
|
scrollTop: 0 |
||||
|
}, 700); |
||||
|
}); |
||||
|
// 主题切换
|
||||
|
let like_color = 'darkorange'; |
||||
|
let like_color0 = '#888888'; |
||||
|
if ($('body').hasClass('body_dark')) { |
||||
|
$('.article-single').addClass('body_dark'); |
||||
|
like_color = '#68a7eb'; |
||||
|
like_color0 = '#777777'; |
||||
|
} |
||||
|
let set_light = () => { |
||||
|
$('.body_dark').removeClass('body_dark'); |
||||
|
$('#logo').attr('src', 'logo/logo.png'); |
||||
|
like_color = 'darkorange'; |
||||
|
like_color0 = '#888888'; |
||||
|
let headHTML = document.getElementsByTagName('head')[0].innerHTML; |
||||
|
headHTML = headHTML.replace(/1A1D24/, "E4EBF8"); |
||||
|
document.getElementsByTagName('head')[0].innerHTML = headHTML; |
||||
|
}; |
||||
|
let set_dark = () => { |
||||
|
$('#logo').attr('src', 'logo/logo-dark.png'); |
||||
|
$('body').addClass('body_dark'); |
||||
|
$('.section-title h3').addClass('body_dark'); |
||||
|
$('#mainNav').addClass('body_dark'); |
||||
|
$('#switch_dark').addClass('body_dark'); |
||||
|
$('.navbar-toggler').addClass('body_dark'); |
||||
|
$('.blog').addClass('body_dark'); |
||||
|
$('.section').addClass('body_dark'); |
||||
|
$('.section button').addClass('body_dark'); |
||||
|
$('#home').addClass('body_dark'); |
||||
|
$('#notes .services-inner-box').addClass('body_dark'); |
||||
|
$('#api .services-inner-box').addClass('body_dark'); |
||||
|
$('#opus .opus-single').addClass('body_dark'); |
||||
|
$('#demo .demo-single').addClass('body_dark'); |
||||
|
$('#contact .contact_form').addClass('body_dark'); |
||||
|
$('.article-single').addClass('body_dark'); |
||||
|
like_color = '#68a7eb'; |
||||
|
like_color0 = '#777777'; |
||||
|
let headHTML = document.getElementsByTagName('head')[0].innerHTML; |
||||
|
headHTML = headHTML.replace(/E4EBF8/, "1A1D24"); |
||||
|
document.getElementsByTagName('head')[0].innerHTML = headHTML; |
||||
|
}; |
||||
|
$('.toggle').click(function (e) { |
||||
|
$(this).toggleClass('toggle--on') |
||||
|
.toggleClass('toggle--off') |
||||
|
.addClass('toggle--moving'); |
||||
|
setTimeout(() => { |
||||
|
$(this).removeClass('toggle--moving'); |
||||
|
}, 200); |
||||
|
let is_dark = $('body').hasClass('body_dark'); |
||||
|
$('.clock div').css('transition', 'all .3s ease-in-out'); |
||||
|
setTimeout(() => { |
||||
|
$('.clock div.minutes').css('transition', 'none'); |
||||
|
$('.clock div.hours').css('transition', 'none'); |
||||
|
}, 400); |
||||
|
setTimeout(() => { |
||||
|
if (!is_dark) { |
||||
|
set_dark(); |
||||
|
} else { |
||||
|
set_light(); |
||||
|
} |
||||
|
}, 100); |
||||
|
$.ajax({ |
||||
|
url: '/toggle_dark/', |
||||
|
type: 'post', |
||||
|
data: { |
||||
|
'csrfmiddlewaretoken': $('[name="csrfmiddlewaretoken"]').val(), |
||||
|
'is_dark': is_dark, |
||||
|
}, |
||||
|
success: () => { |
||||
|
} |
||||
|
}) |
||||
|
}); |
||||
@ -0,0 +1,614 @@ |
|||||
|
!function (t, i, s) { |
||||
|
"use strict"; |
||||
|
var e, n = t.document, o = t.Modernizr, r = function (t) { |
||||
|
return t.charAt(0).toUpperCase() + t.slice(1) |
||||
|
}, a = "Moz Webkit O Ms".split(" "), h = function (t) { |
||||
|
var i, s = n.documentElement.style; |
||||
|
if ("string" == typeof s[t]) return t; |
||||
|
t = r(t); |
||||
|
for (var e = 0, o = a.length; o > e; e++) if (i = a[e] + t, "string" == typeof s[i]) return i |
||||
|
}, l = h("transform"), u = h("transitionProperty"), c = { |
||||
|
csstransforms: function () { |
||||
|
return !!l |
||||
|
}, csstransforms3d: function () { |
||||
|
var t = !!h("perspective"); |
||||
|
if (t) { |
||||
|
var s = " -o- -moz- -ms- -webkit- -khtml- ".split(" "), |
||||
|
e = "@media (" + s.join("transform-3d),(") + "modernizr)", |
||||
|
n = i("<style>" + e + "{#modernizr{height:3px}}</style>").appendTo("head"), |
||||
|
o = i('<div id="modernizr" />').appendTo("html"); |
||||
|
t = 3 === o.height(), o.remove(), n.remove() |
||||
|
} |
||||
|
return t |
||||
|
}, csstransitions: function () { |
||||
|
return !!u |
||||
|
} |
||||
|
}; |
||||
|
if (o) for (e in c) o.hasOwnProperty(e) || o.addTest(e, c[e]); else { |
||||
|
o = t.Modernizr = {_version: "1.6ish: miniModernizr for Isotope"}; |
||||
|
var d, f = " "; |
||||
|
for (e in c) d = c[e](), o[e] = d, f += " " + (d ? "" : "no-") + e; |
||||
|
i("html").addClass(f) |
||||
|
} |
||||
|
if (o.csstransforms) { |
||||
|
var m = o.csstransforms3d ? { |
||||
|
translate: function (t) { |
||||
|
return "translate3d(" + t[0] + "px, " + t[1] + "px, 0) " |
||||
|
}, scale: function (t) { |
||||
|
return "scale3d(" + t + ", " + t + ", 1) " |
||||
|
} |
||||
|
} : { |
||||
|
translate: function (t) { |
||||
|
return "translate(" + t[0] + "px, " + t[1] + "px) " |
||||
|
}, scale: function (t) { |
||||
|
return "scale(" + t + ") " |
||||
|
} |
||||
|
}, p = function (t, s, e) { |
||||
|
var n, o, r = i.data(t, "isoTransform") || {}, a = {}, h = {}; |
||||
|
a[s] = e, i.extend(r, a); |
||||
|
for (n in r) o = r[n], h[n] = m[n](o); |
||||
|
var u = h.translate || "", c = h.scale || "", d = u + c; |
||||
|
i.data(t, "isoTransform", r), t.style[l] = d |
||||
|
}; |
||||
|
i.cssNumber.scale = !0, i.cssHooks.scale = { |
||||
|
set: function (t, i) { |
||||
|
p(t, "scale", i) |
||||
|
}, get: function (t, s) { |
||||
|
var e = i.data(t, "isoTransform"); |
||||
|
return e && e.scale ? e.scale : 1 |
||||
|
} |
||||
|
}, i.fx.step.scale = function (t) { |
||||
|
i.cssHooks.scale.set(t.elem, t.now + t.unit) |
||||
|
}, i.cssNumber.translate = !0, i.cssHooks.translate = { |
||||
|
set: function (t, i) { |
||||
|
p(t, "translate", i) |
||||
|
}, get: function (t, s) { |
||||
|
var e = i.data(t, "isoTransform"); |
||||
|
return e && e.translate ? e.translate : [0, 0] |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
var y, g; |
||||
|
o.csstransitions && (y = { |
||||
|
WebkitTransitionProperty: "webkitTransitionEnd", |
||||
|
MozTransitionProperty: "transitionend", |
||||
|
OTransitionProperty: "oTransitionEnd otransitionend", |
||||
|
transitionProperty: "transitionend" |
||||
|
}[u], g = h("transitionDuration")); |
||||
|
var v, _ = i.event, A = i.event.handle ? "handle" : "dispatch"; |
||||
|
_.special.smartresize = { |
||||
|
setup: function () { |
||||
|
i(this).bind("resize", _.special.smartresize.handler) |
||||
|
}, teardown: function () { |
||||
|
i(this).unbind("resize", _.special.smartresize.handler) |
||||
|
}, handler: function (t, i) { |
||||
|
var s = this, e = arguments; |
||||
|
t.type = "smartresize", v && clearTimeout(v), v = setTimeout(function () { |
||||
|
_[A].apply(s, e) |
||||
|
}, "execAsap" === i ? 0 : 100) |
||||
|
} |
||||
|
}, i.fn.smartresize = function (t) { |
||||
|
return t ? this.bind("smartresize", t) : this.trigger("smartresize", ["execAsap"]) |
||||
|
}, i.Isotope = function (t, s, e) { |
||||
|
this.element = i(s), this._create(t), this._init(e) |
||||
|
}; |
||||
|
var w = ["width", "height"], C = i(t); |
||||
|
i.Isotope.settings = { |
||||
|
resizable: !0, |
||||
|
layoutMode: "masonry", |
||||
|
containerClass: "isotope", |
||||
|
itemClass: "isotope-item", |
||||
|
hiddenClass: "isotope-hidden", |
||||
|
hiddenStyle: {opacity: 0, scale: .001}, |
||||
|
visibleStyle: {opacity: 1, scale: 1}, |
||||
|
containerStyle: {position: "relative", overflow: "hidden"}, |
||||
|
animationEngine: "best-available", |
||||
|
animationOptions: {queue: !1, duration: 800}, |
||||
|
sortBy: "original-order", |
||||
|
sortAscending: !0, |
||||
|
resizesContainer: !0, |
||||
|
transformsEnabled: !0, |
||||
|
itemPositionDataEnabled: !1 |
||||
|
}, i.Isotope.prototype = { |
||||
|
_create: function (t) { |
||||
|
this.options = i.extend({}, i.Isotope.settings, t), this.styleQueue = [], this.elemCount = 0; |
||||
|
var s = this.element[0].style; |
||||
|
this.originalStyle = {}; |
||||
|
var e = w.slice(0); |
||||
|
for (var n in this.options.containerStyle) e.push(n); |
||||
|
for (var o = 0, r = e.length; r > o; o++) n = e[o], this.originalStyle[n] = s[n] || ""; |
||||
|
this.element.css(this.options.containerStyle), this._updateAnimationEngine(), this._updateUsingTransforms(); |
||||
|
var a = { |
||||
|
"original-order": function (t, i) { |
||||
|
return i.elemCount++, i.elemCount |
||||
|
}, random: function () { |
||||
|
return Math.random() |
||||
|
} |
||||
|
}; |
||||
|
this.options.getSortData = i.extend(this.options.getSortData, a), this.reloadItems(), this.offset = { |
||||
|
left: parseInt(this.element.css("padding-left") || 0, 10), |
||||
|
top: parseInt(this.element.css("padding-top") || 0, 10) |
||||
|
}; |
||||
|
var h = this; |
||||
|
setTimeout(function () { |
||||
|
h.element.addClass(h.options.containerClass) |
||||
|
}, 0), this.options.resizable && C.bind("smartresize.isotope", function () { |
||||
|
h.resize() |
||||
|
}), this.element.delegate("." + this.options.hiddenClass, "click", function () { |
||||
|
return !1 |
||||
|
}) |
||||
|
}, _getAtoms: function (t) { |
||||
|
var i = this.options.itemSelector, s = i ? t.filter(i).add(t.find(i)) : t, e = {position: "absolute"}; |
||||
|
return s = s.filter(function (t, i) { |
||||
|
return 1 === i.nodeType |
||||
|
}), this.usingTransforms && (e.left = 0, e.top = 0), s.css(e).addClass(this.options.itemClass), this.updateSortData(s, !0), s |
||||
|
}, _init: function (t) { |
||||
|
this.$filteredAtoms = this._filter(this.$allAtoms), this._sort(), this.reLayout(t) |
||||
|
}, option: function (t) { |
||||
|
if (i.isPlainObject(t)) { |
||||
|
this.options = i.extend(!0, this.options, t); |
||||
|
var s; |
||||
|
for (var e in t) s = "_update" + r(e), this[s] && this[s]() |
||||
|
} |
||||
|
}, _updateAnimationEngine: function () { |
||||
|
var t, i = this.options.animationEngine.toLowerCase().replace(/[ _\-]/g, ""); |
||||
|
switch (i) { |
||||
|
case "css": |
||||
|
case "none": |
||||
|
t = !1; |
||||
|
break; |
||||
|
case "jquery": |
||||
|
t = !0; |
||||
|
break; |
||||
|
default: |
||||
|
t = !o.csstransitions |
||||
|
} |
||||
|
this.isUsingJQueryAnimation = t, this._updateUsingTransforms() |
||||
|
}, _updateTransformsEnabled: function () { |
||||
|
this._updateUsingTransforms() |
||||
|
}, _updateUsingTransforms: function () { |
||||
|
var t = this.usingTransforms = this.options.transformsEnabled && o.csstransforms && o.csstransitions && !this.isUsingJQueryAnimation; |
||||
|
t || (delete this.options.hiddenStyle.scale, delete this.options.visibleStyle.scale), this.getPositionStyles = t ? this._translate : this._positionAbs |
||||
|
}, _filter: function (t) { |
||||
|
var i = "" === this.options.filter ? "*" : this.options.filter; |
||||
|
if (!i) return t; |
||||
|
var s = this.options.hiddenClass, e = "." + s, n = t.filter(e), o = n; |
||||
|
if ("*" !== i) { |
||||
|
o = n.filter(i); |
||||
|
var r = t.not(e).not(i).addClass(s); |
||||
|
this.styleQueue.push({$el: r, style: this.options.hiddenStyle}) |
||||
|
} |
||||
|
return this.styleQueue.push({$el: o, style: this.options.visibleStyle}), o.removeClass(s), t.filter(i) |
||||
|
}, updateSortData: function (t, s) { |
||||
|
var e, n, o = this, r = this.options.getSortData; |
||||
|
t.each(function () { |
||||
|
e = i(this), n = {}; |
||||
|
for (var t in r) s || "original-order" !== t ? n[t] = r[t](e, o) : n[t] = i.data(this, "isotope-sort-data")[t]; |
||||
|
i.data(this, "isotope-sort-data", n) |
||||
|
}) |
||||
|
}, _sort: function () { |
||||
|
var t = this.options.sortBy, i = this._getSorter, s = this.options.sortAscending ? 1 : -1, |
||||
|
e = function (e, n) { |
||||
|
var o = i(e, t), r = i(n, t); |
||||
|
return o === r && "original-order" !== t && (o = i(e, "original-order"), r = i(n, "original-order")), (o > r ? 1 : r > o ? -1 : 0) * s |
||||
|
}; |
||||
|
this.$filteredAtoms.sort(e) |
||||
|
}, _getSorter: function (t, s) { |
||||
|
return i.data(t, "isotope-sort-data")[s] |
||||
|
}, _translate: function (t, i) { |
||||
|
return {translate: [t, i]} |
||||
|
}, _positionAbs: function (t, i) { |
||||
|
return {left: t, top: i} |
||||
|
}, _pushPosition: function (t, i, s) { |
||||
|
i = Math.round(i + this.offset.left), s = Math.round(s + this.offset.top); |
||||
|
var e = this.getPositionStyles(i, s); |
||||
|
this.styleQueue.push({ |
||||
|
$el: t, |
||||
|
style: e |
||||
|
}), this.options.itemPositionDataEnabled && t.data("isotope-item-position", {x: i, y: s}) |
||||
|
}, layout: function (t, i) { |
||||
|
var s = this.options.layoutMode; |
||||
|
if (this["_" + s + "Layout"](t), this.options.resizesContainer) { |
||||
|
var e = this["_" + s + "GetContainerSize"](); |
||||
|
this.styleQueue.push({$el: this.element, style: e}) |
||||
|
} |
||||
|
this._processStyleQueue(t, i), this.isLaidOut = !0 |
||||
|
}, _processStyleQueue: function (t, s) { |
||||
|
var e, n, r, a, h = this.isLaidOut && this.isUsingJQueryAnimation ? "animate" : "css", |
||||
|
l = this.options.animationOptions, u = this.options.onLayout; |
||||
|
if (n = function (t, i) { |
||||
|
i.$el[h](i.style, l) |
||||
|
}, this._isInserting && this.isUsingJQueryAnimation) n = function (t, i) { |
||||
|
e = i.$el.hasClass("no-transition") ? "css" : h, i.$el[e](i.style, l) |
||||
|
}; else if (s || u || l.complete) { |
||||
|
var c = !1, d = [s, u, l.complete], f = this; |
||||
|
if (r = !0, a = function () { |
||||
|
if (!c) { |
||||
|
for (var i, s = 0, e = d.length; e > s; s++) i = d[s], "function" == typeof i && i.call(f.element, t, f); |
||||
|
c = !0 |
||||
|
} |
||||
|
}, this.isUsingJQueryAnimation && "animate" === h) l.complete = a, r = !1; else if (o.csstransitions) { |
||||
|
for (var m, p = 0, v = this.styleQueue[0], _ = v && v.$el; !_ || !_.length;) { |
||||
|
if (m = this.styleQueue[p++], !m) return; |
||||
|
_ = m.$el |
||||
|
} |
||||
|
var A = parseFloat(getComputedStyle(_[0])[g]); |
||||
|
A > 0 && (n = function (t, i) { |
||||
|
i.$el[h](i.style, l).one(y, a) |
||||
|
}, r = !1) |
||||
|
} |
||||
|
} |
||||
|
i.each(this.styleQueue, n), r && a(), this.styleQueue = [] |
||||
|
}, resize: function () { |
||||
|
this["_" + this.options.layoutMode + "ResizeChanged"]() && this.reLayout() |
||||
|
}, reLayout: function (t) { |
||||
|
this["_" + this.options.layoutMode + "Reset"](), this.layout(this.$filteredAtoms, t) |
||||
|
}, addItems: function (t, i) { |
||||
|
var s = this._getAtoms(t); |
||||
|
this.$allAtoms = this.$allAtoms.add(s), i && i(s) |
||||
|
}, insert: function (t, i) { |
||||
|
this.element.append(t); |
||||
|
var s = this; |
||||
|
this.addItems(t, function (t) { |
||||
|
var e = s._filter(t); |
||||
|
s._addHideAppended(e), s._sort(), s.reLayout(), s._revealAppended(e, i) |
||||
|
}) |
||||
|
}, appended: function (t, i) { |
||||
|
var s = this; |
||||
|
this.addItems(t, function (t) { |
||||
|
s._addHideAppended(t), s.layout(t), s._revealAppended(t, i) |
||||
|
}) |
||||
|
}, _addHideAppended: function (t) { |
||||
|
this.$filteredAtoms = this.$filteredAtoms.add(t), t.addClass("no-transition"), this._isInserting = !0, this.styleQueue.push({ |
||||
|
$el: t, |
||||
|
style: this.options.hiddenStyle |
||||
|
}) |
||||
|
}, _revealAppended: function (t, i) { |
||||
|
var s = this; |
||||
|
setTimeout(function () { |
||||
|
t.removeClass("no-transition"), s.styleQueue.push({ |
||||
|
$el: t, |
||||
|
style: s.options.visibleStyle |
||||
|
}), s._isInserting = !1, s._processStyleQueue(t, i) |
||||
|
}, 10) |
||||
|
}, reloadItems: function () { |
||||
|
this.$allAtoms = this._getAtoms(this.element.children()) |
||||
|
}, remove: function (t, i) { |
||||
|
this.$allAtoms = this.$allAtoms.not(t), this.$filteredAtoms = this.$filteredAtoms.not(t); |
||||
|
var s = this, e = function () { |
||||
|
t.remove(), i && i.call(s.element) |
||||
|
}; |
||||
|
t.filter(":not(." + this.options.hiddenClass + ")").length ? (this.styleQueue.push({ |
||||
|
$el: t, |
||||
|
style: this.options.hiddenStyle |
||||
|
}), this._sort(), this.reLayout(e)) : e() |
||||
|
}, shuffle: function (t) { |
||||
|
this.updateSortData(this.$allAtoms), this.options.sortBy = "random", this._sort(), this.reLayout(t) |
||||
|
}, destroy: function () { |
||||
|
var t = this.usingTransforms, i = this.options; |
||||
|
this.$allAtoms.removeClass(i.hiddenClass + " " + i.itemClass).each(function () { |
||||
|
var i = this.style; |
||||
|
i.position = "", i.top = "", i.left = "", i.opacity = "", t && (i[l] = "") |
||||
|
}); |
||||
|
var s = this.element[0].style; |
||||
|
for (var e in this.originalStyle) s[e] = this.originalStyle[e]; |
||||
|
this.element.unbind(".isotope").undelegate("." + i.hiddenClass, "click").removeClass(i.containerClass).removeData("isotope"), C.unbind(".isotope") |
||||
|
}, _getSegments: function (t) { |
||||
|
var i, s = this.options.layoutMode, e = t ? "rowHeight" : "columnWidth", n = t ? "height" : "width", |
||||
|
o = t ? "rows" : "cols", a = this.element[n](), |
||||
|
h = this.options[s] && this.options[s][e] || this.$filteredAtoms["outer" + r(n)](!0) || a; |
||||
|
i = Math.floor(a / h), i = Math.max(i, 1), this[s][o] = i, this[s][e] = h |
||||
|
}, _checkIfSegmentsChanged: function (t) { |
||||
|
var i = this.options.layoutMode, s = t ? "rows" : "cols", e = this[i][s]; |
||||
|
return this._getSegments(t), this[i][s] !== e |
||||
|
}, _masonryReset: function () { |
||||
|
this.masonry = {}, this._getSegments(); |
||||
|
var t = this.masonry.cols; |
||||
|
for (this.masonry.colYs = []; t--;) this.masonry.colYs.push(0) |
||||
|
}, _masonryLayout: function (t) { |
||||
|
var s = this, e = s.masonry; |
||||
|
t.each(function () { |
||||
|
var t = i(this), n = Math.ceil(t.outerWidth(!0) / e.columnWidth); |
||||
|
if (n = Math.min(n, e.cols), 1 === n) s._masonryPlaceBrick(t, e.colYs); else { |
||||
|
var o, r, a = e.cols + 1 - n, h = []; |
||||
|
for (r = 0; a > r; r++) o = e.colYs.slice(r, r + n), h[r] = Math.max.apply(Math, o); |
||||
|
s._masonryPlaceBrick(t, h) |
||||
|
} |
||||
|
}) |
||||
|
}, _masonryPlaceBrick: function (t, i) { |
||||
|
for (var s = Math.min.apply(Math, i), e = 0, n = 0, o = i.length; o > n; n++) if (i[n] === s) { |
||||
|
e = n; |
||||
|
break |
||||
|
} |
||||
|
var r = this.masonry.columnWidth * e, a = s; |
||||
|
this._pushPosition(t, r, a); |
||||
|
var h = s + t.outerHeight(!0), l = this.masonry.cols + 1 - o; |
||||
|
for (n = 0; l > n; n++) this.masonry.colYs[e + n] = h |
||||
|
}, _masonryGetContainerSize: function () { |
||||
|
var t = Math.max.apply(Math, this.masonry.colYs); |
||||
|
return {height: t} |
||||
|
}, _masonryResizeChanged: function () { |
||||
|
return this._checkIfSegmentsChanged() |
||||
|
}, _fitRowsReset: function () { |
||||
|
this.fitRows = {x: 0, y: 0, height: 0} |
||||
|
}, _fitRowsLayout: function (t) { |
||||
|
var s = this, e = this.element.width(), n = this.fitRows; |
||||
|
t.each(function () { |
||||
|
var t = i(this), o = t.outerWidth(!0), r = t.outerHeight(!0); |
||||
|
0 !== n.x && o + n.x > e && (n.x = 0, n.y = n.height), s._pushPosition(t, n.x, n.y), n.height = Math.max(n.y + r, n.height), n.x += o |
||||
|
}) |
||||
|
}, _fitRowsGetContainerSize: function () { |
||||
|
return {height: this.fitRows.height} |
||||
|
}, _fitRowsResizeChanged: function () { |
||||
|
return !0 |
||||
|
}, _cellsByRowReset: function () { |
||||
|
this.cellsByRow = {index: 0}, this._getSegments(), this._getSegments(!0) |
||||
|
}, _cellsByRowLayout: function (t) { |
||||
|
var s = this, e = this.cellsByRow; |
||||
|
t.each(function () { |
||||
|
var t = i(this), n = e.index % e.cols, o = Math.floor(e.index / e.cols), |
||||
|
r = (n + .5) * e.columnWidth - t.outerWidth(!0) / 2, |
||||
|
a = (o + .5) * e.rowHeight - t.outerHeight(!0) / 2; |
||||
|
s._pushPosition(t, r, a), e.index++ |
||||
|
}) |
||||
|
}, _cellsByRowGetContainerSize: function () { |
||||
|
return {height: Math.ceil(this.$filteredAtoms.length / this.cellsByRow.cols) * this.cellsByRow.rowHeight + this.offset.top} |
||||
|
}, _cellsByRowResizeChanged: function () { |
||||
|
return this._checkIfSegmentsChanged() |
||||
|
}, _straightDownReset: function () { |
||||
|
this.straightDown = {y: 0} |
||||
|
}, _straightDownLayout: function (t) { |
||||
|
var s = this; |
||||
|
t.each(function (t) { |
||||
|
var e = i(this); |
||||
|
s._pushPosition(e, 0, s.straightDown.y), s.straightDown.y += e.outerHeight(!0) |
||||
|
}) |
||||
|
}, _straightDownGetContainerSize: function () { |
||||
|
return {height: this.straightDown.y} |
||||
|
}, _straightDownResizeChanged: function () { |
||||
|
return !0 |
||||
|
}, _masonryHorizontalReset: function () { |
||||
|
this.masonryHorizontal = {}, this._getSegments(!0); |
||||
|
var t = this.masonryHorizontal.rows; |
||||
|
for (this.masonryHorizontal.rowXs = []; t--;) this.masonryHorizontal.rowXs.push(0) |
||||
|
}, _masonryHorizontalLayout: function (t) { |
||||
|
var s = this, e = s.masonryHorizontal; |
||||
|
t.each(function () { |
||||
|
var t = i(this), n = Math.ceil(t.outerHeight(!0) / e.rowHeight); |
||||
|
if (n = Math.min(n, e.rows), 1 === n) s._masonryHorizontalPlaceBrick(t, e.rowXs); else { |
||||
|
var o, r, a = e.rows + 1 - n, h = []; |
||||
|
for (r = 0; a > r; r++) o = e.rowXs.slice(r, r + n), h[r] = Math.max.apply(Math, o); |
||||
|
s._masonryHorizontalPlaceBrick(t, h) |
||||
|
} |
||||
|
}) |
||||
|
}, _masonryHorizontalPlaceBrick: function (t, i) { |
||||
|
for (var s = Math.min.apply(Math, i), e = 0, n = 0, o = i.length; o > n; n++) if (i[n] === s) { |
||||
|
e = n; |
||||
|
break |
||||
|
} |
||||
|
var r = s, a = this.masonryHorizontal.rowHeight * e; |
||||
|
this._pushPosition(t, r, a); |
||||
|
var h = s + t.outerWidth(!0), l = this.masonryHorizontal.rows + 1 - o; |
||||
|
for (n = 0; l > n; n++) this.masonryHorizontal.rowXs[e + n] = h |
||||
|
}, _masonryHorizontalGetContainerSize: function () { |
||||
|
var t = Math.max.apply(Math, this.masonryHorizontal.rowXs); |
||||
|
return {width: t} |
||||
|
}, _masonryHorizontalResizeChanged: function () { |
||||
|
return this._checkIfSegmentsChanged(!0) |
||||
|
}, _fitColumnsReset: function () { |
||||
|
this.fitColumns = {x: 0, y: 0, width: 0} |
||||
|
}, _fitColumnsLayout: function (t) { |
||||
|
var s = this, e = this.element.height(), n = this.fitColumns; |
||||
|
t.each(function () { |
||||
|
var t = i(this), o = t.outerWidth(!0), r = t.outerHeight(!0); |
||||
|
0 !== n.y && r + n.y > e && (n.x = n.width, n.y = 0), s._pushPosition(t, n.x, n.y), n.width = Math.max(n.x + o, n.width), n.y += r |
||||
|
}) |
||||
|
}, _fitColumnsGetContainerSize: function () { |
||||
|
return {width: this.fitColumns.width} |
||||
|
}, _fitColumnsResizeChanged: function () { |
||||
|
return !0 |
||||
|
}, _cellsByColumnReset: function () { |
||||
|
this.cellsByColumn = {index: 0}, this._getSegments(), this._getSegments(!0) |
||||
|
}, _cellsByColumnLayout: function (t) { |
||||
|
var s = this, e = this.cellsByColumn; |
||||
|
t.each(function () { |
||||
|
var t = i(this), n = Math.floor(e.index / e.rows), o = e.index % e.rows, |
||||
|
r = (n + .5) * e.columnWidth - t.outerWidth(!0) / 2, |
||||
|
a = (o + .5) * e.rowHeight - t.outerHeight(!0) / 2; |
||||
|
s._pushPosition(t, r, a), e.index++ |
||||
|
}) |
||||
|
}, _cellsByColumnGetContainerSize: function () { |
||||
|
return {width: Math.ceil(this.$filteredAtoms.length / this.cellsByColumn.rows) * this.cellsByColumn.columnWidth} |
||||
|
}, _cellsByColumnResizeChanged: function () { |
||||
|
return this._checkIfSegmentsChanged(!0) |
||||
|
}, _straightAcrossReset: function () { |
||||
|
this.straightAcross = {x: 0} |
||||
|
}, _straightAcrossLayout: function (t) { |
||||
|
var s = this; |
||||
|
t.each(function (t) { |
||||
|
var e = i(this); |
||||
|
s._pushPosition(e, s.straightAcross.x, 0), s.straightAcross.x += e.outerWidth(!0) |
||||
|
}) |
||||
|
}, _straightAcrossGetContainerSize: function () { |
||||
|
return {width: this.straightAcross.x} |
||||
|
}, _straightAcrossResizeChanged: function () { |
||||
|
return !0 |
||||
|
} |
||||
|
}, i.fn.imagesLoaded = function (t) { |
||||
|
function s() { |
||||
|
t.call(n, o) |
||||
|
} |
||||
|
|
||||
|
function e(t) { |
||||
|
var n = t.target; |
||||
|
n.src !== a && -1 === i.inArray(n, h) && (h.push(n), --r <= 0 && (setTimeout(s), o.unbind(".imagesLoaded", e))) |
||||
|
} |
||||
|
|
||||
|
var n = this, o = n.find("img").add(n.filter("img")), r = o.length, |
||||
|
a = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==", h = []; |
||||
|
return r || s(), o.bind("load.imagesLoaded error.imagesLoaded", e).each(function () { |
||||
|
var t = this.src; |
||||
|
this.src = a, this.src = t |
||||
|
}), n |
||||
|
}; |
||||
|
var z = function (i) { |
||||
|
t.console && t.console.error(i) |
||||
|
}; |
||||
|
i.fn.isotope = function (t, s) { |
||||
|
if ("string" == typeof t) { |
||||
|
var e = Array.prototype.slice.call(arguments, 1); |
||||
|
this.each(function () { |
||||
|
var s = i.data(this, "isotope"); |
||||
|
return s ? i.isFunction(s[t]) && "_" !== t.charAt(0) ? void s[t].apply(s, e) : void z("no such method '" + t + "' for isotope instance") : void z("cannot call methods on isotope prior to initialization; attempted to call method '" + t + "'") |
||||
|
}) |
||||
|
} else this.each(function () { |
||||
|
var e = i.data(this, "isotope"); |
||||
|
e ? (e.option(t), e._init(s)) : i.data(this, "isotope", new i.Isotope(t, this, s)) |
||||
|
}); |
||||
|
return this |
||||
|
} |
||||
|
}(window, jQuery); |
||||
|
let $mainNav = $("#mainNav"); |
||||
|
let $body = $("body"); |
||||
|
let $scroll_to_top = $("#scroll-to-top"); |
||||
|
// 页面顶部时,导航栏背景透明
|
||||
|
let toggle_flag = true; |
||||
|
$('.navbar-toggler').click(() => { |
||||
|
let all_class = $mainNav.attr('class'); |
||||
|
if (all_class.indexOf('navbar-shrink') === -1) { |
||||
|
$mainNav.addClass('navbar-shrink'); |
||||
|
} else { |
||||
|
if ($mainNav.offset().top <= 10) { |
||||
|
$mainNav.removeClass("navbar-shrink"); |
||||
|
} |
||||
|
} |
||||
|
toggle_flag = false; |
||||
|
}); |
||||
|
// 移动端点击空白处,隐藏菜单
|
||||
|
$body.click(() => { |
||||
|
$('.navbar-collapse').collapse('hide'); |
||||
|
if (toggle_flag) { // 阻止事件冒泡
|
||||
|
if ($mainNav.offset().top <= 10) { |
||||
|
$mainNav.removeClass("navbar-shrink"); |
||||
|
} |
||||
|
} |
||||
|
toggle_flag = true; |
||||
|
}); |
||||
|
// 移动端点击菜单后,隐藏菜单
|
||||
|
$('.js-scroll-trigger').click(() => { |
||||
|
$('.navbar-collapse').collapse('hide'); |
||||
|
}); |
||||
|
// 导航栏自动隐藏
|
||||
|
let previousTop = 0; |
||||
|
$(window).scroll(() => { |
||||
|
let currentTop = $(window).scrollTop(); |
||||
|
if (currentTop - previousTop < -10) { |
||||
|
// 下划
|
||||
|
$mainNav.removeClass("show-none"); |
||||
|
previousTop = currentTop; |
||||
|
} else if (currentTop - previousTop > 10) { |
||||
|
// 上划
|
||||
|
$mainNav.addClass("show-none"); |
||||
|
$('.navbar-collapse').collapse('hide'); |
||||
|
previousTop = currentTop; |
||||
|
} |
||||
|
if (currentTop < 60) { |
||||
|
// 首页常显示
|
||||
|
$mainNav.removeClass("show-none"); |
||||
|
} |
||||
|
}); |
||||
|
// 非顶部刷新时,设置导航栏不透明
|
||||
|
let navbarCollapse = () => { |
||||
|
if ($mainNav.offset().top > 10) { |
||||
|
$mainNav.addClass("navbar-shrink"); |
||||
|
} else { |
||||
|
$mainNav.removeClass("navbar-shrink"); |
||||
|
} |
||||
|
}; |
||||
|
navbarCollapse(); |
||||
|
$(window).scroll(navbarCollapse); |
||||
|
// 底部滚动
|
||||
|
$(window).scroll(() => { |
||||
|
if ($(window).scrollTop() < 100) { |
||||
|
$scroll_to_top.removeClass('show'); |
||||
|
} else { |
||||
|
$scroll_to_top.addClass('show'); |
||||
|
} |
||||
|
}); |
||||
|
$scroll_to_top.click(function (e) { |
||||
|
e.preventDefault() |
||||
|
$('html,body').animate({ |
||||
|
scrollTop: 0 |
||||
|
}, 700); |
||||
|
}); |
||||
|
// 主题切换
|
||||
|
let like_color = 'darkorange'; |
||||
|
let like_color0 = '#888888'; |
||||
|
if ($('body').hasClass('body_dark')) { |
||||
|
$('.article-single').addClass('body_dark'); |
||||
|
like_color = '#68a7eb'; |
||||
|
like_color0 = '#777777'; |
||||
|
} |
||||
|
let set_light = () => { |
||||
|
$('.body_dark').removeClass('body_dark'); |
||||
|
$('#logo').attr('src', 'logo/logo.png'); |
||||
|
like_color = 'darkorange'; |
||||
|
like_color0 = '#888888'; |
||||
|
let headHTML = document.getElementsByTagName('head')[0].innerHTML; |
||||
|
headHTML = headHTML.replace(/1A1D24/, "E4EBF8"); |
||||
|
document.getElementsByTagName('head')[0].innerHTML = headHTML; |
||||
|
}; |
||||
|
let set_dark = () => { |
||||
|
$('#logo').attr('src', 'logo/logo-dark.png'); |
||||
|
$('body').addClass('body_dark'); |
||||
|
$('.section-title h3').addClass('body_dark'); |
||||
|
$('#mainNav').addClass('body_dark'); |
||||
|
$('#switch_dark').addClass('body_dark'); |
||||
|
$('.navbar-toggler').addClass('body_dark'); |
||||
|
$('.blog').addClass('body_dark'); |
||||
|
$('.section').addClass('body_dark'); |
||||
|
$('.section button').addClass('body_dark'); |
||||
|
$('#home').addClass('body_dark'); |
||||
|
$('#notes .services-inner-box').addClass('body_dark'); |
||||
|
$('#api .services-inner-box').addClass('body_dark'); |
||||
|
$('#opus .opus-single').addClass('body_dark'); |
||||
|
$('#demo .demo-single').addClass('body_dark'); |
||||
|
$('#contact .contact_form').addClass('body_dark'); |
||||
|
$('.article-single').addClass('body_dark'); |
||||
|
like_color = '#68a7eb'; |
||||
|
like_color0 = '#777777'; |
||||
|
let headHTML = document.getElementsByTagName('head')[0].innerHTML; |
||||
|
headHTML = headHTML.replace(/E4EBF8/, "1A1D24"); |
||||
|
document.getElementsByTagName('head')[0].innerHTML = headHTML; |
||||
|
}; |
||||
|
$('.toggle').click(function (e) { |
||||
|
$(this).toggleClass('toggle--on') |
||||
|
.toggleClass('toggle--off') |
||||
|
.addClass('toggle--moving'); |
||||
|
setTimeout(() => { |
||||
|
$(this).removeClass('toggle--moving'); |
||||
|
}, 200); |
||||
|
let is_dark = $('body').hasClass('body_dark'); |
||||
|
$('.clock div').css('transition', 'all .3s ease-in-out'); |
||||
|
setTimeout(() => { |
||||
|
$('.clock div.minutes').css('transition', 'none'); |
||||
|
$('.clock div.hours').css('transition', 'none'); |
||||
|
}, 400); |
||||
|
setTimeout(() => { |
||||
|
if (!is_dark) { |
||||
|
set_dark(); |
||||
|
} else { |
||||
|
set_light(); |
||||
|
} |
||||
|
}, 100); |
||||
|
$.ajax({ |
||||
|
url: '/toggle_dark/', |
||||
|
type: 'post', |
||||
|
data: { |
||||
|
'csrfmiddlewaretoken': $('[name="csrfmiddlewaretoken"]').val(), |
||||
|
'is_dark': is_dark, |
||||
|
}, |
||||
|
success: () => { |
||||
|
} |
||||
|
}) |
||||
|
}); |
||||
@ -0,0 +1 @@ |
|||||
|
window.onresize=(()=>{$(window).width()>=768&&$(".button-group button.active").click()});let $grid_note=$(".note-list").isotope({itemSelector:".note-grid"});$(".note-menu").on("click","button",function(){$(this).addClass("active").siblings().removeClass("active");let t=$(this).attr("data-filter");$grid_note.isotope({filter:t})});let $grid_api=$(".api-list").isotope({itemSelector:".api-grid"});$(".api-menu").on("click","button",function(){$(this).addClass("active").siblings().removeClass("active");let t=$(this).attr("data-filter");$grid_api.isotope({filter:t})}); |
||||
@ -0,0 +1,30 @@ |
|||||
|
// 桌面端窗口自适应
|
||||
|
window.onresize = () => { |
||||
|
if ($(window).width() >= 768) { |
||||
|
$('.button-group button.active').click(); |
||||
|
} |
||||
|
}; |
||||
|
// 笔记分类
|
||||
|
let $grid_note = $('.note-list').isotope({ |
||||
|
itemSelector: '.note-grid', |
||||
|
}); |
||||
|
$('.note-menu').on('click', 'button', function () { |
||||
|
$(this).addClass('active').siblings().removeClass('active'); |
||||
|
let filterValue = $(this).attr('data-filter'); |
||||
|
$grid_note.isotope({ |
||||
|
filter: filterValue, |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
// API分类
|
||||
|
let $grid_api = $('.api-list').isotope({ |
||||
|
itemSelector: '.api-grid', |
||||
|
}); |
||||
|
$('.api-menu').on('click', 'button', function () { |
||||
|
$(this).addClass('active').siblings().removeClass('active'); |
||||
|
let filterValue = $(this).attr('data-filter'); |
||||
|
$grid_api.isotope({ |
||||
|
filter: filterValue, |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
Loading…
Reference in new issue