From 2d0d7796755ea5ecbbc4bcaaf16738f1b4f5fdf2 Mon Sep 17 00:00:00 2001 From: Seaton Jiang Date: Fri, 25 Jun 2021 10:47:18 +0800 Subject: [PATCH] feat: optimize sticky sidebar (#324) --- assets/js/kratos.js | 11 +---------- assets/js/kratos.min.js | 1 - assets/js/theia-sticky-sidebar.min.js | 1 - inc/theme-core.php | 6 ++++-- 4 files changed, 5 insertions(+), 14 deletions(-) delete mode 100644 assets/js/kratos.min.js delete mode 100755 assets/js/theia-sticky-sidebar.min.js diff --git a/assets/js/kratos.js b/assets/js/kratos.js index 4e09cfd..ce6d1d5 100644 --- a/assets/js/kratos.js +++ b/assets/js/kratos.js @@ -1,6 +1,6 @@ /*! * Kratos - * Seaton Jiang + * Seaton Jiang */ (function () { "use strict"; @@ -168,12 +168,6 @@ }); }; - var siderbarConfig = function () { - $(".sticky-sidebar").theiaStickySidebar({ - additionalMarginTop: 25, - }); - }; - var consoleConfig = function () { console.log( "\n Kratos v" + @@ -193,9 +187,6 @@ postlikeConfig(); donateConfig(); consoleConfig(); - if (kratos.sticky) { - siderbarConfig(); - } }); })(); diff --git a/assets/js/kratos.min.js b/assets/js/kratos.min.js deleted file mode 100644 index 18d39e1..0000000 --- a/assets/js/kratos.min.js +++ /dev/null @@ -1 +0,0 @@ -function grin(a){var b,c,d,e;return a=" "+a+" ",document.getElementById("comment")&&"textarea"==document.getElementById("comment").type?(b=document.getElementById("comment"),document.selection?(b.focus(),sel=document.selection.createRange(),sel.text=a,b.focus()):b.selectionStart||"0"==b.selectionStart?(c=b.selectionStart,d=b.selectionEnd,e=d,b.value=b.value.substring(0,c)+a+b.value.substring(d,b.value.length),e+=a.length,b.focus(),b.selectionStart=e,b.selectionEnd=e):(b.value+=a,b.focus()),void 0):!1}!function(){"use strict";var a="3.3.2",b=function(){$("#navbutton").on("click",function(){$(".navbar-toggler").toggleClass("nav-close")})},c=function(){$(function(){$('[data-toggle="tooltip"]').tooltip()})},d=function(){$(window).on("load",function(){var a=$(window);a.scrollTop()>200?$(".gotop").addClass("active"):$(".gotop").removeClass("active"),a.scroll(function(){a.scrollTop()>200?$(".gotop").addClass("active"):$(".gotop").removeClass("active")})}),$(".gotop").on("click",function(a){return a.preventDefault(),$("html, body").animate({scrollTop:$("html").offset().top},500),!1})},e=function(){$(".search").on("click",function(a){$(".search-form").animate({width:"200px"},200),$(".search-form input").css("display","block"),$(document).one("click",function(){$(".search-form").animate({width:"0"},100),$(".search-form input").hide()}),a.stopPropagation()}),$(".search-form").on("click",function(a){a.stopPropagation()})},f=function(){$(".wechat").mouseout(function(){$(".wechat-pic")[0].style.display="none"}),$(".wechat").mouseover(function(){$(".wechat-pic")[0].style.display="block"})},g=function(){$("#addsmile").on("click",function(a){return $(".smile").toggleClass("open"),$(document).one("click",function(){$(".smile").toggleClass("open")}),a.stopPropagation(),!1})},h=function(){$.fn.postLike=function(){var a,b,c;return $(this).hasClass("done")?(layer.msg(kratos.repeat,function(){}),!1):($(this).addClass("done"),layer.msg(kratos.thanks),a=$(this).data("id"),b=$(this).data("action"),c={action:"love",um_id:a,um_action:b},$.post(kratos.site+"/wp-admin/admin-ajax.php",c,function(){}),!1)},$(document).on("click",".btn-thumbs",function(){$(this).postLike()})},i=function(){$("#donate").on("click",function(){layer.open({type:1,area:["300px","370px"],title:kratos.donate,resize:!1,scrollbar:!1,content:''}),$(".choose-pay input[type='radio']").click(function(){var a=$(this).attr("id");"alipay"==a&&($(".qr-pay #alipay_qr").removeClass("d-none"),$(".qr-pay #wechat_qr").addClass("d-none")),"wechatpay"==a&&($(".qr-pay #alipay_qr").addClass("d-none"),$(".qr-pay #wechat_qr").removeClass("d-none"))})})},j=function(){$(document).on("click",".acheader",function(a){var b=$(this);b.closest(".accordion").find(".contents").slideToggle(300),b.closest(".accordion").hasClass("active")?b.closest(".accordion").removeClass("active"):b.closest(".accordion").addClass("active"),a.preventDefault()})},k=function(){$(".sticky-sidebar").theiaStickySidebar({additionalMarginTop:25})},l=function(){console.log("\n Kratos v"+a+"\n\n https://github.com/vtrois/kratos \n\n")};$(function(){j(),b(),c(),d(),e(),f(),g(),h(),i(),l(),kratos.sticky&&k()})}(); \ No newline at end of file diff --git a/assets/js/theia-sticky-sidebar.min.js b/assets/js/theia-sticky-sidebar.min.js deleted file mode 100755 index 7bcdd11..0000000 --- a/assets/js/theia-sticky-sidebar.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(i){i.fn.theiaStickySidebar=function(t){function e(t,e){var a=o(t,e);a||(console.log("TSS: Body width smaller than options.minWidth. Init is delayed."),i(document).on("scroll."+t.namespace,function(t,e){return function(a){var n=o(t,e);n&&i(this).unbind(a)}}(t,e)),i(window).on("resize."+t.namespace,function(t,e){return function(a){var n=o(t,e);n&&i(this).unbind(a)}}(t,e)))}function o(t,e){return t.initialized===!0||!(i("body").width().theiaStickySidebar:after {content: ""; display: table; clear: both;}')),e.each(function(){function e(){a.fixedScrollTop=0,a.sidebar.css({"min-height":"1px"}),a.stickySidebar.css({position:"static",width:"",transform:"none"})}function o(t){var e=t.height();return t.children().each(function(){e=Math.max(e,i(this).height())}),e}var a={};if(a.sidebar=i(this),a.options=t||{},a.container=i(a.options.containerSelector),0==a.container.length&&(a.container=a.sidebar.parent()),a.sidebar.parents().css("-webkit-transform","none"),a.sidebar.css({position:a.options.defaultPosition,overflow:"visible","-webkit-box-sizing":"border-box","-moz-box-sizing":"border-box","box-sizing":"border-box"}),a.stickySidebar=a.sidebar.find(".theiaStickySidebar"),0==a.stickySidebar.length){var s=/(?:text|application)\/(?:x-)?(?:javascript|ecmascript)/i;a.sidebar.find("script").filter(function(i,t){return 0===t.type.length||t.type.match(s)}).remove(),a.stickySidebar=i("
").addClass("theiaStickySidebar").append(a.sidebar.children()),a.sidebar.append(a.stickySidebar)}a.marginBottom=parseInt(a.sidebar.css("margin-bottom")),a.paddingTop=parseInt(a.sidebar.css("padding-top")),a.paddingBottom=parseInt(a.sidebar.css("padding-bottom"));var r=a.stickySidebar.offset().top,d=a.stickySidebar.outerHeight();a.stickySidebar.css("padding-top",1),a.stickySidebar.css("padding-bottom",1),r-=a.stickySidebar.offset().top,d=a.stickySidebar.outerHeight()-d-r,0==r?(a.stickySidebar.css("padding-top",0),a.stickySidebarPaddingTop=0):a.stickySidebarPaddingTop=1,0==d?(a.stickySidebar.css("padding-bottom",0),a.stickySidebarPaddingBottom=0):a.stickySidebarPaddingBottom=1,a.previousScrollTop=null,a.fixedScrollTop=0,e(),a.onScroll=function(a){if(a.stickySidebar.is(":visible")){if(i("body").width()a.container.width())return void e()}var r=i(document).scrollTop(),d="static";if(r>=a.sidebar.offset().top+(a.paddingTop-a.options.additionalMarginTop)){var c,p=a.paddingTop+t.additionalMarginTop,b=a.paddingBottom+a.marginBottom+t.additionalMarginBottom,l=a.sidebar.offset().top,f=a.sidebar.offset().top+o(a.container),h=0+t.additionalMarginTop,g=a.stickySidebar.outerHeight()+p+b0?Math.min(y,h):Math.max(y,c-a.stickySidebar.outerHeight()),y=Math.max(y,u),y=Math.min(y,S-a.stickySidebar.outerHeight());var k=a.container.height()==a.stickySidebar.outerHeight();d=(k||y!=h)&&(k||y!=c-a.stickySidebar.outerHeight())?r+y-a.sidebar.offset().top-a.paddingTop<=t.additionalMarginTop?"static":"absolute":"fixed"}if("fixed"==d){var v=i(document).scrollLeft();a.stickySidebar.css({position:"fixed",width:n(a.stickySidebar)+"px",transform:"translateY("+y+"px)",left:a.sidebar.offset().left+parseInt(a.sidebar.css("padding-left"))-v+"px",top:"0px"})}else if("absolute"==d){var x={};"absolute"!=a.stickySidebar.css("position")&&(x.position="absolute",x.transform="translateY("+(r+y-a.sidebar.offset().top-a.stickySidebarPaddingTop-a.stickySidebarPaddingBottom)+"px)",x.top="0px"),x.width=n(a.stickySidebar)+"px",x.left="",a.stickySidebar.css(x)}else"static"==d&&e();"static"!=d&&1==a.options.updateSidebarHeight&&a.sidebar.css({"min-height":a.stickySidebar.outerHeight()+a.stickySidebar.offset().top-a.sidebar.offset().top+a.paddingBottom}),a.previousScrollTop=r}},a.onScroll(a),i(document).on("scroll."+a.options.namespace,function(i){return function(){i.onScroll(i)}}(a)),i(window).on("resize."+a.options.namespace,function(i){return function(){i.stickySidebar.css({position:"static"}),i.onScroll(i)}}(a)),"undefined"!=typeof ResizeSensor&&new ResizeSensor(a.stickySidebar[0],function(i){return function(){i.onScroll(i)}}(a))})}function n(i){var t;try{t=i[0].getBoundingClientRect().width}catch(i){}return"undefined"==typeof t&&(t=i.width()),t}var s={containerSelector:"",additionalMarginTop:0,additionalMarginBottom:0,updateSidebarHeight:!0,minWidth:0,disableOnResponsiveLayouts:!0,sidebarBehavior:"modern",defaultPosition:"relative",namespace:"TSS"};return t=i.extend(s,t),t.additionalMarginTop=parseInt(t.additionalMarginTop)||0,t.additionalMarginBottom=parseInt(t.additionalMarginBottom)||0,e(t,this),this}}(jQuery); diff --git a/inc/theme-core.php b/inc/theme-core.php index d0c6d81..55012ee 100644 --- a/inc/theme-core.php +++ b/inc/theme-core.php @@ -71,12 +71,15 @@ function theme_autoload() wp_add_inline_style('kratos', $admin_bar_css); } } + if (kratos_option('g_sticky', false)) { + $sticky_css = ".sticky-sidebar{position: sticky;top: 25px;height:100%}"; + wp_add_inline_style('kratos', $sticky_css); + } // js wp_deregister_script('jquery'); wp_enqueue_script('jquery', ASSET_PATH . '/assets/js/jquery.min.js', array(), '3.4.1', false); wp_enqueue_script('bootstrap-bundle', ASSET_PATH . '/assets/js/bootstrap.bundle.min.js', array(), '4.5.0', true); wp_enqueue_script('layer', ASSET_PATH . '/assets/js/layer.min.js', array(), '3.1.1', true); - // wp_enqueue_script('sticky', ASSET_PATH . '/assets/js/theia-sticky-sidebar.min.js', array(), '1.5.0', true); wp_enqueue_script('dplayer', ASSET_PATH . '/assets/js/DPlayer.min.js', array(), THEME_VERSION, true); wp_enqueue_script('kratos', ASSET_PATH . '/assets/js/kratos.js', array(), THEME_VERSION, true); @@ -89,7 +92,6 @@ function theme_autoload() 'thanks' => __('感谢您的支持', 'kratos'), 'donate' => __('打赏作者', 'kratos'), 'scan' => __('扫码支付', 'kratos'), - 'sticky' => kratos_option('g_sticky', false), ); wp_localize_script('kratos', 'kratos', $data); }