diff --git a/assets/css/joe.archive.css b/assets/css/joe.archive.css index 20e5c69..8fe6dcf 100644 --- a/assets/css/joe.archive.css +++ b/assets/css/joe.archive.css @@ -1 +1 @@ -.joe_archive{border-radius:8px;padding:0 15px;background:var(--background);box-shadow:var(--box-shadow)}.joe_archive__title{display:flex;align-items:center;height:45px;line-height:45px;color:var(--main);border-bottom:1px solid var(--classC)}.joe_archive__title-icon{width:20px;height:20px;min-width:20px;min-height:20px;margin-right:5px}.joe_archive__title-title{display:flex;align-items:center}.joe_archive__title-title .muted{color:var(--theme);margin:0 5px}.joe_archive__empty{display:flex;align-items:center;justify-content:center;flex-direction:column;padding:50px 0;color:var(--routine)}.joe_archive__empty-icon{margin-bottom:30px;fill:var(--routine)} +.joe_archive{border-radius:var(--radius-wrap);padding:0 15px;background:var(--background);box-shadow:var(--box-shadow)}.joe_archive__title{display:flex;align-items:center;height:45px;line-height:45px;color:var(--main);border-bottom:1px solid var(--classC)}.joe_archive__title-icon{width:20px;height:20px;min-width:20px;min-height:20px;margin-right:5px}.joe_archive__title-title{display:flex;align-items:center}.joe_archive__title-title .muted{color:var(--theme);margin:0 5px}.joe_archive__empty{display:flex;align-items:center;justify-content:center;flex-direction:column;padding:50px 0;color:var(--routine)}.joe_archive__empty-icon{margin-bottom:30px;fill:var(--routine)} diff --git a/assets/css/joe.archive.scss b/assets/css/joe.archive.scss index d67df8a..37a1370 100644 --- a/assets/css/joe.archive.scss +++ b/assets/css/joe.archive.scss @@ -1,5 +1,6 @@ +/* 搜索页的样式 */ .joe_archive { - border-radius: 8px; + border-radius: var(--radius-wrap); padding: 0 15px; background: var(--background); box-shadow: var(--box-shadow); diff --git a/assets/css/joe.config.scss b/assets/css/joe.config.scss index cf48c45..7714ab6 100644 --- a/assets/css/joe.config.scss +++ b/assets/css/joe.config.scss @@ -1,3 +1,4 @@ +/* 后台设置的样式 */ .col-mb-12.col-tb-8.col-tb-offset-2 { margin-left: 0; width: 100%; diff --git a/assets/css/joe.global.css b/assets/css/joe.global.css index 07e1556..fff47c1 100644 --- a/assets/css/joe.global.css +++ b/assets/css/joe.global.css @@ -1 +1 @@ -html{--theme: #409eff;--background: #fff;--main: #303133;--routine: #606266;--minor: #909399;--seat: #c0c4cc;--classA: #dcdfe6;--classB: #e4e7ed;--classC: #ebeef5;--classD: #f2f6fc;--radius-wrap: 8px;--radius-inner: 4px;--text-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);--box-shadow: 0px 0px 20px -5px rgba(158, 158, 158, 0.22)}html[data-night='night']{--background: #333;--theme: #54b5db;--main: #808080;--routine: #7b7b7b;--minor: #6d6d6d;--seat: #666;--classA: #444;--classB: #444;--classC: #444;--classD: #444;--text-shadow: none;--box-shadow: none}html[data-night='night'] body::before{background:#202122;z-index:-500}html[data-night='night'] .joe_header__above-logo img{display:none}html[data-night='night'] .joe_header__above-logo svg{display:block}.joe_dropdown{position:relative}.joe_dropdown__link{display:flex;align-items:center}.joe_dropdown__link-icon{transition:-webkit-transform 0.35s;transition:transform 0.35s;transition:transform 0.35s, -webkit-transform 0.35s}.joe_dropdown__menu{position:absolute;left:50%;visibility:hidden;z-index:999;border-top:3px solid var(--theme);-webkit-transform-origin:top;transform-origin:top;background:var(--background);box-shadow:0 0 10px rgba(0,0,0,0.15);border-radius:0 0 var(--radius-inner) var(--radius-inner);padding:10px 0;opacity:0;-webkit-transform:translateX(-50%) perspective(600px) rotateX(-45deg);transform:translateX(-50%) perspective(600px) rotateX(-45deg);transition:opacity 0.35s, visibility 0.35s, -webkit-transform 0.35s;transition:opacity 0.35s, visibility 0.35s, transform 0.35s;transition:opacity 0.35s, visibility 0.35s, transform 0.35s, -webkit-transform 0.35s}.joe_dropdown__menu::before{content:'';position:absolute;top:-10px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid var(--theme)}.joe_dropdown.active .joe_dropdown__link-icon{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}.joe_dropdown.active .joe_dropdown__menu{visibility:visible;opacity:1;-webkit-transform:translateX(-50%) perspective(600px) rotateX(0);transform:translateX(-50%) perspective(600px) rotateX(0)}.joe_header{position:-webkit-sticky;position:sticky;top:0;z-index:1000;background:var(--background);box-shadow:0 2px 10px 0 rgba(0,0,0,0.1)}.joe_header__above-logo{position:relative;display:flex;align-items:center;height:60px;padding-right:15px;margin-right:15px}.joe_header__above-logo img{max-width:150px;max-height:50px;-o-object-fit:cover;object-fit:cover}.joe_header__above-logo svg{display:none}.joe_header__above-logo::after{content:'';position:absolute;top:50%;right:0;width:1px;height:20px;background:var(--classC);-webkit-transform:translateY(-50%);transform:translateY(-50%)}.joe_header__above-nav{display:flex;align-items:center}.joe_header__above-nav .item{position:relative;height:60px;line-height:60px;font-size:15px;padding:0 8px;margin-right:15px;transition:color 0.35s;white-space:nowrap;color:var(--main)}.joe_header__above-nav .item:last-child{margin-right:0}.joe_header__above-nav .item::after{content:'';position:absolute;bottom:0;left:0;right:0;height:3px;transition:opacity 0.5s, -webkit-transform 0.5s;transition:opacity 0.5s, transform 0.5s;transition:opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;border-radius:6px 6px 0 0;opacity:0;-webkit-transform:scaleX(0.25);transform:scaleX(0.25);background:var(--theme)}.joe_header__above-nav .item.active,.joe_header__above-nav .item:hover{color:var(--theme)}.joe_header__above-nav .item.active::after,.joe_header__above-nav .item:hover::after{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}.joe_header__above-nav .joe_dropdown__link a{height:60px;line-height:60px;font-size:15px;padding-left:8px;padding-right:3px;transition:color 0.35s;white-space:nowrap;color:var(--main)}.joe_header__above-nav .joe_dropdown__menu{width:110px;text-align:center}.joe_header__above-nav .joe_dropdown__menu a{display:block;line-height:34px;height:34px;transition:color 0.35s, background 0.35s;color:var(--minor);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 15px}.joe_header__above-nav .joe_dropdown__menu a:hover,.joe_header__above-nav .joe_dropdown__menu a.active{color:var(--theme);background:var(--classD)}.joe_header__above-search{position:relative;margin-left:auto;display:flex;align-items:center}.joe_header__above-search .input{background:var(--classC);width:170px;height:34px;border:1px solid transparent;padding:0 18px;color:var(--routine);transition:background 0.35s, border-color 0.35s, padding-right 0.35s;border-radius:17px 0 0 17px}.joe_header__above-search .input:focus{background:var(--background);border-color:var(--theme);padding-right:28px}.joe_header__above-search .input:focus ~ .icon{-webkit-transform:translate3d(0, -50%, 0) rotateY(180deg);transform:translate3d(0, -50%, 0) rotateY(180deg)}.joe_header__above-search .submit{position:relative;z-index:1;height:34px;border:none;background:var(--theme);color:#fff;border-radius:0 17px 17px 0;padding:0 10px}.joe_header__above-search .icon{position:absolute;top:50%;left:142px;width:28px;height:38px;background:url(https://cdn.jsdelivr.net/gh/HaoOuBa/Joe@master/assets/img/search.png);background-size:100% 100%;transition:-webkit-transform 0.35s;transition:transform 0.35s;transition:transform 0.35s, -webkit-transform 0.35s;-webkit-transform:translate3d(100%, -50%, 0) rotateY(180deg);transform:translate3d(100%, -50%, 0) rotateY(180deg)}.joe_header__above-search .result{position:absolute;z-index:2;top:60px;left:0;right:0;background:var(--background);box-shadow:0 0 10px rgba(0,0,0,0.15);border-radius:var(--radius-inner);visibility:hidden;opacity:0;transition:visibility 0.35s, opacity 0.35s, -webkit-transform 0.35s;transition:visibility 0.35s, opacity 0.35s, transform 0.35s;transition:visibility 0.35s, opacity 0.35s, transform 0.35s, -webkit-transform 0.35s;-webkit-transform:translate3d(0, 15px, 0);transform:translate3d(0, 15px, 0)}.joe_header__above-search .result.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);opacity:1;visibility:visible}.joe_header__above-search .result .item{height:40px;line-height:40px;border-bottom:1px solid var(--classD);display:flex;align-items:center;overflow:hidden;padding:0 8px;transition:background 0.35s}.joe_header__above-search .result .item:last-child{border-bottom:none}.joe_header__above-search .result .item:nth-child(1) .sort{background:#fe2d46}.joe_header__above-search .result .item:nth-child(2) .sort{background:#f60}.joe_header__above-search .result .item:nth-child(3) .sort{background:#faa90e}.joe_header__above-search .result .item:hover{background:var(--classD)}.joe_header__above-search .result .item .sort{color:#fff;background:#7f7f8c;width:18px;height:18px;line-height:18px;border-radius:50%;text-align:center;margin-right:8px;font-weight:500}.joe_header__above-search .result .item .text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--routine);font-size:12px}.joe_header__above-search .result .item .views{color:var(--seat);font-size:12px;margin-left:3px}.joe_header__below{position:relative;border-top:1px solid var(--classC);height:45px}.joe_header__below-class{display:flex}.joe_header__below-class .item{margin-right:15px;color:var(--minor);height:45px;line-height:45px;transition:color 0.35s;white-space:nowrap}.joe_header__below-class .item:hover,.joe_header__below-class .item.active{color:var(--theme)}.joe_header__below-class .joe_dropdown{margin-right:15px}.joe_header__below-class .joe_dropdown__link .item{margin-right:3px}.joe_header__below-class .joe_dropdown__menu{width:110px;text-align:center}.joe_header__below-class .joe_dropdown__menu a{display:block;height:34px;line-height:34px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--minor);transition:color 0.35s, background 0.35s}.joe_header__below-class .joe_dropdown__menu a:hover,.joe_header__below-class .joe_dropdown__menu a.active{color:var(--theme);background:var(--classD)}.joe_header__below-progress{position:absolute;z-index:1;left:0;bottom:-3px;height:3px;border-radius:1.5px;background:linear-gradient(to right, #4cd964, #5ac8fa, #007aff);transition:width 0.35s}.joe_aside{padding:15px 0;margin-left:15px}.joe_aside__item{position:relative;width:250px;margin-bottom:15px;border-radius:var(--radius-wrap);box-shadow:var(--box-shadow);overflow:hidden}.joe_aside__item:last-child{position:-webkit-sticky;position:sticky;margin-bottom:0}.joe_aside__item-title{display:flex;align-items:center;border-bottom:1px solid var(--classC);font-size:16px;font-weight:500;height:45px;line-height:45px;padding:0 15px;color:var(--main)}.joe_aside__item-title .icon{width:18px;height:18px;margin-right:8px;fill:var(--main)}.joe_aside__item-title .line{width:10px;height:1px;background:#54b5db;margin-left:12px}.joe_aside__item-contain{position:relative;padding:15px}.joe_aside__item.author{background:var(--background);padding:45px 15px 15px}.joe_aside__item.author::before{content:'';position:absolute;top:90px;left:0;width:100%;height:30px;z-index:2;background:linear-gradient(to bottom, rgba(255,255,255,0), var(--background))}.joe_aside__item.author::after{display:none;content:'';position:absolute;top:0;left:0;width:100%;height:273px;background:url("https://cdn.jsdelivr.net/gh/HaoOuBa/Joe@master/assets/img/snow.gif") no-repeat;background-size:cover;z-index:3;pointer-events:none}.joe_aside__item.author:hover::after{display:block}.joe_aside__item.author .image{position:absolute;top:0;left:0;width:100%;height:120px;-o-object-fit:cover;object-fit:cover;z-index:1}.joe_aside__item.author .user{position:relative;z-index:4;display:flex;flex-direction:column;align-items:center;padding-bottom:15px}.joe_aside__item.author .user .avatar{width:75px;height:75px;border-radius:50%;overflow:hidden;margin-bottom:10px;-o-object-fit:cover;object-fit:cover;transition:-webkit-transform 0.75s;transition:transform 0.75s;transition:transform 0.75s, -webkit-transform 0.75s;background:var(--background);padding:5px}.joe_aside__item.author .user .avatar:hover{-webkit-transform:rotate(360deg);transform:rotate(360deg)}.joe_aside__item.author .user .link{color:var(--theme);margin-bottom:10px;font-size:16px;font-weight:500}.joe_aside__item.author .user .link:hover{text-decoration:underline}.joe_aside__item.author .user .motto{color:var(--main);text-align:center}.joe_aside__item.author .count{width:100%;padding-bottom:15px;display:flex;align-items:center;border-bottom:1px solid var(--classC)}.joe_aside__item.author .count .item{min-width:0;flex:1;display:flex;flex-direction:column;align-items:center;color:var(--routine);font-size:12px}.joe_aside__item.author .count .item:first-child{border-right:1px solid var(--classC)}.joe_aside__item.author .count .item .num{max-width:70px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;font-size:22px;color:var(--main);margin-bottom:3px;text-shadow:var(--text_shadow)}.joe_aside__item.author .list{padding-top:15px}.joe_aside__item.author .list .item{display:flex;align-items:center;justify-content:space-between;line-height:30px}.joe_aside__item.author .list .item .link{position:relative;color:var(--routine);max-width:85%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.joe_aside__item.author .list .item .link::after{content:'';position:absolute;bottom:0;left:0;width:0;height:1px;background:var(--theme);transition:all 0.35s}.joe_aside__item.author .list .item .link:hover{color:var(--theme)}.joe_aside__item.author .list .item .link:hover::after{width:100%}.joe_aside__item.author .list .item .icon{fill:var(--routine)}.joe_aside__item.timelife{background:var(--background)}.joe_aside__item.timelife .item{margin-bottom:15px}.joe_aside__item.timelife .item:last-child{margin-bottom:0}.joe_aside__item.timelife .item .title{font-size:12px;color:var(--minor);margin-bottom:5px;display:flex;align-items:center}.joe_aside__item.timelife .item .title .text{color:var(--theme);font-weight:500;font-size:14px;margin:0 5px}.joe_aside__item.timelife .item .progress{display:flex;align-items:center}.joe_aside__item.timelife .item .progress-bar{height:10px;border-radius:5px;overflow:hidden;background:var(--classC);width:0;min-width:0;flex:1;margin-right:5px}.joe_aside__item.timelife .item .progress-bar-inner{width:0;height:100%;border-radius:5px;transition:width 0.35s;-webkit-animation:progress 750ms linear infinite;animation:progress 750ms linear infinite}.joe_aside__item.timelife .item .progress-bar-inner-0{background:#bde6ff;background-image:linear-gradient(135deg, #50bfff 25%, transparent 25%, transparent 50%, #50bfff 50%, #50bfff 75%, transparent 75%, transparent 100%);background-size:30px 30px}.joe_aside__item.timelife .item .progress-bar-inner-1{background:#ffd980;background-image:linear-gradient(135deg, #f7ba2a 25%, transparent 25%, transparent 50%, #f7ba2a 50%, #f7ba2a 75%, transparent 75%, transparent 100%);background-size:30px 30px}.joe_aside__item.timelife .item .progress-bar-inner-2{background:#ffa9a9;background-image:linear-gradient(135deg, #ff4949 25%, transparent 25%, transparent 50%, #ff4949 50%, #ff4949 75%, transparent 75%, transparent 100%);background-size:30px 30px}.joe_aside__item.timelife .item .progress-bar-inner-3{background:#67c23a;background-image:linear-gradient(135deg, #4f9e28 25%, transparent 25%, transparent 50%, #4f9e28 50%, #4f9e28 75%, transparent 75%, transparent 100%);background-size:30px 30px}.joe_aside__item.timelife .item .progress-percentage{color:var(--minor)}.joe_aside__item.weather{background:var(--background)}.joe_aside__item.weather .joe_aside__item-contain{min-height:300px}.joe_aside__item.hot{background:var(--background)}.joe_aside__item.hot .empty{text-align:center;color:var(--routine)}.joe_aside__item.hot .item{margin-bottom:15px}.joe_aside__item.hot .item:last-child{margin-bottom:0}.joe_aside__item.hot .item:nth-child(1) .link .sort{background:#ff183e}.joe_aside__item.hot .item:nth-child(2) .link .sort{background:#ff5c38}.joe_aside__item.hot .item:nth-child(3) .link .sort{background:#ffb821}.joe_aside__item.hot .item .link{position:relative;display:block;border-radius:var(--radius-inner);overflow:hidden}.joe_aside__item.hot .item .link:hover .image{-webkit-transform:scale(1.2);transform:scale(1.2)}.joe_aside__item.hot .item .link .sort{position:absolute;top:5px;right:-20px;background:#7f7f8c;color:#fff;width:65px;text-align:center;font-size:12px;-webkit-transform:rotate(45deg);transform:rotate(45deg);font-weight:500;z-index:1;font-style:normal}.joe_aside__item.hot .item .link .image{width:100%;height:130px;-o-object-fit:cover;object-fit:cover;transition:-webkit-transform 0.35s;transition:transform 0.35s;transition:transform 0.35s, -webkit-transform 0.35s}.joe_aside__item.hot .item .link .describe{position:absolute;z-index:1;left:0;right:0;bottom:0;padding:10px;background:linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.75));font-size:12px;color:var(--seat)}.joe_aside__item.hot .item .link .describe h6{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff;line-height:24px;font-size:14px}.joe_aside__item.ranking{background:var(--background)}.joe_aside__item.ranking .item{display:flex;align-items:center;line-height:32px;overflow:hidden}.joe_aside__item.ranking .item:nth-child(1) .sort{color:#fe2d46}.joe_aside__item.ranking .item:nth-child(2) .sort{color:#f60}.joe_aside__item.ranking .item:nth-child(3) .sort{color:#faa90e}.joe_aside__item.ranking .item .sort{color:var(--minor);font-weight:700;font-size:18px;width:18px;min-width:18px;max-width:18px}.joe_aside__item.ranking .item .link{position:relative;color:var(--routine);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.joe_aside__item.ranking .item .link::after{position:absolute;content:'';bottom:0;left:0;width:0;height:1px;background:var(--theme);transition:width 0.5s}.joe_aside__item.ranking .item .link:hover{color:var(--theme)}.joe_aside__item.ranking .item .link:hover::after{width:100%}.joe_aside__item.ranking .error{text-align:center;color:var(--routine)}.joe_aside__item.newreply{background:var(--background)}.joe_aside__item.newreply .empty{text-align:center;color:var(--routine)}.joe_aside__item.newreply .item{margin-bottom:15px;border-bottom:1px dashed var(--classC);padding-bottom:15px}.joe_aside__item.newreply .item:last-child{margin-bottom:0;border-bottom-color:transparent;padding-bottom:0}.joe_aside__item.newreply .item .user{display:flex;margin-bottom:12px}.joe_aside__item.newreply .item .user .avatar{width:40px;height:40px;min-width:40px;min-height:40px;margin-right:12px;border-radius:50%;border:1px solid var(--classA);padding:3px}.joe_aside__item.newreply .item .user .info{display:flex;flex-direction:column;justify-content:space-between}.joe_aside__item.newreply .item .user .info .author{color:var(--main);font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.joe_aside__item.newreply .item .user .info .date{font-size:12px;color:var(--minor)}.joe_aside__item.newreply .item .reply{position:relative;background:var(--classD);border-radius:6px;padding:5px 10px}.joe_aside__item.newreply .item .reply::before{content:'';width:0;height:0;border-bottom:6px solid var(--classD);border-left:6px solid transparent;border-right:6px solid transparent;position:absolute;left:15px;bottom:100%}.joe_aside__item.newreply .item .reply .link{display:-webkit-box;-webkit-line-clamp:2;/*! autoprefixer: off */-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;color:var(--minor);font-size:13px;font-weight:500;line-height:24px;transition:all 0.35s}.joe_aside__item.newreply .item .reply .link:hover{color:var(--theme)}.joe_aside__item.newreply .item .reply .link .owo_image{height:18px;vertical-align:-5px}.joe_list__item{display:flex;position:relative;width:100%;padding:15px 0;border-bottom:1px solid var(--classC)}.joe_list__item:last-child{border-bottom:none}.joe_list__item:hover .line{-webkit-transform:scaleY(1);transform:scaleY(1)}.joe_list__item:hover .thumbnail time{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.joe_list__item .line{position:absolute;z-index:1;top:15px;left:-15px;width:4px;height:25px;border-radius:2px;background:var(--theme);-webkit-transform:scaleY(0);transform:scaleY(0);transition:-webkit-transform 0.35s;transition:transform 0.35s;transition:transform 0.35s, -webkit-transform 0.35s}.joe_list__item .thumbnail{position:relative;width:210px;height:140px;min-width:210px;min-height:140px;margin-right:15px;overflow:hidden}.joe_list__item .thumbnail img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:var(--radius-inner);transition:opacity 0.35s}.joe_list__item .thumbnail img:hover{opacity:0.85}.joe_list__item .thumbnail time{position:absolute;z-index:1;top:5px;right:5px;background:var(--theme);height:20px;line-height:20px;padding:0 8px;color:#fff;font-size:12px;border-radius:10px;transition:-webkit-transform 0.35s;transition:transform 0.35s;transition:transform 0.35s, -webkit-transform 0.35s;-webkit-transform:translate3d(120%, 0, 0);transform:translate3d(120%, 0, 0)}.joe_list__item .thumbnail svg{position:absolute;z-index:1;top:5px;left:5px;width:20px;height:20px;fill:#fff}.joe_list__item .information{display:flex;flex-direction:column;flex:1;min-width:0}.joe_list__item .information .title{display:flex;align-items:center;margin-bottom:10px}.joe_list__item .information .title .badge{height:20px;line-height:20px;background-image:-webkit-linear-gradient(0deg, #3ca5f6 0%, #a86af9 100%);color:#fff;font-size:12px;margin-right:5px;border-radius:2px;padding:0 8px;white-space:nowrap}.joe_list__item .information .title h6{color:var(--main);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:18px;line-height:24px;transition:color 0.35s}.joe_list__item .information .title h6:hover{color:var(--theme)}.joe_list__item .information .abstract{display:-webkit-box;-webkit-line-clamp:2;/*! autoprefixer: off */-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;color:var(--minor);transition:opacity 0.35s;word-break:break-all;line-height:24px}.joe_list__item .information .abstract:hover{opacity:0.8}.joe_list__item .information .meta{display:flex;align-items:center;margin-top:auto;color:var(--minor);font-size:13px}.joe_list__item .information .meta .items{display:flex;align-items:center}.joe_list__item .information .meta .items li::after{content:'/';color:#e1e1e1;padding:0 5px}.joe_list__item .information .meta .items li:last-child::after{display:none}.joe_list__item .information .meta .last{margin-left:auto;display:flex;align-items:center}.joe_list__item .information .meta .last .icon{margin-right:3px}.joe_list__item .information .meta .last .link{color:var(--minor)}.joe_list__item .information .meta .last .link:hover{color:var(--theme)}.joe_list__loading .item{display:flex;position:relative;width:100%;padding:15px 0;border-bottom:1px solid var(--classC)}.joe_list__loading .item:last-child{border-bottom:none}.joe_list__loading .item .thumbnail{position:relative;width:210px;height:140px;min-width:210px;min-height:140px;margin-right:15px;background:var(--classD);-webkit-animation:list_thumbnail_loading 0.5s infinite alternate;animation:list_thumbnail_loading 0.5s infinite alternate;border-radius:var(--radius-inner)}.joe_list__loading .item .information{flex:1;min-width:0}.joe_list__loading .item .information .title{height:24px;border-radius:var(--radius-inner);background:var(--classD);-webkit-animation:list_title_loading 0.75s infinite alternate;animation:list_title_loading 0.75s infinite alternate;margin-bottom:15px}.joe_list__loading .item .information .abstract p{height:18px;border-radius:var(--radius-inner);background:var(--classD);margin-bottom:5px;-webkit-animation:list_abstract_loading 0.8s infinite alternate;animation:list_abstract_loading 0.8s infinite alternate}.joe_load{margin:15px auto 0;width:120px;height:32px;line-height:32px;text-align:center;border-radius:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--background);color:var(--routine);transition:-webkit-transform 0.25s;transition:transform 0.25s;transition:transform 0.25s, -webkit-transform 0.25s;box-shadow:var(--box-shadow)}.joe_load:active{-webkit-transform:scale(0.75);transform:scale(0.75)}.joe_detail{background:var(--background);border-radius:var(--radius-wrap);padding:15px;box-shadow:var(--box-shadow);margin-bottom:15px}.joe_detail__category{display:flex;align-items:center;margin-bottom:15px}.joe_detail__category .item{color:#fff;font-size:12px;padding:3px 8px;margin-right:5px;border-radius:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px;transition:opacity 0.35s, -webkit-transform 0.35s;transition:transform 0.35s, opacity 0.35s;transition:transform 0.35s, opacity 0.35s, -webkit-transform 0.35s}.joe_detail__category .item:hover{opacity:0.85;-webkit-transform:translate3d(0, -3px, 0);transform:translate3d(0, -3px, 0)}.joe_detail__category .item:last-child{margin-right:0}.joe_detail__category .item-0{background:#0396ff}.joe_detail__category .item-1{background:#ea5455}.joe_detail__category .item-2{background:#7367f0}.joe_detail__category .item-3{background:#28c76f}.joe_detail__category .item-4{background:#9f44d3}.joe_detail__title{font-size:24px;color:var(--main);text-shadow:var(--text-shadow);text-align:center;margin-bottom:15px;word-break:break-all}.joe_detail__count{position:relative;display:flex;align-items:center;justify-content:space-between;padding-bottom:15px;border-bottom:1px solid var(--classB)}.joe_detail__count::after{content:'';position:absolute;bottom:-1.5px;left:0;width:80px;height:3px;border-radius:1.5px;background:var(--theme)}.joe_detail__count-information{display:flex;align-items:center}.joe_detail__count-information .avatar{width:35px;height:35px;border-radius:50%;margin-right:10px;border:1px solid var(--classA);padding:3px}.joe_detail__count-information .meta{display:flex;flex-direction:column;height:35px;justify-content:space-between;font-size:12px}.joe_detail__count-information .meta .author .link{font-weight:500;color:var(--theme)}.joe_detail__count-information .meta .author .link:hover{text-decoration:underline}.joe_detail__count-information .meta .item{display:flex;align-items:center;color:var(--minor);line-height:16px}.joe_detail__count-information .meta .item .line{color:var(--seat);margin:0 7px;vertical-align:middle}.joe_detail__count-created{font-size:32px;line-height:42px;color:var(--routine);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-shadow:var(--text-shadow);font-family:consolas}.joe_detail__article{padding-top:15px;font-size:15px}.joe_detail__article h1,.joe_detail__article h2,.joe_detail__article h3,.joe_detail__article h4,.joe_detail__article h5,.joe_detail__article h6{color:var(--main);font-size:18px;line-height:24px;margin-bottom:15px;position:relative}.joe_detail__article h1{padding:0 15px 0 20px}.joe_detail__article h1::before{content:'#';color:var(--theme);font-weight:700;position:absolute;top:0;left:0;line-height:24px}.joe_detail__article h2{padding:0 15px}.joe_detail__article h2::before{content:'';position:absolute;top:10%;bottom:10%;left:0;width:4px;border-radius:2px;background:var(--theme)}.joe_detail__article h3{padding:0 15px}.joe_detail__article h3::before{content:'';position:absolute;top:8.5px;left:0;height:7px;width:7px;border-radius:50%;background:var(--theme)}.joe_detail__article h4::before{content:'「';color:var(--theme);font-weight:600;margin-right:5px}.joe_detail__article h4::after{content:'」';color:var(--theme);font-weight:600;margin-left:5px}.joe_detail__article h5{padding:0 15px 0 28px}.joe_detail__article h5::before{content:'';position:absolute;top:2px;left:0;width:20px;height:20px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAC8klEQVRYR+3WP2gTURwH8O/vKnVRRHKXP52cBO3g4p/BqYNIhy4muajUQRBFKjQV1En6ZxJBcmlRCoJDRe3FDiJVwamLS3FwqbgIgss1l2ZQF5XeT3I1Z3NJ7u5dLlAwN9699/t97vfe7/EIO/yhHe5DD9jpCv3fFVTu856+Xzi62Y/35hj9CFPNrlUwWeRJAJfBGADwBcBNI0/PRZFdAdo4xlQLjCqKjBzogat7hZCRAgPghJGBgbFnxglAOvS7b/fLb+q+qnv5BHBCyEBAWTdnANy2IxOtWSC1qsY+1jOFwAVG+gIVvXyHQbcaKuZCxmf5iMQogXFQtEsBeO5JT6BcMu+Bcb1lUhcyqfExACUAB6JEtgUqi+U5JrrmmcyFHCjwSYtQO+tSUSFbAmXdnAdwJVASdyWLPAS2kbFA8xsHNS13EzCmlx8R6KJQcBcypfFpho3cKxRna3ADsgEo6+ZjAKMhgjZ1d2KWR2gTSyD0h4jnIB2gXDIXwciFCPZvSnMl0wwshYrJGDImaMUGKovlLBPVOrDjh8APzFx8zDkjNa7FzYoGZsKT9XEarQOHmei1aJA246cqOWW6/i2l8VMGzoWIPW/k6eq2Ja6UwCz8pw2JGZ8sS8pUz8fWau/jGp+SgLchcGBgZD1Py41NUuoI+ZloV8ZU93+ogZKzfBiWfXAPCgMJU8Y42avQdMzI4ZBfmSizocqrUeJaAmsvBZGGBCtTziXeRY1rCxRAViEhXckqK93AeQJ9kYTvlmVlqmcTdhNEtefc+9X3utVmuX+CkK6oyqtu4nwrWP8bF5IZdGYjJ79wDuMCz4D+XmhFWnZbt7ab5ltBB6mbkyAaBPFCJassuwMmNb4L4EZgXwBc4AoGTZrUeA6A9x1yK6tzzvnFDlxBv0D176kCP2TCpbbjBXCRV9DZk0VeAONCE1IQ1zWg3dlF1sFQHWQIXFeBNrLAw5BwHBZWjQl6E3SbbB8X+R4Mg/Ca0wN2WtFeBTut4B84mFI4VpekyAAAAABJRU5ErkJggg==");background-size:100% 100%}.joe_detail__article h6{padding:0 15px 0 28px}.joe_detail__article h6::before{content:'';position:absolute;top:2px;left:0;width:20px;height:20px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAEI0lEQVRYR+3Xb2wTZRwH8G/vL22RPy5GW8fK6rJpGeFFY9RO3TRRE1HfmEAammEyjZmOSEg1RrPZaTD6xjhU/Ndlf0CZgwmD+qcgZBRIETeqY0Vcnc7pGonhRY2l3m2t5upqjq693l2vcy+8N81zz/NcPvf75fd7rjos8ku3yH34HyjK0PqlDLPzD56vMNL0VHxmpgXAoUIZXKgI3sMSpK+cNTAbylaj/9IkprnLM3+mkg8XQi4EsJ4lSL+ZNbAfVd+JG/XLcSERg3M8IAtZauBtDEkeNdN6fX9NfRqXueQiSwm00wQRMDMGw94snBJkqYBrSYIIXs/ojftqGq6IXHZRFIpkKYC2JSw9SJE663W0nthlqcMawwrJYpVCag1M48pNy1YNvLWRffGNIYSCv6Cnog7rjCtVIbUEXoG7qeqaNMj51F58dWoKPZY62JeWyUJG+ctcIplcIizWCpgTl9EIyODJn9BtceDWq/6B57tO/H4R688fFaZ7AWzWAiiJEyMDx39Ed6UDdyy7Ni/w1ekxbP95VJi/F8CRYoGycGLksaEJdFU6cPdy0zxkR/RbtE6FhPvHATQUm2JFODHSfyyCLmsd7lth/hf53q/jcE8OC+NTAG7PTKiNoCqcGPnpF+PotDrwwNXl+OC3H9A8cVqYPgPgFnFo1QCLwomRg4cvoPMGBzZHTgq3zwKwZ+ddKVATXAZhf+gdnPvuojAUqmJdrspRAtQU93pXEM+8clgwhQHU5itruUBNcTt6TsP9sl8weQC0S/VFOUBNcW/2folt2z+XhZPTZh6kSKJ79aqVRuFszRxfUm8sNbdz9xlsfekz2bhCQBvDMMM8z+ubN92Mjrb71brS+97dM4wtnk8U4SSBBEGErVarzeVywePxoHVLA1pb6lUh3+8bwZMv+BTjpIAVACa9Xq+uqakJ7e3tqpGd/WfR3Jr+81awIJS0mY0A+sLhMGw2W3qfGmTXvhAef/6gapxUBDuqqqoejUQiBvFbKUH2DHyNx54bLAqXF0jT9HBjY6Pd6/XOi7oc5K7936Dp2QNF4/IBrTqdLuLxeIi2tracRSGF/PDgKB55er8muHzATQB2m81m+P1+1NbmPoVyIfsOnUOj+2PNcPmAO1iWbeE4TmexWODz+WQhayrL4No2oCkuJ5Bl2VGO49ZmcisXObdeVSuRaq7ZZ3G10KBTqRQl3pQPGY1GEQgE4HQ6heVDAO5S1cklNmUDXQRB9KZSqXkfESaTCW63G7FYDKFQKDEyMoJoNKqfe/bbAJ7QGpcrxa8xDLOV5/k0kGXZv2ZnZ5FMJtNjmqYvURR1IpFInAcwAeD7ud/pUuDmAY1G41g8Hl9DkmScoqggx3FHAIyJMMlSQfI9V5zKagDC93dsoRFKimQx2dIWOV/U/yn6bx0WyDj8vgLOAAAAAElFTkSuQmCC");background-size:100% 100%}.joe_detail__article hr{border:none;height:1px;background-color:var(--classB);margin-bottom:15px}.joe_detail__article p{color:var(--routine);line-height:26px;white-space:pre-wrap;word-spacing:5px;letter-spacing:1px;word-break:break-all;margin-bottom:15px}.joe_detail__article blockquote{color:var(--routine);line-height:26px;white-space:pre-wrap;word-spacing:5px;letter-spacing:1px;word-break:break-all;margin-bottom:15px;background:#ecf8ff;border-left:5px solid #50bfff;padding:10px 15px;border-radius:0 var(--radius-inner) var(--radius-inner) 0;font-size:14px}.joe_detail__article blockquote p{margin:0}.joe_detail__article a{display:inline-block;line-height:26px;color:var(--theme);position:relative}.joe_detail__article a:hover::after{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}.joe_detail__article a::after{content:'';position:absolute;width:100%;height:1px;bottom:-1px;left:0;background:var(--theme);-webkit-transform:scaleX(0.25);transform:scaleX(0.25);opacity:0;transition:opacity 0.35s, -webkit-transform 0.35s;transition:transform 0.35s, opacity 0.35s;transition:transform 0.35s, opacity 0.35s, -webkit-transform 0.35s}.joe_detail__article code{display:inline-block;min-height:26px;line-height:26px;border-radius:var(--radius-inner);font-size:12px;background:#fdf6ec;padding:0 8px;color:#e6a23c}.joe_detail__article pre code{display:unset;vertical-align:unset;min-height:unset;line-height:unset;border-radius:unset;font-size:unset;background:unset;padding:unset;color:unset}.joe_detail__article pre[class*='language-']{position:relative;padding:15px;padding-top:35px;margin:0 0 15px;border-radius:var(--radius-inner)}.joe_detail__article pre[class*='language-']::after{content:'';position:absolute;top:0;left:0;width:100%;height:30px;background:#2d2d2d}.joe_detail__article pre[class*='language-']::before{content:'';position:absolute;top:9px;left:15px;width:12px;height:12px;border-radius:50%;background:#fc625d;box-shadow:20px 0 #fdbc40, 40px 0 #35cd4b;z-index:1}.joe_detail__article img{display:block;max-width:100%;border-radius:var(--radius-inner);transition:box-shadow 0.35s, -webkit-transform 0.35s;transition:transform 0.35s, box-shadow 0.35s;transition:transform 0.35s, box-shadow 0.35s, -webkit-transform 0.35s;cursor:zoom-in;margin:0 auto}.joe_detail__article img:hover{-webkit-transform:translateY(-5px);transform:translateY(-5px);box-shadow:0 34px 20px -24px rgba(136,161,206,0.3)}.joe_detail__article ol,.joe_detail__article ul{color:var(--routine);margin-bottom:15px;padding:0 30px}.joe_detail__article ol li,.joe_detail__article ul li{line-height:26px}.joe_detail__article ol li{list-style:decimal}.joe_detail__article ul li{list-style:disc}.joe_detail__article ul li::marker{color:var(--routine)}.joe_detail__article table{width:100%;max-width:100%;table-layout:fixed;color:var(--minor);margin-bottom:15px;font-size:13px;border-top:1px solid var(--classC);border-left:1px solid var(--classC)}.joe_detail__article table td,.joe_detail__article table th{padding:8px;border-bottom:1px solid var(--classC);border-right:1px solid var(--classC)}.joe_detail__article table thead th{font-weight:500;background:var(--classC)}.joe_detail__article table tbody tr{transition:background 0.35s}.joe_detail__article table tbody tr:hover{background:var(--classD)}.joe_detail__article span.block{display:block}.joe_detail__article-hide{background:repeating-linear-gradient(145deg, var(--classD), var(--classD) 15px, var(--background) 0, var(--background) 25px);padding:15px 0;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal}.joe_detail__article-hide i{position:relative;font-style:normal;cursor:pointer;color:var(--theme)}.joe_detail__article-hide i::after{content:'';position:absolute;bottom:-2px;left:0;right:0;width:100%;height:1px;background:var(--theme);-webkit-transform:scaleX(0.25);transform:scaleX(0.25);opacity:0;transition:opacity 0.35s, -webkit-transform 0.35s;transition:transform 0.35s, opacity 0.35s;transition:transform 0.35s, opacity 0.35s, -webkit-transform 0.35s}.joe_detail__article-hide i:hover::after{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}.joe_detail__agree{display:flex;align-items:center;justify-content:center;margin-bottom:15px}.joe_detail__agree .agree{text-align:center;font-size:12px;color:var(--minor);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.joe_detail__agree .agree .icon{position:relative;display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:#f56c6c;cursor:pointer;margin-bottom:8px}.joe_detail__agree .agree .icon.active{-webkit-animation:box_shadow 1s;animation:box_shadow 1s;box-shadow:0 0 0 20px rgba(255,255,255,0)}.joe_detail__agree .agree .icon svg{position:absolute;width:28px;height:28px;-webkit-transform:scale(0);transform:scale(0);opacity:0;transition:opacity 0.85s, -webkit-transform 0.85s;transition:transform 0.85s, opacity 0.85s;transition:transform 0.85s, opacity 0.85s, -webkit-transform 0.85s}.joe_detail__agree .agree .icon svg.active{-webkit-transform:scale(1);transform:scale(1);opacity:1}.joe_detail__copyright{padding-top:15px;border-top:1px solid var(--classB)}.joe_detail__copyright .content{background:var(--classD);padding:15px;border-radius:var(--radius-inner)}.joe_detail__copyright .content .item{display:flex;align-items:center;color:var(--minor);white-space:nowrap;margin-bottom:10px}.joe_detail__copyright .content .item:last-child{margin-bottom:0}.joe_detail__copyright .content .item .icon{width:20px;height:20px;min-width:20px;min-height:20px;margin-right:5px}.joe_detail__copyright .content .item .link{color:var(--minor)}.joe_detail__copyright .content .item .link:hover{color:var(--theme)}.joe_detail__copyright .content .item .text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.joe_detail__friends{display:flex;flex-wrap:wrap;margin:0 -7.5px;margin-bottom:15px}.joe_detail__friends-item{width:25%;padding:7.5px}.joe_detail__friends-item .contain{display:block;border-radius:var(--radius-inner);overflow:hidden;padding:15px;color:#fff;word-break:break-all;transition:box-shadow 0.35s, -webkit-transform 0.35s;transition:transform 0.35s, box-shadow 0.35s;transition:transform 0.35s, box-shadow 0.35s, -webkit-transform 0.35s}.joe_detail__friends-item .contain:hover{-webkit-transform:translateY(-5px) scale(1.025);transform:translateY(-5px) scale(1.025);box-shadow:0 34px 20px -24px rgba(136,161,206,0.3)}.joe_detail__friends-item .contain .title{position:relative}.joe_detail__friends-item .contain .title::after{content:'';position:absolute;bottom:-5px;left:0;width:100%;height:1px;background:#fff}.joe_detail__friends-item .contain .content{display:flex;justify-content:space-between;align-items:center;margin-top:15px}.joe_detail__friends-item .contain .content .desc{margin-right:10px}.joe_detail__friends-item .contain .content .avatar{width:40px;height:40px;min-width:40px;min-height:40px;border-radius:50%;-o-object-fit:cover;object-fit:cover}.joe_footer{border-top:1px solid var(--classB);color:var(--minor)}.joe_footer .joe_container{display:flex;align-items:center;justify-content:space-between;min-height:65px}.joe_footer .joe_container a{color:var(--minor);transition:all 0.35s}.joe_footer .joe_container a:hover{color:var(--theme)}.joe_pagination{display:flex;align-items:center;justify-content:flex-end;padding-top:15px}.joe_pagination li{margin-left:5px}.joe_pagination li.active a{background:var(--theme);color:#fff;font-weight:500}.joe_pagination li a{display:flex;align-items:center;height:32px;color:var(--main);padding:0 15px;background:var(--background);border-radius:2px;transition:background 0.35s, color 0.35s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.joe_pagination li a:hover{background:var(--theme);color:#fff}.joe_pagination li a:hover .icon{fill:#fff}.joe_pagination li a .icon{width:12px;height:12px;fill:var(--routine);transition:fill 0.35s}.joe_pagination li a .icon-next{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.joe_action{position:fixed;bottom:90px;right:30px;z-index:333}.joe_action_item{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--background);border-radius:50%;cursor:pointer;margin-top:15px;box-shadow:0 0 10px rgba(0,0,0,0.1),0 5px 20px rgba(0,0,0,0.2)}.joe_action_item svg{position:absolute;width:25px;height:25px;fill:var(--theme)}.joe_action_item.scroll{visibility:hidden;-webkit-transform:scale(0);transform:scale(0);transition:visibility 0.35s, -webkit-transform 0.35s;transition:visibility 0.35s, transform 0.35s;transition:visibility 0.35s, transform 0.35s, -webkit-transform 0.35s}.joe_action_item.scroll.active{visibility:visible;-webkit-transform:scale(1);transform:scale(1)}.joe_action_item.mode svg{-webkit-transform:scale(0);transform:scale(0);opacity:0;transition:opacity 0.85s, -webkit-transform 0.85s;transition:transform 0.85s, opacity 0.85s;transition:transform 0.85s, opacity 0.85s, -webkit-transform 0.85s}.joe_action_item.mode svg.active{-webkit-transform:scale(1);transform:scale(1);opacity:1}.joe_comment{background:var(--background);border-radius:var(--radius-wrap);box-shadow:var(--box-shadow);padding:15px}.joe_comment__title{font-weight:500;text-align:center;font-size:24px;color:var(--main);text-shadow:var(--text-shadow);border-bottom:1px solid var(--classB);margin-bottom:15px;padding-bottom:15px}.joe_comment__empty{display:flex;align-items:center;justify-content:center;flex-direction:column;color:var(--routine)}.joe_comment__empty-icon{fill:var(--routine)}.joe_comment__close{display:flex;align-items:center;justify-content:center;color:var(--routine)}.joe_comment__close-icon{fill:var(--routine);margin-right:5px}.joe_comment__respond-type{display:flex;align-items:center;justify-content:flex-end}.joe_comment__respond-type .item{background:var(--classD);padding:0 15px;height:32px;color:var(--main);border:none}.joe_comment__respond-type .item:first-child{border-top-left-radius:var(--radius-inner)}.joe_comment__respond-type .item:last-child{border-top-right-radius:var(--radius-inner)}.joe_comment__respond-type .item.active{color:#fff;background:var(--theme)}.joe_comment__respond-form{border-radius:6px 0 6px 6px;background:var(--classD)}.joe_comment__respond-form .head{display:flex;align-items:center;border-bottom:1px solid var(--classA)}.joe_comment__respond-form .head .list{flex:1}.joe_comment__respond-form .head .list input{width:100%;border:none;background:transparent;padding:0 15px;height:40px;color:var(--routine);font-size:14px}.joe_comment__respond-form .head .list:nth-child(2){position:relative}.joe_comment__respond-form .head .list:nth-child(2)::after,.joe_comment__respond-form .head .list:nth-child(2)::before{content:'';position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:1px;height:15px;background:var(--classA)}.joe_comment__respond-form .head .list:nth-child(2)::before{left:0}.joe_comment__respond-form .head .list:nth-child(2)::after{right:0}.joe_comment__respond-form .body{padding:15px}.joe_comment__respond-form .body .text{width:100%;height:180px;border:none;resize:none;vertical-align:middle;color:var(--routine);background:transparent;font-size:14px}.joe_comment__respond-form .body .draw{position:relative;width:100%}.joe_comment__respond-form .body .draw .line{display:flex;align-items:center;position:absolute;top:10px;left:10px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.joe_comment__respond-form .body .draw .line li{cursor:pointer;margin-right:10px;color:var(--main)}.joe_comment__respond-form .body .draw .line li.active{color:var(--theme)}.joe_comment__respond-form .body .draw .color{display:flex;align-items:center;position:absolute;top:10px;left:50%;-webkit-transform:translate(-50%);transform:translate(-50%)}.joe_comment__respond-form .body .draw .color li{width:20px;height:20px;border-radius:50%;margin:0 5px;cursor:pointer}.joe_comment__respond-form .body .draw .color li.active{box-shadow:0 4px 10px rgba(0,0,0,0.35)}.joe_comment__respond-form .body .draw .color li:nth-child(1){background:#303133}.joe_comment__respond-form .body .draw .color li:nth-child(2){background:#67c23a}.joe_comment__respond-form .body .draw .color li:nth-child(3){background:#e6a23c}.joe_comment__respond-form .body .draw .color li:nth-child(4){background:#f56c6c}.joe_comment__respond-form .body .draw .icon{position:absolute;right:10px;cursor:pointer;fill:var(--minor);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.joe_comment__respond-form .body .draw .icon-undo{top:10px}.joe_comment__respond-form .body .draw .icon-animate{bottom:10px}.joe_comment__respond-form .body .draw canvas{background:var(--background);border-radius:var(--radius-inner)}.joe_comment__list{padding-top:15px}.joe_comment__list .comment-list__item .contain{display:flex;margin-bottom:15px}.joe_comment__list .comment-list__item .contain .avatar{width:48px;height:48px;border-radius:50%;margin-right:15px;padding:3px;border:1px solid var(--classD)}.joe_comment__list .comment-list__item .contain .content{min-width:0;flex:1;border-bottom:1px solid var(--classC);padding-bottom:15px}.joe_comment__list .comment-list__item .contain .content .user{display:flex;align-items:center;margin-bottom:8px;line-height:20px;color:var(--main)}.joe_comment__list .comment-list__item .contain .content .user .author{margin-right:10px}.joe_comment__list .comment-list__item .contain .content .user .owner{background:var(--theme);color:#fff;padding:0 5px;border-radius:2px;font-style:normal}.joe_comment__list .comment-list__item .contain .content .user .agent{margin-left:auto;font-size:12px;color:var(--minor)}.joe_comment__list .comment-list__item .contain .content .user .waiting{color:#e6a23c;font-style:normal}.joe_comment__list .comment-list__item .contain .content .substance{width:100%;background:var(--classD);padding:12px 15px;border-radius:0 var(--radius-inner) var(--radius-inner) 10px;color:var(--main);margin-bottom:8px;word-break:break-all;line-height:24px}.joe_comment__list .comment-list__item .contain .content .substance .parent{color:#388bff;margin-bottom:5px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-weight:500}.joe_comment__list .comment-list__item .contain .content .substance .owo_image{height:22px}.joe_comment__list .comment-list__item .contain .content .substance .draw_image{max-width:100%}.joe_comment__list .comment-list__item .contain .content .handle{display:flex;align-items:center;color:var(--minor)}.joe_comment__list .comment-list__item .contain .content .handle .date{margin-right:10px}.joe_comment__list .comment-list__item .children{padding-left:63px}.joe_comment__list .comment-list__item .children .children{padding-left:0}.joe_comment .joe_pagination{padding-top:0}.profile-color-modes-illu-frame{opacity:0}.profile-color-modes-illu-red{stroke:#da3633}.profile-color-modes-illu-orange{stroke:#f0883e}.profile-color-modes-illu-purple{stroke:#8957e5}.profile-color-modes-illu-green{stroke:#3fb950}.profile-color-modes-illu-blue{stroke:#388bfd}.profile-color-modes-illu-group{-webkit-animation:profile-color-modes-illu-anim 0.2s cubic-bezier(0.72, 0.08, 1, 0.68) backwards;animation:profile-color-modes-illu-anim 0.2s cubic-bezier(0.72, 0.08, 1, 0.68) backwards}.profile-color-modes-illu-frame{-webkit-animation:profile-color-modes-illu-anim-frame-show 0s forwards, profile-color-modes-illu-anim-frame-hide 0s forwards;animation:profile-color-modes-illu-anim-frame-show 0s forwards, profile-color-modes-illu-anim-frame-hide 0s forwards}.profile-color-modes-illu-frame:first-child{opacity:1;-webkit-animation:profile-color-modes-illu-anim-frame-hide 0s forwards;animation:profile-color-modes-illu-anim-frame-hide 0s forwards}.profile-color-modes-illu-frame:nth-child(8){-webkit-animation:profile-color-modes-illu-anim-frame-show 0s forwards;animation:profile-color-modes-illu-anim-frame-show 0s forwards}.profile-color-modes-illu-red{-webkit-animation-delay:0.4s;animation-delay:0.4s;-webkit-animation-duration:0.1s;animation-duration:0.1s}.profile-color-modes-illu-orange{-webkit-animation-delay:0.5s;animation-delay:0.5s;-webkit-animation-duration:0.1s;animation-duration:0.1s}.profile-color-modes-illu-purple{-webkit-animation-delay:0.6s;animation-delay:0.6s;-webkit-animation-duration:0.1s;animation-duration:0.1s}.profile-color-modes-illu-blue{-webkit-animation-delay:0.7s;animation-delay:0.7s;-webkit-animation-duration:0.1s;animation-duration:0.1s}.profile-color-modes-illu-green{-webkit-animation-delay:0.8s;animation-delay:0.8s;-webkit-animation-duration:0.2s;animation-duration:0.2s;-webkit-animation-timing-function:cubic-bezier(0.47, 2.92, 0.84, -1.5);animation-timing-function:cubic-bezier(0.47, 2.92, 0.84, -1.5)}.profile-color-modes-illu-frame:first-child{-webkit-animation-delay:1.8s;animation-delay:1.8s}.profile-color-modes-illu-frame:nth-child(2){-webkit-animation-delay:1.8s, 2.58s;animation-delay:1.8s, 2.58s}.profile-color-modes-illu-frame:nth-child(3){-webkit-animation-delay:2.58s, 2.66s;animation-delay:2.58s, 2.66s}.profile-color-modes-illu-frame:nth-child(4){-webkit-animation-delay:2.66s, 2.78s;animation-delay:2.66s, 2.78s}.profile-color-modes-illu-frame:nth-child(5){-webkit-animation-delay:2.78s, 2.84s;animation-delay:2.78s, 2.84s}.profile-color-modes-illu-frame:nth-child(6){-webkit-animation-delay:2.84s, 3.44s;animation-delay:2.84s, 3.44s}.profile-color-modes-illu-frame:nth-child(7){-webkit-animation-delay:3.44s, 3.56s;animation-delay:3.44s, 3.56s}.profile-color-modes-illu-frame:nth-child(8){-webkit-animation-delay:3.56s;animation-delay:3.56s}.profile-color-modes-illu-frame:nth-child(9),.profile-color-modes-illu-frame:nth-child(10){-webkit-animation:none;animation:none}@-webkit-keyframes box_shadow{0%{box-shadow:0 0 0 0 #f56c6c}}@keyframes box_shadow{0%{box-shadow:0 0 0 0 #f56c6c}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:30px 0}}@keyframes progress{0%{background-position:0 0}100%{background-position:30px 0}}@-webkit-keyframes list_thumbnail_loading{0%{-webkit-transform:scale(0.85);transform:scale(0.85)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes list_thumbnail_loading{0%{-webkit-transform:scale(0.85);transform:scale(0.85)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes list_title_loading{0%{width:80%}100%{width:95%}}@keyframes list_title_loading{0%{width:80%}100%{width:95%}}@-webkit-keyframes list_abstract_loading{0%{width:60%}100%{width:80%}}@keyframes list_abstract_loading{0%{width:60%}100%{width:80%}}@-webkit-keyframes profile-color-modes-illu-anim{0%{stroke:#666}}@keyframes profile-color-modes-illu-anim{0%{stroke:#666}}@-webkit-keyframes profile-color-modes-illu-anim-frame-show{0%{opacity:0;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}to{opacity:1}}@keyframes profile-color-modes-illu-anim-frame-show{0%{opacity:0;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}to{opacity:1}}@-webkit-keyframes profile-color-modes-illu-anim-frame-hide{0%{opacity:1;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{opacity:0}}@keyframes profile-color-modes-illu-anim-frame-hide{0%{opacity:1;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{opacity:0}} +html{--theme: #409eff;--background: #fff;--main: #303133;--routine: #606266;--minor: #909399;--seat: #c0c4cc;--classA: #dcdfe6;--classB: #e4e7ed;--classC: #ebeef5;--classD: #f2f6fc;--radius-wrap: 8px;--radius-inner: 4px;--text-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);--box-shadow: 0px 0px 20px -5px rgba(158, 158, 158, 0.22)}html[data-night='night']{--background: #333;--theme: #54b5db;--main: #808080;--routine: #7b7b7b;--minor: #6d6d6d;--seat: #666;--classA: #444;--classB: #444;--classC: #444;--classD: #444;--text-shadow: none;--box-shadow: none}html[data-night='night'] body::before{background:#202122;z-index:-500}html[data-night='night'] .joe_header__above-logo img{display:none}html[data-night='night'] .joe_header__above-logo svg{display:block}.joe_dropdown{position:relative}.joe_dropdown__link{display:flex;align-items:center}.joe_dropdown__link-icon{transition:-webkit-transform 0.35s;transition:transform 0.35s;transition:transform 0.35s, -webkit-transform 0.35s}.joe_dropdown__menu{position:absolute;left:50%;visibility:hidden;z-index:999;border-top:3px solid var(--theme);-webkit-transform-origin:top;transform-origin:top;background:var(--background);box-shadow:0 0 10px rgba(0,0,0,0.15);border-radius:0 0 var(--radius-inner) var(--radius-inner);padding:10px 0;opacity:0;-webkit-transform:translateX(-50%) perspective(600px) rotateX(-45deg);transform:translateX(-50%) perspective(600px) rotateX(-45deg);transition:opacity 0.35s, visibility 0.35s, -webkit-transform 0.35s;transition:opacity 0.35s, visibility 0.35s, transform 0.35s;transition:opacity 0.35s, visibility 0.35s, transform 0.35s, -webkit-transform 0.35s}.joe_dropdown__menu::before{content:'';position:absolute;top:-10px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid var(--theme)}.joe_dropdown.active .joe_dropdown__link-icon{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}.joe_dropdown.active .joe_dropdown__menu{visibility:visible;opacity:1;-webkit-transform:translateX(-50%) perspective(600px) rotateX(0);transform:translateX(-50%) perspective(600px) rotateX(0)}.joe_header{position:-webkit-sticky;position:sticky;top:0;z-index:1000;background:var(--background);box-shadow:0 2px 10px 0 rgba(0,0,0,0.1)}.joe_header__above-logo{position:relative;display:flex;align-items:center;height:60px;padding-right:15px;margin-right:15px}.joe_header__above-logo img{max-width:150px;max-height:50px;-o-object-fit:cover;object-fit:cover}.joe_header__above-logo svg{display:none}.joe_header__above-logo::after{content:'';position:absolute;top:50%;right:0;width:1px;height:20px;background:var(--classC);-webkit-transform:translateY(-50%);transform:translateY(-50%)}.joe_header__above-nav{display:flex;align-items:center}.joe_header__above-nav .item{position:relative;height:60px;line-height:60px;font-size:15px;padding:0 8px;margin-right:15px;transition:color 0.35s;white-space:nowrap;color:var(--main)}.joe_header__above-nav .item:last-child{margin-right:0}.joe_header__above-nav .item::after{content:'';position:absolute;bottom:0;left:0;right:0;height:3px;transition:opacity 0.5s, -webkit-transform 0.5s;transition:opacity 0.5s, transform 0.5s;transition:opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;border-radius:6px 6px 0 0;opacity:0;-webkit-transform:scaleX(0.25);transform:scaleX(0.25);background:var(--theme)}.joe_header__above-nav .item.active,.joe_header__above-nav .item:hover{color:var(--theme)}.joe_header__above-nav .item.active::after,.joe_header__above-nav .item:hover::after{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}.joe_header__above-nav .joe_dropdown__link a{height:60px;line-height:60px;font-size:15px;padding-left:8px;padding-right:3px;transition:color 0.35s;white-space:nowrap;color:var(--main)}.joe_header__above-nav .joe_dropdown__menu{width:110px;text-align:center}.joe_header__above-nav .joe_dropdown__menu a{display:block;line-height:34px;height:34px;transition:color 0.35s, background 0.35s;color:var(--minor);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 15px}.joe_header__above-nav .joe_dropdown__menu a:hover,.joe_header__above-nav .joe_dropdown__menu a.active{color:var(--theme);background:var(--classD)}.joe_header__above-search{position:relative;margin-left:auto;display:flex;align-items:center}.joe_header__above-search .input{background:var(--classC);width:170px;height:34px;border:1px solid transparent;padding:0 18px;color:var(--routine);transition:background 0.35s, border-color 0.35s, padding-right 0.35s;border-radius:17px 0 0 17px}.joe_header__above-search .input:focus{background:var(--background);border-color:var(--theme);padding-right:28px}.joe_header__above-search .input:focus ~ .icon{-webkit-transform:translate3d(0, -50%, 0) rotateY(180deg);transform:translate3d(0, -50%, 0) rotateY(180deg)}.joe_header__above-search .submit{position:relative;z-index:1;height:34px;border:none;background:var(--theme);color:#fff;border-radius:0 17px 17px 0;padding:0 10px}.joe_header__above-search .icon{position:absolute;top:50%;left:142px;width:28px;height:38px;background:url(https://cdn.jsdelivr.net/gh/HaoOuBa/Joe@master/assets/img/search.png);background-size:100% 100%;transition:-webkit-transform 0.35s;transition:transform 0.35s;transition:transform 0.35s, -webkit-transform 0.35s;-webkit-transform:translate3d(100%, -50%, 0) rotateY(180deg);transform:translate3d(100%, -50%, 0) rotateY(180deg)}.joe_header__above-search .result{position:absolute;z-index:2;top:60px;left:0;right:0;background:var(--background);box-shadow:0 0 10px rgba(0,0,0,0.15);border-radius:var(--radius-inner);visibility:hidden;opacity:0;transition:visibility 0.35s, opacity 0.35s, -webkit-transform 0.35s;transition:visibility 0.35s, opacity 0.35s, transform 0.35s;transition:visibility 0.35s, opacity 0.35s, transform 0.35s, -webkit-transform 0.35s;-webkit-transform:translate3d(0, 15px, 0);transform:translate3d(0, 15px, 0)}.joe_header__above-search .result.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);opacity:1;visibility:visible}.joe_header__above-search .result .item{height:40px;line-height:40px;border-bottom:1px solid var(--classD);display:flex;align-items:center;overflow:hidden;padding:0 8px;transition:background 0.35s}.joe_header__above-search .result .item:last-child{border-bottom:none}.joe_header__above-search .result .item:nth-child(1) .sort{background:#fe2d46}.joe_header__above-search .result .item:nth-child(2) .sort{background:#f60}.joe_header__above-search .result .item:nth-child(3) .sort{background:#faa90e}.joe_header__above-search .result .item:hover{background:var(--classD)}.joe_header__above-search .result .item .sort{color:#fff;background:#7f7f8c;width:18px;height:18px;line-height:18px;border-radius:50%;text-align:center;margin-right:8px;font-weight:500}.joe_header__above-search .result .item .text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--routine);font-size:12px}.joe_header__above-search .result .item .views{color:var(--seat);font-size:12px;margin-left:3px}.joe_header__below{position:relative;border-top:1px solid var(--classC);height:45px}.joe_header__below-class{display:flex}.joe_header__below-class .item{margin-right:15px;color:var(--minor);height:45px;line-height:45px;transition:color 0.35s;white-space:nowrap}.joe_header__below-class .item:hover,.joe_header__below-class .item.active{color:var(--theme)}.joe_header__below-class .joe_dropdown{margin-right:15px}.joe_header__below-class .joe_dropdown__link .item{margin-right:3px}.joe_header__below-class .joe_dropdown__menu{width:110px;text-align:center}.joe_header__below-class .joe_dropdown__menu a{display:block;height:34px;line-height:34px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--minor);transition:color 0.35s, background 0.35s}.joe_header__below-class .joe_dropdown__menu a:hover,.joe_header__below-class .joe_dropdown__menu a.active{color:var(--theme);background:var(--classD)}.joe_header__below-progress{position:absolute;z-index:1;left:0;bottom:-3px;height:3px;border-radius:1.5px;background:linear-gradient(to right, #4cd964, #5ac8fa, #007aff);transition:width 0.35s}.joe_aside{padding:15px 0;margin-left:15px}.joe_aside__item{position:relative;width:250px;margin-bottom:15px;border-radius:var(--radius-wrap);box-shadow:var(--box-shadow);overflow:hidden}.joe_aside__item:last-child{position:-webkit-sticky;position:sticky;margin-bottom:0}.joe_aside__item-title{display:flex;align-items:center;border-bottom:1px solid var(--classC);font-size:16px;font-weight:500;height:45px;line-height:45px;padding:0 15px;color:var(--main)}.joe_aside__item-title .icon{width:18px;height:18px;margin-right:8px;fill:var(--main)}.joe_aside__item-title .line{width:10px;height:1px;background:#54b5db;margin-left:12px}.joe_aside__item-contain{position:relative;padding:15px}.joe_aside__item.author{background:var(--background);padding:45px 15px 15px}.joe_aside__item.author::before{content:'';position:absolute;top:90px;left:0;width:100%;height:30px;z-index:2;background:linear-gradient(to bottom, rgba(255,255,255,0), var(--background))}.joe_aside__item.author::after{display:none;content:'';position:absolute;top:0;left:0;width:100%;height:273px;background:url("https://cdn.jsdelivr.net/gh/HaoOuBa/Joe@master/assets/img/snow.gif") no-repeat;background-size:cover;z-index:3;pointer-events:none}.joe_aside__item.author:hover::after{display:block}.joe_aside__item.author .image{position:absolute;top:0;left:0;width:100%;height:120px;-o-object-fit:cover;object-fit:cover;z-index:1}.joe_aside__item.author .user{position:relative;z-index:4;display:flex;flex-direction:column;align-items:center;padding-bottom:15px}.joe_aside__item.author .user .avatar{width:75px;height:75px;border-radius:50%;overflow:hidden;margin-bottom:10px;-o-object-fit:cover;object-fit:cover;transition:-webkit-transform 0.75s;transition:transform 0.75s;transition:transform 0.75s, -webkit-transform 0.75s;background:var(--background);padding:5px}.joe_aside__item.author .user .avatar:hover{-webkit-transform:rotate(360deg);transform:rotate(360deg)}.joe_aside__item.author .user .link{color:var(--theme);margin-bottom:10px;font-size:16px;font-weight:500}.joe_aside__item.author .user .link:hover{text-decoration:underline}.joe_aside__item.author .user .motto{color:var(--main);text-align:center}.joe_aside__item.author .count{width:100%;padding-bottom:15px;display:flex;align-items:center;border-bottom:1px solid var(--classC)}.joe_aside__item.author .count .item{min-width:0;flex:1;display:flex;flex-direction:column;align-items:center;color:var(--routine);font-size:12px}.joe_aside__item.author .count .item:first-child{border-right:1px solid var(--classC)}.joe_aside__item.author .count .item .num{max-width:70px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;font-size:22px;color:var(--main);margin-bottom:3px;text-shadow:var(--text_shadow)}.joe_aside__item.author .list{padding-top:15px}.joe_aside__item.author .list .item{display:flex;align-items:center;justify-content:space-between;line-height:30px}.joe_aside__item.author .list .item .link{position:relative;color:var(--routine);max-width:85%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.joe_aside__item.author .list .item .link::after{content:'';position:absolute;bottom:0;left:0;width:0;height:1px;background:var(--theme);transition:all 0.35s}.joe_aside__item.author .list .item .link:hover{color:var(--theme)}.joe_aside__item.author .list .item .link:hover::after{width:100%}.joe_aside__item.author .list .item .icon{fill:var(--routine)}.joe_aside__item.timelife{background:var(--background)}.joe_aside__item.timelife .item{margin-bottom:15px}.joe_aside__item.timelife .item:last-child{margin-bottom:0}.joe_aside__item.timelife .item .title{font-size:12px;color:var(--minor);margin-bottom:5px;display:flex;align-items:center}.joe_aside__item.timelife .item .title .text{color:var(--theme);font-weight:500;font-size:14px;margin:0 5px}.joe_aside__item.timelife .item .progress{display:flex;align-items:center}.joe_aside__item.timelife .item .progress-bar{height:10px;border-radius:5px;overflow:hidden;background:var(--classC);width:0;min-width:0;flex:1;margin-right:5px}.joe_aside__item.timelife .item .progress-bar-inner{width:0;height:100%;border-radius:5px;transition:width 0.35s;-webkit-animation:progress 750ms linear infinite;animation:progress 750ms linear infinite}.joe_aside__item.timelife .item .progress-bar-inner-0{background:#bde6ff;background-image:linear-gradient(135deg, #50bfff 25%, transparent 25%, transparent 50%, #50bfff 50%, #50bfff 75%, transparent 75%, transparent 100%);background-size:30px 30px}.joe_aside__item.timelife .item .progress-bar-inner-1{background:#ffd980;background-image:linear-gradient(135deg, #f7ba2a 25%, transparent 25%, transparent 50%, #f7ba2a 50%, #f7ba2a 75%, transparent 75%, transparent 100%);background-size:30px 30px}.joe_aside__item.timelife .item .progress-bar-inner-2{background:#ffa9a9;background-image:linear-gradient(135deg, #ff4949 25%, transparent 25%, transparent 50%, #ff4949 50%, #ff4949 75%, transparent 75%, transparent 100%);background-size:30px 30px}.joe_aside__item.timelife .item .progress-bar-inner-3{background:#67c23a;background-image:linear-gradient(135deg, #4f9e28 25%, transparent 25%, transparent 50%, #4f9e28 50%, #4f9e28 75%, transparent 75%, transparent 100%);background-size:30px 30px}.joe_aside__item.timelife .item .progress-percentage{color:var(--minor)}.joe_aside__item.weather{background:var(--background)}.joe_aside__item.weather .joe_aside__item-contain{min-height:300px}.joe_aside__item.hot{background:var(--background)}.joe_aside__item.hot .empty{text-align:center;color:var(--routine)}.joe_aside__item.hot .item{margin-bottom:15px}.joe_aside__item.hot .item:last-child{margin-bottom:0}.joe_aside__item.hot .item:nth-child(1) .link .sort{background:#ff183e}.joe_aside__item.hot .item:nth-child(2) .link .sort{background:#ff5c38}.joe_aside__item.hot .item:nth-child(3) .link .sort{background:#ffb821}.joe_aside__item.hot .item .link{position:relative;display:block;border-radius:var(--radius-inner);overflow:hidden}.joe_aside__item.hot .item .link:hover .image{-webkit-transform:scale(1.2);transform:scale(1.2)}.joe_aside__item.hot .item .link .sort{position:absolute;top:5px;right:-20px;background:#7f7f8c;color:#fff;width:65px;text-align:center;font-size:12px;-webkit-transform:rotate(45deg);transform:rotate(45deg);font-weight:500;z-index:1;font-style:normal}.joe_aside__item.hot .item .link .image{width:100%;height:130px;-o-object-fit:cover;object-fit:cover;transition:-webkit-transform 0.35s;transition:transform 0.35s;transition:transform 0.35s, -webkit-transform 0.35s}.joe_aside__item.hot .item .link .describe{position:absolute;z-index:1;left:0;right:0;bottom:0;padding:10px;background:linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.75));font-size:12px;color:var(--seat)}.joe_aside__item.hot .item .link .describe h6{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff;line-height:24px;font-size:14px}.joe_aside__item.ranking{background:var(--background)}.joe_aside__item.ranking .item{display:flex;align-items:center;line-height:32px;overflow:hidden}.joe_aside__item.ranking .item:nth-child(1) .sort{color:#fe2d46}.joe_aside__item.ranking .item:nth-child(2) .sort{color:#f60}.joe_aside__item.ranking .item:nth-child(3) .sort{color:#faa90e}.joe_aside__item.ranking .item .sort{color:var(--minor);font-weight:700;font-size:18px;width:18px;min-width:18px;max-width:18px}.joe_aside__item.ranking .item .link{position:relative;color:var(--routine);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.joe_aside__item.ranking .item .link::after{position:absolute;content:'';bottom:0;left:0;width:0;height:1px;background:var(--theme);transition:width 0.5s}.joe_aside__item.ranking .item .link:hover{color:var(--theme)}.joe_aside__item.ranking .item .link:hover::after{width:100%}.joe_aside__item.ranking .error{text-align:center;color:var(--routine)}.joe_aside__item.newreply{background:var(--background)}.joe_aside__item.newreply .empty{text-align:center;color:var(--routine)}.joe_aside__item.newreply .item{margin-bottom:15px;border-bottom:1px dashed var(--classC);padding-bottom:15px}.joe_aside__item.newreply .item:last-child{margin-bottom:0;border-bottom-color:transparent;padding-bottom:0}.joe_aside__item.newreply .item .user{display:flex;margin-bottom:12px}.joe_aside__item.newreply .item .user .avatar{width:40px;height:40px;min-width:40px;min-height:40px;margin-right:12px;border-radius:50%;border:1px solid var(--classA);padding:3px}.joe_aside__item.newreply .item .user .info{display:flex;flex-direction:column;justify-content:space-between}.joe_aside__item.newreply .item .user .info .author{color:var(--main);font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.joe_aside__item.newreply .item .user .info .date{font-size:12px;color:var(--minor)}.joe_aside__item.newreply .item .reply{position:relative;background:var(--classD);border-radius:6px;padding:5px 10px}.joe_aside__item.newreply .item .reply::before{content:'';width:0;height:0;border-bottom:6px solid var(--classD);border-left:6px solid transparent;border-right:6px solid transparent;position:absolute;left:15px;bottom:100%}.joe_aside__item.newreply .item .reply .link{display:-webkit-box;-webkit-line-clamp:2;/*! autoprefixer: off */-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;color:var(--minor);font-size:13px;font-weight:500;line-height:24px;transition:all 0.35s}.joe_aside__item.newreply .item .reply .link:hover{color:var(--theme)}.joe_aside__item.newreply .item .reply .link .owo_image{height:18px;vertical-align:-5px}.joe_list__item{display:flex;position:relative;width:100%;padding:15px 0;border-bottom:1px solid var(--classC)}.joe_list__item:last-child{border-bottom:none}.joe_list__item:hover .line{-webkit-transform:scaleY(1);transform:scaleY(1)}.joe_list__item:hover .thumbnail time{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.joe_list__item .line{position:absolute;z-index:1;top:15px;left:-15px;width:4px;height:25px;border-radius:2px;background:var(--theme);-webkit-transform:scaleY(0);transform:scaleY(0);transition:-webkit-transform 0.35s;transition:transform 0.35s;transition:transform 0.35s, -webkit-transform 0.35s}.joe_list__item .thumbnail{position:relative;width:210px;height:140px;min-width:210px;min-height:140px;margin-right:15px;overflow:hidden}.joe_list__item .thumbnail img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:var(--radius-inner);transition:opacity 0.35s}.joe_list__item .thumbnail img:hover{opacity:0.85}.joe_list__item .thumbnail time{position:absolute;z-index:1;top:5px;right:5px;background:var(--theme);height:20px;line-height:20px;padding:0 8px;color:#fff;font-size:12px;border-radius:10px;transition:-webkit-transform 0.35s;transition:transform 0.35s;transition:transform 0.35s, -webkit-transform 0.35s;-webkit-transform:translate3d(120%, 0, 0);transform:translate3d(120%, 0, 0)}.joe_list__item .thumbnail svg{position:absolute;z-index:1;top:5px;left:5px;width:20px;height:20px;fill:#fff}.joe_list__item .information{display:flex;flex-direction:column;flex:1;min-width:0}.joe_list__item .information .title{display:flex;align-items:center;margin-bottom:10px}.joe_list__item .information .title .badge{height:20px;line-height:20px;background-image:-webkit-linear-gradient(0deg, #3ca5f6 0%, #a86af9 100%);color:#fff;font-size:12px;margin-right:5px;border-radius:2px;padding:0 8px;white-space:nowrap}.joe_list__item .information .title h6{color:var(--main);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:18px;line-height:24px;transition:color 0.35s}.joe_list__item .information .title h6:hover{color:var(--theme)}.joe_list__item .information .abstract{display:-webkit-box;-webkit-line-clamp:2;/*! autoprefixer: off */-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;color:var(--minor);transition:opacity 0.35s;word-break:break-all;line-height:24px}.joe_list__item .information .abstract:hover{opacity:0.8}.joe_list__item .information .meta{display:flex;align-items:center;margin-top:auto;color:var(--minor);font-size:13px}.joe_list__item .information .meta .items{display:flex;align-items:center}.joe_list__item .information .meta .items li::after{content:'/';color:#e1e1e1;padding:0 5px}.joe_list__item .information .meta .items li:last-child::after{display:none}.joe_list__item .information .meta .last{margin-left:auto;display:flex;align-items:center}.joe_list__item .information .meta .last .icon{margin-right:3px}.joe_list__item .information .meta .last .link{color:var(--minor)}.joe_list__item .information .meta .last .link:hover{color:var(--theme)}.joe_list__loading .item{display:flex;position:relative;width:100%;padding:15px 0;border-bottom:1px solid var(--classC)}.joe_list__loading .item:last-child{border-bottom:none}.joe_list__loading .item .thumbnail{position:relative;width:210px;height:140px;min-width:210px;min-height:140px;margin-right:15px;background:var(--classD);-webkit-animation:list_thumbnail_loading 0.5s infinite alternate;animation:list_thumbnail_loading 0.5s infinite alternate;border-radius:var(--radius-inner)}.joe_list__loading .item .information{flex:1;min-width:0}.joe_list__loading .item .information .title{height:24px;border-radius:var(--radius-inner);background:var(--classD);-webkit-animation:list_title_loading 0.75s infinite alternate;animation:list_title_loading 0.75s infinite alternate;margin-bottom:15px}.joe_list__loading .item .information .abstract p{height:18px;border-radius:var(--radius-inner);background:var(--classD);margin-bottom:5px;-webkit-animation:list_abstract_loading 0.8s infinite alternate;animation:list_abstract_loading 0.8s infinite alternate}.joe_load{margin:15px auto 0;width:120px;height:32px;line-height:32px;text-align:center;border-radius:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--background);color:var(--routine);transition:-webkit-transform 0.25s;transition:transform 0.25s;transition:transform 0.25s, -webkit-transform 0.25s;box-shadow:var(--box-shadow)}.joe_load:active{-webkit-transform:scale(0.75);transform:scale(0.75)}.joe_detail{background:var(--background);border-radius:var(--radius-wrap);padding:15px;box-shadow:var(--box-shadow);margin-bottom:15px}.joe_detail__category{display:flex;align-items:center;margin-bottom:15px}.joe_detail__category .item{color:#fff;font-size:12px;padding:3px 8px;margin-right:5px;border-radius:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px;transition:opacity 0.35s, -webkit-transform 0.35s;transition:transform 0.35s, opacity 0.35s;transition:transform 0.35s, opacity 0.35s, -webkit-transform 0.35s}.joe_detail__category .item:hover{opacity:0.85;-webkit-transform:translate3d(0, -3px, 0);transform:translate3d(0, -3px, 0)}.joe_detail__category .item:last-child{margin-right:0}.joe_detail__category .item-0{background:#0396ff}.joe_detail__category .item-1{background:#ea5455}.joe_detail__category .item-2{background:#7367f0}.joe_detail__category .item-3{background:#28c76f}.joe_detail__category .item-4{background:#9f44d3}.joe_detail__category .edit{color:var(--minor);margin-left:auto}.joe_detail__category .edit:hover{color:var(--theme)}.joe_detail__title{font-size:24px;color:var(--main);text-shadow:var(--text-shadow);text-align:center;margin-bottom:15px;word-break:break-all}.joe_detail__count{position:relative;display:flex;align-items:center;justify-content:space-between;padding-bottom:15px;border-bottom:1px solid var(--classC)}.joe_detail__count::after{content:'';position:absolute;bottom:-1.5px;left:0;width:80px;height:3px;border-radius:1.5px;background:var(--theme)}.joe_detail__count-information{display:flex;align-items:center}.joe_detail__count-information .avatar{width:35px;height:35px;border-radius:50%;margin-right:10px;border:1px solid var(--classA);padding:3px}.joe_detail__count-information .meta{display:flex;flex-direction:column;height:35px;justify-content:space-between;font-size:12px}.joe_detail__count-information .meta .author .link{font-weight:500;color:var(--theme)}.joe_detail__count-information .meta .author .link:hover{text-decoration:underline}.joe_detail__count-information .meta .item{display:flex;align-items:center;color:var(--minor);line-height:16px}.joe_detail__count-information .meta .item .line{color:var(--seat);margin:0 7px;vertical-align:middle}.joe_detail__count-created{font-size:32px;line-height:42px;color:var(--routine);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-shadow:var(--text-shadow);font-family:consolas}.joe_detail__article{padding-top:15px;font-size:15px}.joe_detail__article h1,.joe_detail__article h2,.joe_detail__article h3,.joe_detail__article h4,.joe_detail__article h5,.joe_detail__article h6{color:var(--main);font-size:18px;line-height:24px;margin-bottom:15px;position:relative}.joe_detail__article h1{padding:0 15px 0 20px}.joe_detail__article h1::before{content:'#';color:var(--theme);font-weight:700;position:absolute;top:0;left:0;line-height:24px}.joe_detail__article h2{padding:0 15px}.joe_detail__article h2::before{content:'';position:absolute;top:10%;bottom:10%;left:0;width:4px;border-radius:2px;background:var(--theme)}.joe_detail__article h3{padding:0 15px}.joe_detail__article h3::before{content:'';position:absolute;top:8.5px;left:0;height:7px;width:7px;border-radius:50%;background:var(--theme)}.joe_detail__article h4::before{content:'「';color:var(--theme);font-weight:600;margin-right:5px}.joe_detail__article h4::after{content:'」';color:var(--theme);font-weight:600;margin-left:5px}.joe_detail__article h5{padding:0 15px 0 28px}.joe_detail__article h5::before{content:'';position:absolute;top:2px;left:0;width:20px;height:20px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAC8klEQVRYR+3WP2gTURwH8O/vKnVRRHKXP52cBO3g4p/BqYNIhy4muajUQRBFKjQV1En6ZxJBcmlRCoJDRe3FDiJVwamLS3FwqbgIgss1l2ZQF5XeT3I1Z3NJ7u5dLlAwN9699/t97vfe7/EIO/yhHe5DD9jpCv3fFVTu856+Xzi62Y/35hj9CFPNrlUwWeRJAJfBGADwBcBNI0/PRZFdAdo4xlQLjCqKjBzogat7hZCRAgPghJGBgbFnxglAOvS7b/fLb+q+qnv5BHBCyEBAWTdnANy2IxOtWSC1qsY+1jOFwAVG+gIVvXyHQbcaKuZCxmf5iMQogXFQtEsBeO5JT6BcMu+Bcb1lUhcyqfExACUAB6JEtgUqi+U5JrrmmcyFHCjwSYtQO+tSUSFbAmXdnAdwJVASdyWLPAS2kbFA8xsHNS13EzCmlx8R6KJQcBcypfFpho3cKxRna3ADsgEo6+ZjAKMhgjZ1d2KWR2gTSyD0h4jnIB2gXDIXwciFCPZvSnMl0wwshYrJGDImaMUGKovlLBPVOrDjh8APzFx8zDkjNa7FzYoGZsKT9XEarQOHmei1aJA246cqOWW6/i2l8VMGzoWIPW/k6eq2Ja6UwCz8pw2JGZ8sS8pUz8fWau/jGp+SgLchcGBgZD1Py41NUuoI+ZloV8ZU93+ogZKzfBiWfXAPCgMJU8Y42avQdMzI4ZBfmSizocqrUeJaAmsvBZGGBCtTziXeRY1rCxRAViEhXckqK93AeQJ9kYTvlmVlqmcTdhNEtefc+9X3utVmuX+CkK6oyqtu4nwrWP8bF5IZdGYjJ79wDuMCz4D+XmhFWnZbt7ab5ltBB6mbkyAaBPFCJassuwMmNb4L4EZgXwBc4AoGTZrUeA6A9x1yK6tzzvnFDlxBv0D176kCP2TCpbbjBXCRV9DZk0VeAONCE1IQ1zWg3dlF1sFQHWQIXFeBNrLAw5BwHBZWjQl6E3SbbB8X+R4Mg/Ca0wN2WtFeBTut4B84mFI4VpekyAAAAABJRU5ErkJggg==");background-size:100% 100%}.joe_detail__article h6{padding:0 15px 0 28px}.joe_detail__article h6::before{content:'';position:absolute;top:2px;left:0;width:20px;height:20px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAEI0lEQVRYR+3Xb2wTZRwH8G/vL22RPy5GW8fK6rJpGeFFY9RO3TRRE1HfmEAammEyjZmOSEg1RrPZaTD6xjhU/Ndlf0CZgwmD+qcgZBRIETeqY0Vcnc7pGonhRY2l3m2t5upqjq693l2vcy+8N81zz/NcPvf75fd7rjos8ku3yH34HyjK0PqlDLPzD56vMNL0VHxmpgXAoUIZXKgI3sMSpK+cNTAbylaj/9IkprnLM3+mkg8XQi4EsJ4lSL+ZNbAfVd+JG/XLcSERg3M8IAtZauBtDEkeNdN6fX9NfRqXueQiSwm00wQRMDMGw94snBJkqYBrSYIIXs/ojftqGq6IXHZRFIpkKYC2JSw9SJE663W0nthlqcMawwrJYpVCag1M48pNy1YNvLWRffGNIYSCv6Cnog7rjCtVIbUEXoG7qeqaNMj51F58dWoKPZY62JeWyUJG+ctcIplcIizWCpgTl9EIyODJn9BtceDWq/6B57tO/H4R688fFaZ7AWzWAiiJEyMDx39Ed6UDdyy7Ni/w1ekxbP95VJi/F8CRYoGycGLksaEJdFU6cPdy0zxkR/RbtE6FhPvHATQUm2JFODHSfyyCLmsd7lth/hf53q/jcE8OC+NTAG7PTKiNoCqcGPnpF+PotDrwwNXl+OC3H9A8cVqYPgPgFnFo1QCLwomRg4cvoPMGBzZHTgq3zwKwZ+ddKVATXAZhf+gdnPvuojAUqmJdrspRAtQU93pXEM+8clgwhQHU5itruUBNcTt6TsP9sl8weQC0S/VFOUBNcW/2folt2z+XhZPTZh6kSKJ79aqVRuFszRxfUm8sNbdz9xlsfekz2bhCQBvDMMM8z+ubN92Mjrb71brS+97dM4wtnk8U4SSBBEGErVarzeVywePxoHVLA1pb6lUh3+8bwZMv+BTjpIAVACa9Xq+uqakJ7e3tqpGd/WfR3Jr+81awIJS0mY0A+sLhMGw2W3qfGmTXvhAef/6gapxUBDuqqqoejUQiBvFbKUH2DHyNx54bLAqXF0jT9HBjY6Pd6/XOi7oc5K7936Dp2QNF4/IBrTqdLuLxeIi2tracRSGF/PDgKB55er8muHzATQB2m81m+P1+1NbmPoVyIfsOnUOj+2PNcPmAO1iWbeE4TmexWODz+WQhayrL4No2oCkuJ5Bl2VGO49ZmcisXObdeVSuRaq7ZZ3G10KBTqRQl3pQPGY1GEQgE4HQ6heVDAO5S1cklNmUDXQRB9KZSqXkfESaTCW63G7FYDKFQKDEyMoJoNKqfe/bbAJ7QGpcrxa8xDLOV5/k0kGXZv2ZnZ5FMJtNjmqYvURR1IpFInAcwAeD7ud/pUuDmAY1G41g8Hl9DkmScoqggx3FHAIyJMMlSQfI9V5zKagDC93dsoRFKimQx2dIWOV/U/yn6bx0WyDj8vgLOAAAAAElFTkSuQmCC");background-size:100% 100%}.joe_detail__article hr{border:none;height:1px;background-color:var(--classB);margin-bottom:15px}.joe_detail__article p{color:var(--routine);line-height:26px;white-space:pre-wrap;word-spacing:5px;letter-spacing:1px;word-break:break-all;margin-bottom:15px}.joe_detail__article blockquote{color:var(--routine);line-height:26px;white-space:pre-wrap;word-spacing:5px;letter-spacing:1px;word-break:break-all;margin-bottom:15px;background:#ecf8ff;border-left:5px solid #50bfff;padding:10px 15px;border-radius:0 var(--radius-inner) var(--radius-inner) 0;font-size:14px}.joe_detail__article blockquote p{margin:0}.joe_detail__article a{display:inline-block;line-height:26px;color:var(--theme);position:relative}.joe_detail__article a:hover::after{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}.joe_detail__article a::after{content:'';position:absolute;width:100%;height:1px;bottom:-1px;left:0;background:var(--theme);-webkit-transform:scaleX(0.25);transform:scaleX(0.25);opacity:0;transition:opacity 0.35s, -webkit-transform 0.35s;transition:transform 0.35s, opacity 0.35s;transition:transform 0.35s, opacity 0.35s, -webkit-transform 0.35s}.joe_detail__article code{display:inline-block;min-height:26px;line-height:26px;border-radius:var(--radius-inner);font-size:12px;background:#fdf6ec;padding:0 8px;color:#e6a23c}.joe_detail__article pre code{display:unset;vertical-align:unset;min-height:unset;line-height:unset;border-radius:unset;font-size:unset;background:unset;padding:unset;color:unset}.joe_detail__article pre[class*='language-']{position:relative;padding:15px;padding-top:35px;margin:0 0 15px;border-radius:var(--radius-inner)}.joe_detail__article pre[class*='language-']::after{content:'';position:absolute;top:0;left:0;width:100%;height:30px;background:#2d2d2d}.joe_detail__article pre[class*='language-']::before{content:'';position:absolute;top:9px;left:15px;width:12px;height:12px;border-radius:50%;background:#fc625d;box-shadow:20px 0 #fdbc40, 40px 0 #35cd4b;z-index:1}.joe_detail__article img{display:block;max-width:100%;border-radius:var(--radius-inner);transition:box-shadow 0.35s, -webkit-transform 0.35s;transition:transform 0.35s, box-shadow 0.35s;transition:transform 0.35s, box-shadow 0.35s, -webkit-transform 0.35s;cursor:zoom-in;margin:0 auto}.joe_detail__article img:hover{-webkit-transform:translateY(-5px);transform:translateY(-5px);box-shadow:0 34px 20px -24px rgba(136,161,206,0.3)}.joe_detail__article ol,.joe_detail__article ul{color:var(--routine);margin-bottom:15px;padding:0 30px}.joe_detail__article ol li,.joe_detail__article ul li{line-height:26px}.joe_detail__article ol li{list-style:decimal}.joe_detail__article ul li{list-style:disc}.joe_detail__article ul li::marker{color:var(--routine)}.joe_detail__article table{width:100%;max-width:100%;table-layout:fixed;color:var(--minor);margin-bottom:15px;font-size:13px;border-top:1px solid var(--classC);border-left:1px solid var(--classC)}.joe_detail__article table td,.joe_detail__article table th{padding:8px;border-bottom:1px solid var(--classC);border-right:1px solid var(--classC)}.joe_detail__article table thead th{font-weight:500;background:var(--classC)}.joe_detail__article table tbody tr{transition:background 0.35s}.joe_detail__article table tbody tr:hover{background:var(--classD)}.joe_detail__article span.block{display:block}.joe_detail__article-hide{background:repeating-linear-gradient(145deg, var(--classD), var(--classD) 15px, var(--background) 0, var(--background) 25px);padding:15px 0;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal}.joe_detail__article-hide i{position:relative;font-style:normal;cursor:pointer;color:var(--theme)}.joe_detail__article-hide i::after{content:'';position:absolute;bottom:-2px;left:0;right:0;width:100%;height:1px;background:var(--theme);-webkit-transform:scaleX(0.25);transform:scaleX(0.25);opacity:0;transition:opacity 0.35s, -webkit-transform 0.35s;transition:transform 0.35s, opacity 0.35s;transition:transform 0.35s, opacity 0.35s, -webkit-transform 0.35s}.joe_detail__article-hide i:hover::after{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}.joe_detail__article-protected{display:flex;justify-content:center;background:repeating-linear-gradient(145deg, var(--classB), var(--classB) 15px, var(--background) 0, var(--background) 30px);padding:20px 0;margin-bottom:15px}.joe_detail__article-protected .contain{position:relative;box-shadow:var(--box-shadow)}.joe_detail__article-protected .contain .icon{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:15px}.joe_detail__article-protected .contain .password{width:300px;height:44px;border:none;border-radius:var(--radius-inner);color:var(--routine);padding-left:50px;background:var(--background)}.joe_detail__article-protected .contain .submit{position:absolute;top:0;right:0;height:44px;line-height:44px;width:44px;transition:opacity 0.35s;cursor:pointer;text-align:center;font-size:13px;color:var(--main)}.joe_detail__agree{display:flex;align-items:center;justify-content:center;margin-bottom:15px}.joe_detail__agree .agree{text-align:center;font-size:12px;color:var(--minor);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.joe_detail__agree .agree .icon{position:relative;display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:#f56c6c;cursor:pointer;margin-bottom:8px}.joe_detail__agree .agree .icon.active{-webkit-animation:box_shadow 1s;animation:box_shadow 1s;box-shadow:0 0 0 20px rgba(255,255,255,0)}.joe_detail__agree .agree .icon svg{position:absolute;width:28px;height:28px;-webkit-transform:scale(0);transform:scale(0);opacity:0;transition:opacity 0.85s, -webkit-transform 0.85s;transition:transform 0.85s, opacity 0.85s;transition:transform 0.85s, opacity 0.85s, -webkit-transform 0.85s}.joe_detail__agree .agree .icon svg.active{-webkit-transform:scale(1);transform:scale(1);opacity:1}.joe_detail__copyright{padding-top:15px;border-top:1px solid var(--classC)}.joe_detail__copyright .content{background:var(--classD);padding:15px;border-radius:var(--radius-inner)}.joe_detail__copyright .content .item{display:flex;align-items:center;color:var(--minor);white-space:nowrap;margin-bottom:10px}.joe_detail__copyright .content .item:last-child{margin-bottom:0}.joe_detail__copyright .content .item .icon{width:20px;height:20px;min-width:20px;min-height:20px;margin-right:5px}.joe_detail__copyright .content .item .link{color:var(--minor)}.joe_detail__copyright .content .item .link:hover{color:var(--theme)}.joe_detail__copyright .content .item .text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.joe_detail__friends{display:flex;flex-wrap:wrap;margin:0 -7.5px;margin-bottom:15px}.joe_detail__friends-item{width:25%;padding:7.5px}.joe_detail__friends-item .contain{display:block;border-radius:var(--radius-inner);overflow:hidden;padding:15px;color:#fff;word-break:break-all;transition:box-shadow 0.35s, -webkit-transform 0.35s;transition:transform 0.35s, box-shadow 0.35s;transition:transform 0.35s, box-shadow 0.35s, -webkit-transform 0.35s}.joe_detail__friends-item .contain:hover{-webkit-transform:translateY(-5px) scale(1.025);transform:translateY(-5px) scale(1.025);box-shadow:0 34px 20px -24px rgba(136,161,206,0.3)}.joe_detail__friends-item .contain .title{position:relative}.joe_detail__friends-item .contain .title::after{content:'';position:absolute;bottom:-5px;left:0;width:100%;height:1px;background:#fff}.joe_detail__friends-item .contain .content{display:flex;justify-content:space-between;align-items:center;margin-top:15px}.joe_detail__friends-item .contain .content .desc{margin-right:10px}.joe_detail__friends-item .contain .content .avatar{width:40px;height:40px;min-width:40px;min-height:40px;border-radius:50%;-o-object-fit:cover;object-fit:cover}.joe_footer{border-top:1px solid var(--classB);color:var(--minor)}.joe_footer .joe_container{display:flex;align-items:center;justify-content:space-between;min-height:65px}.joe_footer .joe_container a{color:var(--minor);transition:all 0.35s}.joe_footer .joe_container a:hover{color:var(--theme)}.joe_pagination{display:flex;align-items:center;justify-content:flex-end;padding-top:15px}.joe_pagination li{margin-left:5px}.joe_pagination li.active a{background:var(--theme);color:#fff;font-weight:500}.joe_pagination li a{display:flex;align-items:center;height:32px;color:var(--main);padding:0 15px;background:var(--background);border-radius:2px;transition:background 0.35s, color 0.35s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.joe_pagination li a:hover{background:var(--theme);color:#fff}.joe_pagination li a:hover .icon{fill:#fff}.joe_pagination li a .icon{width:12px;height:12px;fill:var(--routine);transition:fill 0.35s}.joe_pagination li a .icon-next{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.joe_action{position:fixed;bottom:90px;right:30px;z-index:333}.joe_action_item{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--background);border-radius:50%;cursor:pointer;margin-top:15px;box-shadow:0 0 10px rgba(0,0,0,0.1),0 5px 20px rgba(0,0,0,0.2)}.joe_action_item svg{position:absolute;width:25px;height:25px;fill:var(--theme)}.joe_action_item.scroll{visibility:hidden;-webkit-transform:scale(0);transform:scale(0);transition:visibility 0.35s, -webkit-transform 0.35s;transition:visibility 0.35s, transform 0.35s;transition:visibility 0.35s, transform 0.35s, -webkit-transform 0.35s}.joe_action_item.scroll.active{visibility:visible;-webkit-transform:scale(1);transform:scale(1)}.joe_action_item.mode svg{-webkit-transform:scale(0);transform:scale(0);opacity:0;transition:opacity 0.85s, -webkit-transform 0.85s;transition:transform 0.85s, opacity 0.85s;transition:transform 0.85s, opacity 0.85s, -webkit-transform 0.85s}.joe_action_item.mode svg.active{-webkit-transform:scale(1);transform:scale(1);opacity:1}.joe_comment{background:var(--background);border-radius:var(--radius-wrap);box-shadow:var(--box-shadow);padding:15px}.joe_comment__title{font-weight:500;text-align:center;font-size:24px;color:var(--main);text-shadow:var(--text-shadow);border-bottom:1px solid var(--classC);margin-bottom:15px;padding-bottom:15px}.joe_comment__close{display:flex;align-items:center;justify-content:center;color:var(--routine)}.joe_comment__close-icon{fill:var(--routine);margin-right:5px}.joe_comment__respond-type{display:flex;align-items:center;justify-content:flex-end}.joe_comment__respond-type .item{background:var(--classD);padding:0 15px;height:32px;color:var(--main);border:none;transition:color 0.35s, background 0.35s}.joe_comment__respond-type .item:first-child{border-top-left-radius:var(--radius-inner)}.joe_comment__respond-type .item:last-child{border-top-right-radius:var(--radius-inner)}.joe_comment__respond-type .item.active{color:#fff;background:var(--theme)}.joe_comment__respond-form{border-radius:6px 0 6px 6px;background:var(--classD)}.joe_comment__respond-form .head{display:flex;align-items:center;border-bottom:1px solid var(--classA)}.joe_comment__respond-form .head .list{flex:1}.joe_comment__respond-form .head .list input{width:100%;border:none;background:transparent;padding:0 15px;height:40px;color:var(--routine);font-size:14px}.joe_comment__respond-form .head .list:nth-child(2){position:relative}.joe_comment__respond-form .head .list:nth-child(2)::after,.joe_comment__respond-form .head .list:nth-child(2)::before{content:'';position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:1px;height:15px;background:var(--classA)}.joe_comment__respond-form .head .list:nth-child(2)::before{left:0}.joe_comment__respond-form .head .list:nth-child(2)::after{right:0}.joe_comment__respond-form .body{padding:15px}.joe_comment__respond-form .body .text{width:100%;height:200px;border:none;resize:none;vertical-align:middle;color:var(--routine);background:transparent;font-size:14px}.joe_comment__respond-form .body .draw{position:relative;width:100%}.joe_comment__respond-form .body .draw .line{display:flex;align-items:center;position:absolute;top:10px;left:10px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.joe_comment__respond-form .body .draw .line li{cursor:pointer;margin-right:10px;color:var(--main);transition:color 0.35s}.joe_comment__respond-form .body .draw .line li.active{color:var(--theme)}.joe_comment__respond-form .body .draw .color{display:flex;align-items:center;position:absolute;top:10px;left:50%;-webkit-transform:translate(-50%);transform:translate(-50%)}.joe_comment__respond-form .body .draw .color li{width:20px;height:20px;border-radius:50%;margin:0 5px;cursor:pointer;transition:box-shadow 0.35s}.joe_comment__respond-form .body .draw .color li.active{box-shadow:0 4px 10px rgba(0,0,0,0.35)}.joe_comment__respond-form .body .draw .color li:nth-child(1){background:#303133}.joe_comment__respond-form .body .draw .color li:nth-child(2){background:#67c23a}.joe_comment__respond-form .body .draw .color li:nth-child(3){background:#e6a23c}.joe_comment__respond-form .body .draw .color li:nth-child(4){background:#f56c6c}.joe_comment__respond-form .body .draw .icon{position:absolute;right:10px;cursor:pointer;fill:var(--minor);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.joe_comment__respond-form .body .draw .icon-undo{top:10px}.joe_comment__respond-form .body .draw .icon-animate{bottom:10px}.joe_comment__respond-form .body .draw canvas{background:var(--background);border-radius:var(--radius-inner)}.joe_comment__respond-form .foot{position:relative;display:flex;justify-content:flex-end;padding:0 15px 15px}.joe_comment__respond-form .foot .submit button{border-radius:3px;height:32px;padding:0 15px;border:none;background:var(--theme);color:#fff;font-size:14px}.joe_comment__list{padding-top:15px}.joe_comment__list .comment-list__item .contain{display:flex;margin-bottom:15px}.joe_comment__list .comment-list__item .contain .avatar{width:48px;height:48px;border-radius:50%;margin-right:15px;padding:3px;border:1px solid var(--classD)}.joe_comment__list .comment-list__item .contain .content{min-width:0;flex:1;border-bottom:1px solid var(--classC);padding-bottom:15px}.joe_comment__list .comment-list__item .contain .content .user{display:flex;align-items:center;margin-bottom:8px;line-height:20px;color:var(--main)}.joe_comment__list .comment-list__item .contain .content .user .author{margin-right:10px}.joe_comment__list .comment-list__item .contain .content .user .owner{background:var(--theme);color:#fff;padding:0 5px;border-radius:2px;font-style:normal}.joe_comment__list .comment-list__item .contain .content .user .agent{margin-left:auto;font-size:12px;color:var(--minor)}.joe_comment__list .comment-list__item .contain .content .user .waiting{color:#e6a23c;font-style:normal}.joe_comment__list .comment-list__item .contain .content .substance{width:100%;background:var(--classD);padding:12px 15px;border-radius:0 var(--radius-inner) var(--radius-inner) 10px;color:var(--main);margin-bottom:8px;word-break:break-all;line-height:24px}.joe_comment__list .comment-list__item .contain .content .substance .parent{color:#388bff;margin-bottom:5px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-weight:500}.joe_comment__list .comment-list__item .contain .content .substance .owo_image{height:22px}.joe_comment__list .comment-list__item .contain .content .substance .draw_image{max-width:100%}.joe_comment__list .comment-list__item .contain .content .handle{display:flex;align-items:center;color:var(--minor)}.joe_comment__list .comment-list__item .contain .content .handle .date{margin-right:10px}.joe_comment__list .comment-list__item .children{padding-left:63px}.joe_comment__list .comment-list__item .children .children{padding-left:0}.joe_comment .joe_pagination{padding-top:0}.profile-color-modes-illu-frame{opacity:0}.profile-color-modes-illu-red{stroke:#da3633}.profile-color-modes-illu-orange{stroke:#f0883e}.profile-color-modes-illu-purple{stroke:#8957e5}.profile-color-modes-illu-green{stroke:#3fb950}.profile-color-modes-illu-blue{stroke:#388bfd}.profile-color-modes-illu-group{-webkit-animation:profile-color-modes-illu-anim 0.2s cubic-bezier(0.72, 0.08, 1, 0.68) backwards;animation:profile-color-modes-illu-anim 0.2s cubic-bezier(0.72, 0.08, 1, 0.68) backwards}.profile-color-modes-illu-frame{-webkit-animation:profile-color-modes-illu-anim-frame-show 0s forwards, profile-color-modes-illu-anim-frame-hide 0s forwards;animation:profile-color-modes-illu-anim-frame-show 0s forwards, profile-color-modes-illu-anim-frame-hide 0s forwards}.profile-color-modes-illu-frame:first-child{opacity:1;-webkit-animation:profile-color-modes-illu-anim-frame-hide 0s forwards;animation:profile-color-modes-illu-anim-frame-hide 0s forwards}.profile-color-modes-illu-frame:nth-child(8){-webkit-animation:profile-color-modes-illu-anim-frame-show 0s forwards;animation:profile-color-modes-illu-anim-frame-show 0s forwards}.profile-color-modes-illu-red{-webkit-animation-delay:0.4s;animation-delay:0.4s;-webkit-animation-duration:0.1s;animation-duration:0.1s}.profile-color-modes-illu-orange{-webkit-animation-delay:0.5s;animation-delay:0.5s;-webkit-animation-duration:0.1s;animation-duration:0.1s}.profile-color-modes-illu-purple{-webkit-animation-delay:0.6s;animation-delay:0.6s;-webkit-animation-duration:0.1s;animation-duration:0.1s}.profile-color-modes-illu-blue{-webkit-animation-delay:0.7s;animation-delay:0.7s;-webkit-animation-duration:0.1s;animation-duration:0.1s}.profile-color-modes-illu-green{-webkit-animation-delay:0.8s;animation-delay:0.8s;-webkit-animation-duration:0.2s;animation-duration:0.2s;-webkit-animation-timing-function:cubic-bezier(0.47, 2.92, 0.84, -1.5);animation-timing-function:cubic-bezier(0.47, 2.92, 0.84, -1.5)}.profile-color-modes-illu-frame:first-child{-webkit-animation-delay:1.8s;animation-delay:1.8s}.profile-color-modes-illu-frame:nth-child(2){-webkit-animation-delay:1.8s, 2.58s;animation-delay:1.8s, 2.58s}.profile-color-modes-illu-frame:nth-child(3){-webkit-animation-delay:2.58s, 2.66s;animation-delay:2.58s, 2.66s}.profile-color-modes-illu-frame:nth-child(4){-webkit-animation-delay:2.66s, 2.78s;animation-delay:2.66s, 2.78s}.profile-color-modes-illu-frame:nth-child(5){-webkit-animation-delay:2.78s, 2.84s;animation-delay:2.78s, 2.84s}.profile-color-modes-illu-frame:nth-child(6){-webkit-animation-delay:2.84s, 3.44s;animation-delay:2.84s, 3.44s}.profile-color-modes-illu-frame:nth-child(7){-webkit-animation-delay:3.44s, 3.56s;animation-delay:3.44s, 3.56s}.profile-color-modes-illu-frame:nth-child(8){-webkit-animation-delay:3.56s;animation-delay:3.56s}.profile-color-modes-illu-frame:nth-child(9),.profile-color-modes-illu-frame:nth-child(10){-webkit-animation:none;animation:none}@-webkit-keyframes box_shadow{0%{box-shadow:0 0 0 0 #f56c6c}}@keyframes box_shadow{0%{box-shadow:0 0 0 0 #f56c6c}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:30px 0}}@keyframes progress{0%{background-position:0 0}100%{background-position:30px 0}}@-webkit-keyframes list_thumbnail_loading{0%{-webkit-transform:scale(0.85);transform:scale(0.85)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes list_thumbnail_loading{0%{-webkit-transform:scale(0.85);transform:scale(0.85)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes list_title_loading{0%{width:80%}100%{width:95%}}@keyframes list_title_loading{0%{width:80%}100%{width:95%}}@-webkit-keyframes list_abstract_loading{0%{width:60%}100%{width:80%}}@keyframes list_abstract_loading{0%{width:60%}100%{width:80%}}@-webkit-keyframes profile-color-modes-illu-anim{0%{stroke:#666}}@keyframes profile-color-modes-illu-anim{0%{stroke:#666}}@-webkit-keyframes profile-color-modes-illu-anim-frame-show{0%{opacity:0;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}to{opacity:1}}@keyframes profile-color-modes-illu-anim-frame-show{0%{opacity:0;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}to{opacity:1}}@-webkit-keyframes profile-color-modes-illu-anim-frame-hide{0%{opacity:1;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{opacity:0}}@keyframes profile-color-modes-illu-anim-frame-hide{0%{opacity:1;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{opacity:0}} diff --git a/assets/css/joe.global.scss b/assets/css/joe.global.scss index 0612914..8dc054b 100644 --- a/assets/css/joe.global.scss +++ b/assets/css/joe.global.scss @@ -1108,6 +1108,13 @@ html[data-night='night'] { background: #9f44d3; } } + .edit { + color: var(--minor); + margin-left: auto; + &:hover { + color: var(--theme); + } + } } &__title { font-size: 24px; @@ -1123,7 +1130,7 @@ html[data-night='night'] { align-items: center; justify-content: space-between; padding-bottom: 15px; - border-bottom: 1px solid var(--classB); + border-bottom: 1px solid var(--classC); &::after { content: ''; position: absolute; @@ -1472,6 +1479,45 @@ html[data-night='night'] { } } } + &-protected { + display: flex; + justify-content: center; + background: repeating-linear-gradient(145deg, var(--classB), var(--classB) 15px, var(--background) 0, var(--background) 30px); + padding: 20px 0; + margin-bottom: 15px; + .contain { + position: relative; + box-shadow: var(--box-shadow); + .icon { + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 15px; + } + .password { + width: 300px; + height: 44px; + border: none; + border-radius: var(--radius-inner); + color: var(--routine); + padding-left: 50px; + background: var(--background); + } + .submit { + position: absolute; + top: 0; + right: 0; + height: 44px; + line-height: 44px; + width: 44px; + transition: opacity 0.35s; + cursor: pointer; + text-align: center; + font-size: 13px; + color: var(--main); + } + } + } } &__agree { display: flex; @@ -1515,7 +1561,7 @@ html[data-night='night'] { } &__copyright { padding-top: 15px; - border-top: 1px solid var(--classB); + border-top: 1px solid var(--classC); .content { background: var(--classD); padding: 15px; @@ -1721,20 +1767,10 @@ html[data-night='night'] { font-size: 24px; color: var(--main); text-shadow: var(--text-shadow); - border-bottom: 1px solid var(--classB); + border-bottom: 1px solid var(--classC); margin-bottom: 15px; padding-bottom: 15px; } - &__empty { - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - color: var(--routine); - &-icon { - fill: var(--routine); - } - } &__close { display: flex; align-items: center; @@ -1756,6 +1792,7 @@ html[data-night='night'] { height: 32px; color: var(--main); border: none; + transition: color 0.35s, background 0.35s; &:first-child { border-top-left-radius: var(--radius-inner); } @@ -1811,7 +1848,7 @@ html[data-night='night'] { padding: 15px; .text { width: 100%; - height: 180px; + height: 200px; border: none; resize: none; vertical-align: middle; @@ -1833,6 +1870,7 @@ html[data-night='night'] { cursor: pointer; margin-right: 10px; color: var(--main); + transition: color 0.35s; &.active { color: var(--theme); } @@ -1851,6 +1889,7 @@ html[data-night='night'] { border-radius: 50%; margin: 0 5px; cursor: pointer; + transition: box-shadow 0.35s; &.active { box-shadow: 0 4px 10px rgba(0, 0, 0, 0.35); } @@ -1887,6 +1926,23 @@ html[data-night='night'] { } } } + .foot { + position: relative; + display: flex; + justify-content: flex-end; + padding: 0 15px 15px; + .submit { + button { + border-radius: 3px; + height: 32px; + padding: 0 15px; + border: none; + background: var(--theme); + color: #fff; + font-size: 14px; + } + } + } } } &__list { diff --git a/assets/css/joe.index.css b/assets/css/joe.index.css index ba95253..36fe01a 100644 --- a/assets/css/joe.index.css +++ b/assets/css/joe.index.css @@ -1 +1 @@ -.joe_index{border-radius:8px;padding:0 15px;background:var(--background);box-shadow:var(--box-shadow)}.joe_index__banner{padding-top:15px;display:flex}.joe_index__banner-recommend{width:270px;margin-left:15px;display:flex;flex-direction:column}.joe_index__banner-recommend.noswiper{width:100%;flex-direction:row;margin-left:0}.joe_index__banner-recommend.noswiper .item:first-child{margin-bottom:0;margin-right:7.5px}.joe_index__banner-recommend.noswiper .item:last-child{margin-left:7.5px}.joe_index__banner-recommend .item{position:relative;width:100%;height:160px;margin-bottom:15px;border-radius:4px;overflow:hidden}.joe_index__banner-recommend .item:last-child{margin-bottom:0}.joe_index__banner-recommend .item .thumbnail{display:block;width:100%;height:100%;transition:opacity 0.35s}.joe_index__banner-recommend .item .thumbnail img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.joe_index__banner-recommend .item .thumbnail:hover{opacity:0.85}.joe_index__banner-recommend .item .information{display:flex;align-items:center;position:absolute;z-index:1;bottom:0;left:0;right:0;padding:8px;background:linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.5));color:#fff;line-height:20px}.joe_index__banner-recommend .item .information_type{background-image:linear-gradient(to right, #fc712a, #f84c39);background-color:#f84c39;padding:0 5px;height:20px;border-radius:2px;margin-right:5px;font-size:12px}.joe_index__banner-recommend .item .information_title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;font-size:14px}.joe_index__hot{padding-top:15px}.joe_index__hot-list{display:flex;margin:0 -5px}.joe_index__hot-list .item{width:25%;padding:0 5px}.joe_index__hot-list .item .link{display:block}.joe_index__hot-list .item .link .inner{position:relative}.joe_index__hot-list .item .link .inner:hover .image{opacity:0.85}.joe_index__hot-list .item .link .inner:hover .title{background:var(--classC)}.joe_index__hot-list .item .link .inner .image{width:100%;height:125px;-o-object-fit:cover;object-fit:cover;border-radius:4px 4px 0 0;transition:opacity 0.35s}.joe_index__hot-list .item .link .inner .title{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;padding:0 8px;line-height:32px;color:var(--minor);background:var(--classD);border-radius:0 0 5px 5px;transition:background 0.35s}.joe_index__hot-list .item .link .inner .views{display:flex;align-items:center;position:absolute;z-index:1;top:5px;right:5px;background-image:linear-gradient(270deg, #986fee, #8695e6, #68b7dd, #18d7d3);color:#fff;font-size:12px;height:18px;padding:0 8px;border-radius:2px;white-space:nowrap}.joe_index__ad{padding-top:15px}.joe_index__ad-link{display:block;position:relative}.joe_index__ad-link .image{width:100%;height:200px;-o-object-fit:cover;object-fit:cover;border-radius:4px;transition:opacity 0.35s}.joe_index__ad-link .image:hover{opacity:0.85}.joe_index__ad-link .icon{position:absolute;z-index:1;top:10px;right:10px;font-size:12px;background:rgba(0,0,0,0.25);padding:2px 5px;border-radius:2px;color:#ebebeb;pointer-events:none}.joe_index__title{display:flex;align-items:center;border-bottom:1px solid var(--classC)}.joe_index__title-title{position:relative;display:flex;align-items:center;color:var(--routine);font-weight:500;height:40px;line-height:40px}.joe_index__title-title .item{cursor:pointer;margin-right:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color 0.35s}.joe_index__title-title .item.active{color:var(--theme)}.joe_index__title-title .line{position:absolute;bottom:-1px;left:0;height:2px;border-radius:1px;background:var(--theme);transition:left 0.35s, width 0.35s}.joe_index__title-notice{display:flex;align-items:center;margin-left:auto;height:40px}.joe_index__title-notice svg{min-width:20px;min-height:20px;width:20px;height:20px;margin-right:5px}.joe_index__title-notice a{color:var(--minor);line-height:20px;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color 0.35s}.joe_index__title-notice a:hover{color:var(--theme)}.swiper-container{min-width:0;flex:1;height:335px;--swiper-theme-color: #fff;border-radius:4px}.swiper-container .item{display:block;height:335px;border-radius:4px}.swiper-container .item .thumbnail{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:opacity 0.35s}.swiper-container .item .thumbnail:hover{opacity:0.85}.swiper-container .item .title{position:absolute;z-index:1;left:0;right:0;bottom:0;text-align:center;background:linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.45));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff;font-size:15px;padding:10px;font-weight:normal}.swiper-container .item .icon{position:absolute;z-index:1;top:10px;left:10px;width:18px;height:18px;fill:#fff;opacity:0.5}.swiper-container.swiper-container-horizontal .swiper-pagination-bullets{bottom:unset;left:unset;width:auto;right:10px;top:10px} +.joe_index{border-radius:var(--radius-wrap);padding:0 15px;background:var(--background);box-shadow:var(--box-shadow)}.joe_index__banner{padding-top:15px;display:flex}.joe_index__banner-recommend{width:270px;margin-left:15px;display:flex;flex-direction:column}.joe_index__banner-recommend.noswiper{width:100%;flex-direction:row;margin-left:0}.joe_index__banner-recommend.noswiper .item:first-child{margin-bottom:0;margin-right:7.5px}.joe_index__banner-recommend.noswiper .item:last-child{margin-left:7.5px}.joe_index__banner-recommend .item{position:relative;width:100%;height:160px;margin-bottom:15px;border-radius:var(--radius-inner);overflow:hidden}.joe_index__banner-recommend .item:last-child{margin-bottom:0}.joe_index__banner-recommend .item .thumbnail{display:block;width:100%;height:100%;transition:opacity 0.35s}.joe_index__banner-recommend .item .thumbnail img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.joe_index__banner-recommend .item .thumbnail:hover{opacity:0.85}.joe_index__banner-recommend .item .information{display:flex;align-items:center;position:absolute;z-index:1;bottom:0;left:0;right:0;padding:8px;background:linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.5));color:#fff;line-height:20px}.joe_index__banner-recommend .item .information_type{background-image:linear-gradient(to right, #fc712a, #f84c39);background-color:#f84c39;padding:0 5px;height:20px;border-radius:2px;margin-right:5px;font-size:12px}.joe_index__banner-recommend .item .information_title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;font-size:14px}.joe_index__hot{padding-top:15px}.joe_index__hot-list{display:flex;margin:0 -5px}.joe_index__hot-list .item{width:25%;padding:0 5px}.joe_index__hot-list .item .link{display:block}.joe_index__hot-list .item .link .inner{position:relative}.joe_index__hot-list .item .link .inner:hover .image{opacity:0.85}.joe_index__hot-list .item .link .inner:hover .title{background:var(--classC)}.joe_index__hot-list .item .link .inner .image{width:100%;height:125px;-o-object-fit:cover;object-fit:cover;border-radius:var(--radius-inner) var(--radius-inner) 0 0;transition:opacity 0.35s}.joe_index__hot-list .item .link .inner .title{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;padding:0 8px;line-height:32px;color:var(--minor);background:var(--classD);border-radius:0 0 5px 5px;transition:background 0.35s}.joe_index__hot-list .item .link .inner .views{display:flex;align-items:center;position:absolute;z-index:1;top:5px;right:5px;background-image:linear-gradient(270deg, #986fee, #8695e6, #68b7dd, #18d7d3);color:#fff;font-size:12px;height:18px;padding:0 8px;border-radius:2px;white-space:nowrap}.joe_index__ad{padding-top:15px}.joe_index__ad-link{display:block;position:relative}.joe_index__ad-link .image{width:100%;height:200px;-o-object-fit:cover;object-fit:cover;border-radius:var(--radius-inner);transition:opacity 0.35s}.joe_index__ad-link .image:hover{opacity:0.85}.joe_index__ad-link .icon{position:absolute;z-index:1;top:10px;right:10px;font-size:12px;background:rgba(0,0,0,0.25);padding:2px 5px;border-radius:2px;color:#ebebeb;pointer-events:none}.joe_index__title{display:flex;align-items:center;border-bottom:1px solid var(--classC)}.joe_index__title-title{position:relative;display:flex;align-items:center;color:var(--routine);font-weight:500;height:40px;line-height:40px}.joe_index__title-title .item{cursor:pointer;margin-right:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color 0.35s}.joe_index__title-title .item.active{color:var(--theme)}.joe_index__title-title .line{position:absolute;bottom:-1px;left:0;height:2px;border-radius:1px;background:var(--theme);transition:left 0.35s, width 0.35s}.joe_index__title-notice{display:flex;align-items:center;margin-left:auto;height:40px}.joe_index__title-notice svg{min-width:20px;min-height:20px;width:20px;height:20px;margin-right:5px}.joe_index__title-notice a{color:var(--minor);line-height:20px;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color 0.35s}.joe_index__title-notice a:hover{color:var(--theme)}.swiper-container{min-width:0;flex:1;height:335px;--swiper-theme-color: #fff;border-radius:var(--radius-inner)}.swiper-container .item{display:block;height:335px;border-radius:var(--radius-inner)}.swiper-container .item .thumbnail{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:opacity 0.35s}.swiper-container .item .thumbnail:hover{opacity:0.85}.swiper-container .item .title{position:absolute;z-index:1;left:0;right:0;bottom:0;text-align:center;background:linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.45));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff;font-size:15px;padding:10px;font-weight:normal}.swiper-container .item .icon{position:absolute;z-index:1;top:10px;left:10px;width:18px;height:18px;fill:#fff;opacity:0.5}.swiper-container.swiper-container-horizontal .swiper-pagination-bullets{bottom:unset;left:unset;width:auto;right:10px;top:10px} diff --git a/assets/css/joe.index.scss b/assets/css/joe.index.scss index 0a02585..82d07ae 100644 --- a/assets/css/joe.index.scss +++ b/assets/css/joe.index.scss @@ -1,5 +1,6 @@ +/* 首页样式 */ .joe_index { - border-radius: 8px; + border-radius: var(--radius-wrap); padding: 0 15px; background: var(--background); box-shadow: var(--box-shadow); @@ -28,7 +29,7 @@ width: 100%; height: 160px; margin-bottom: 15px; - border-radius: 4px; + border-radius: var(--radius-inner); overflow: hidden; &:last-child { margin-bottom: 0; @@ -103,7 +104,7 @@ width: 100%; height: 125px; object-fit: cover; - border-radius: 4px 4px 0 0; + border-radius: var(--radius-inner) var(--radius-inner) 0 0; transition: opacity 0.35s; } .title { @@ -148,7 +149,7 @@ width: 100%; height: 200px; object-fit: cover; - border-radius: 4px; + border-radius: var(--radius-inner); transition: opacity 0.35s; &:hover { opacity: 0.85; @@ -232,11 +233,11 @@ flex: 1; height: 335px; --swiper-theme-color: #fff; - border-radius: 4px; + border-radius: var(--radius-inner); .item { display: block; height: 335px; - border-radius: 4px; + border-radius: var(--radius-inner); .thumbnail { width: 100%; height: 100%; diff --git a/assets/css/joe.owo.css b/assets/css/joe.owo.css new file mode 100644 index 0000000..b1c55cc --- /dev/null +++ b/assets/css/joe.owo.css @@ -0,0 +1 @@ +.OwO{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.OwO:hover .OwO-logo{color:#444}.OwO.OwO-open .OwO-logo{border-bottom:none;color:#444;margin-bottom:10px}.OwO.OwO-open .OwO-logo span{-webkit-animation:5s ease-in-out 0s infinite normal none running a;animation:5s ease-in-out 0s infinite normal none running a}.OwO.OwO-open .OwO-body{display:block}.OwO.OwO-up .OwO-body{top:inherit;bottom:21px;border-radius:4px 4px 4px 0px}.OwO.OwO-up .OwO-body .OwO-bar .OwO-packages li:nth-child(1){border-radius:0px}.OwO.OwO-up.OwO-open .OwO-logo{border-right:1px solid #ddd;border-bottom:1px solid #ddd;border-left:1px solid #ddd;-o-border-image:initial;border-image:initial;border-top:none}.OwO .OwO-logo{position:relative;display:inline-block;color:#888;cursor:pointer;z-index:2}.OwO .OwO-logo span{display:flex;align-items:center;height:32px;line-height:32px}.OwO .OwO-logo span svg{width:20px;height:20px;margin-right:5px}.OwO .OwO-body{display:none;background:#fff;z-index:1;border-radius:4px}.OwO .OwO-body .OwO-items{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:none;padding:10px;margin:0px;overflow-y:auto;font-size:0px;-ms-scroll-chaining:none;overscroll-behavior:none;-webkit-overflow-scrolling:touch}.OwO .OwO-body .OwO-items .OwO-item{width:calc(100% / 12);list-style-type:none;padding:5px 10px;border-radius:5px;display:inline-block;font-size:12px;line-height:14px;cursor:pointer;transition:all 0.3s ease 0s}.OwO .OwO-body .OwO-items .OwO-item:hover{background:#eee;box-shadow:rgba(0,0,0,0.14) 0px 2px 2px 0px,rgba(0,0,0,0.2) 0px 3px 1px -2px,rgba(0,0,0,0.12) 0px 1px 5px 0px;-webkit-animation:5s ease-in-out 0s infinite normal none running a;animation:5s ease-in-out 0s infinite normal none running a}.OwO .OwO-body .OwO-items-emoji .OwO-item{font-size:20px;line-height:19px}.OwO .OwO-body .OwO-items-image .OwO-item img{max-width:100%}.OwO .OwO-body .OwO-items-emoticon .OwO-item{width:25%;text-align:center}.OwO .OwO-body .OwO-items-show{display:block}.OwO .OwO-body .OwO-bar{width:100%;height:30px;border-top:1px solid #ddd;background:#fff;border-radius:0px 0px 4px 4px;color:#444}.OwO .OwO-body .OwO-bar .OwO-packages{margin:0px;padding:0px;font-size:0px}.OwO .OwO-body .OwO-bar .OwO-packages li{list-style-type:none;display:inline-block;line-height:29px;font-size:14px;padding:0px 10px;cursor:pointer}.OwO .OwO-body .OwO-bar .OwO-packages li:nth-child(1){border-radius:0px 0px 0px 3px}.OwO .OwO-body .OwO-bar .OwO-packages li:hover{background:#eee}.OwO .OwO-body .OwO-bar .OwO-packages .OwO-package-active{background:#eee;transition:all 0.3s ease 0s}@-webkit-keyframes a{2%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}4%{-webkit-transform:translateY(-1.5px) rotate(-0.5deg);transform:translateY(-1.5px) rotate(-0.5deg)}6%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}8%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}10%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}12%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}14%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}16%{-webkit-transform:translateY(-0.5px) rotate(-1.5deg);transform:translateY(-0.5px) rotate(-1.5deg)}18%{-webkit-transform:translateY(0.5px) rotate(-1.5deg);transform:translateY(0.5px) rotate(-1.5deg)}20%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}22%{-webkit-transform:translateY(0.5px) rotate(-1.5deg);transform:translateY(0.5px) rotate(-1.5deg)}24%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}26%{-webkit-transform:translateY(0.5px) rotate(0.5deg);transform:translateY(0.5px) rotate(0.5deg)}28%{-webkit-transform:translateY(0.5px) rotate(1.5deg);transform:translateY(0.5px) rotate(1.5deg)}30%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}32%,34%{-webkit-transform:translateY(1.5px) rotate(-0.5deg);transform:translateY(1.5px) rotate(-0.5deg)}36%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}38%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}40%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}42%{-webkit-transform:translateY(2.5px) rotate(-1.5deg);transform:translateY(2.5px) rotate(-1.5deg)}44%{-webkit-transform:translateY(1.5px) rotate(0.5deg);transform:translateY(1.5px) rotate(0.5deg)}46%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}48%{-webkit-transform:translateY(-0.5px) rotate(0.5deg);transform:translateY(-0.5px) rotate(0.5deg)}50%{-webkit-transform:translateY(0.5px) rotate(0.5deg);transform:translateY(0.5px) rotate(0.5deg)}52%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}54%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}56%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}58%{-webkit-transform:translateY(0.5px) rotate(2.5deg);transform:translateY(0.5px) rotate(2.5deg)}60%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}62%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}64%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}66%{-webkit-transform:translateY(1.5px) rotate(-0.5deg);transform:translateY(1.5px) rotate(-0.5deg)}68%{-webkit-transform:translateY(-1.5px) rotate(-0.5deg);transform:translateY(-1.5px) rotate(-0.5deg)}70%{-webkit-transform:translateY(1.5px) rotate(0.5deg);transform:translateY(1.5px) rotate(0.5deg)}72%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}74%{-webkit-transform:translateY(-0.5px) rotate(0.5deg);transform:translateY(-0.5px) rotate(0.5deg)}76%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}78%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}80%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}82%{-webkit-transform:translateY(-0.5px) rotate(0.5deg);transform:translateY(-0.5px) rotate(0.5deg)}84%{-webkit-transform:translateY(1.5px) rotate(2.5deg);transform:translateY(1.5px) rotate(2.5deg)}86%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}88%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}90%{-webkit-transform:translateY(2.5px) rotate(-0.5deg);transform:translateY(2.5px) rotate(-0.5deg)}92%{-webkit-transform:translateY(0.5px) rotate(-0.5deg);transform:translateY(0.5px) rotate(-0.5deg)}94%{-webkit-transform:translateY(2.5px) rotate(0.5deg);transform:translateY(2.5px) rotate(0.5deg)}96%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}98%{-webkit-transform:translateY(-1.5px) rotate(-0.5deg);transform:translateY(-1.5px) rotate(-0.5deg)}0%,100%{-webkit-transform:translate(0px) rotate(0deg);transform:translate(0px) rotate(0deg)}}@keyframes a{2%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}4%{-webkit-transform:translateY(-1.5px) rotate(-0.5deg);transform:translateY(-1.5px) rotate(-0.5deg)}6%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}8%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}10%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}12%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}14%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}16%{-webkit-transform:translateY(-0.5px) rotate(-1.5deg);transform:translateY(-0.5px) rotate(-1.5deg)}18%{-webkit-transform:translateY(0.5px) rotate(-1.5deg);transform:translateY(0.5px) rotate(-1.5deg)}20%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}22%{-webkit-transform:translateY(0.5px) rotate(-1.5deg);transform:translateY(0.5px) rotate(-1.5deg)}24%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}26%{-webkit-transform:translateY(0.5px) rotate(0.5deg);transform:translateY(0.5px) rotate(0.5deg)}28%{-webkit-transform:translateY(0.5px) rotate(1.5deg);transform:translateY(0.5px) rotate(1.5deg)}30%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}32%,34%{-webkit-transform:translateY(1.5px) rotate(-0.5deg);transform:translateY(1.5px) rotate(-0.5deg)}36%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}38%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}40%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}42%{-webkit-transform:translateY(2.5px) rotate(-1.5deg);transform:translateY(2.5px) rotate(-1.5deg)}44%{-webkit-transform:translateY(1.5px) rotate(0.5deg);transform:translateY(1.5px) rotate(0.5deg)}46%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}48%{-webkit-transform:translateY(-0.5px) rotate(0.5deg);transform:translateY(-0.5px) rotate(0.5deg)}50%{-webkit-transform:translateY(0.5px) rotate(0.5deg);transform:translateY(0.5px) rotate(0.5deg)}52%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}54%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}56%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}58%{-webkit-transform:translateY(0.5px) rotate(2.5deg);transform:translateY(0.5px) rotate(2.5deg)}60%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}62%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}64%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}66%{-webkit-transform:translateY(1.5px) rotate(-0.5deg);transform:translateY(1.5px) rotate(-0.5deg)}68%{-webkit-transform:translateY(-1.5px) rotate(-0.5deg);transform:translateY(-1.5px) rotate(-0.5deg)}70%{-webkit-transform:translateY(1.5px) rotate(0.5deg);transform:translateY(1.5px) rotate(0.5deg)}72%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}74%{-webkit-transform:translateY(-0.5px) rotate(0.5deg);transform:translateY(-0.5px) rotate(0.5deg)}76%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}78%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}80%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}82%{-webkit-transform:translateY(-0.5px) rotate(0.5deg);transform:translateY(-0.5px) rotate(0.5deg)}84%{-webkit-transform:translateY(1.5px) rotate(2.5deg);transform:translateY(1.5px) rotate(2.5deg)}86%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}88%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}90%{-webkit-transform:translateY(2.5px) rotate(-0.5deg);transform:translateY(2.5px) rotate(-0.5deg)}92%{-webkit-transform:translateY(0.5px) rotate(-0.5deg);transform:translateY(0.5px) rotate(-0.5deg)}94%{-webkit-transform:translateY(2.5px) rotate(0.5deg);transform:translateY(2.5px) rotate(0.5deg)}96%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}98%{-webkit-transform:translateY(-1.5px) rotate(-0.5deg);transform:translateY(-1.5px) rotate(-0.5deg)}0%,100%{-webkit-transform:translate(0px) rotate(0deg);transform:translate(0px) rotate(0deg)}} diff --git a/assets/css/joe.owo.scss b/assets/css/joe.owo.scss new file mode 100644 index 0000000..2879b11 --- /dev/null +++ b/assets/css/joe.owo.scss @@ -0,0 +1,430 @@ +.OwO { + position: relative; + user-select: none; +} +.OwO:hover .OwO-logo { + color: rgb(68, 68, 68); +} +.OwO.OwO-open .OwO-logo { + border-bottom: none; + color: rgb(68, 68, 68); + margin-bottom: 10px; + span { + animation: 5s ease-in-out 0s infinite normal none running a; + } +} +.OwO.OwO-open .OwO-body { + display: block; +} +.OwO.OwO-up .OwO-body { + top: inherit; + bottom: 21px; + border-radius: 4px 4px 4px 0px; +} +.OwO.OwO-up .OwO-body .OwO-bar .OwO-packages li:nth-child(1) { + border-radius: 0px; +} +.OwO.OwO-up.OwO-open .OwO-logo { + border-right: 1px solid rgb(221, 221, 221); + border-bottom: 1px solid rgb(221, 221, 221); + border-left: 1px solid rgb(221, 221, 221); + border-image: initial; + border-top: none; +} +.OwO .OwO-logo { + position: relative; + display: inline-block; + color: rgb(136, 136, 136); + cursor: pointer; + z-index: 2; + span { + display: flex; + align-items: center; + height: 32px; + line-height: 32px; + svg { + width: 20px; + height: 20px; + margin-right: 5px; + } + } +} +.OwO .OwO-body { + display: none; + background: #fff; + z-index: 1; + border-radius: 4px; +} +.OwO .OwO-body .OwO-items { + user-select: none; + display: none; + padding: 10px; + margin: 0px; + overflow-y: auto; + font-size: 0px; + overscroll-behavior: none; + -webkit-overflow-scrolling: touch; +} +.OwO .OwO-body .OwO-items .OwO-item { + width: calc(100% / 12); + list-style-type: none; + padding: 5px 10px; + border-radius: 5px; + display: inline-block; + font-size: 12px; + line-height: 14px; + cursor: pointer; + transition: all 0.3s ease 0s; +} +.OwO .OwO-body .OwO-items .OwO-item:hover { + background: rgb(238, 238, 238); + box-shadow: rgba(0, 0, 0, 0.14) 0px 2px 2px 0px, rgba(0, 0, 0, 0.2) 0px 3px 1px -2px, rgba(0, 0, 0, 0.12) 0px 1px 5px 0px; + animation: 5s ease-in-out 0s infinite normal none running a; +} +.OwO .OwO-body .OwO-items-emoji .OwO-item { + font-size: 20px; + line-height: 19px; +} +.OwO .OwO-body .OwO-items-image .OwO-item img { + max-width: 100%; +} +.OwO .OwO-body .OwO-items-emoticon .OwO-item { + width: 25%; + text-align: center; +} +.OwO .OwO-body .OwO-items-show { + display: block; +} +.OwO .OwO-body .OwO-bar { + width: 100%; + height: 30px; + border-top: 1px solid rgb(221, 221, 221); + background: rgb(255, 255, 255); + border-radius: 0px 0px 4px 4px; + color: rgb(68, 68, 68); +} +.OwO .OwO-body .OwO-bar .OwO-packages { + margin: 0px; + padding: 0px; + font-size: 0px; +} +.OwO .OwO-body .OwO-bar .OwO-packages li { + list-style-type: none; + display: inline-block; + line-height: 29px; + font-size: 14px; + padding: 0px 10px; + cursor: pointer; +} +.OwO .OwO-body .OwO-bar .OwO-packages li:nth-child(1) { + border-radius: 0px 0px 0px 3px; +} +.OwO .OwO-body .OwO-bar .OwO-packages li:hover { + background: rgb(238, 238, 238); +} +.OwO .OwO-body .OwO-bar .OwO-packages .OwO-package-active { + background: rgb(238, 238, 238); + transition: all 0.3s ease 0s; +} +@-webkit-keyframes a { + 2% { + transform: translateY(1.5px) rotate(1.5deg); + } + 4% { + transform: translateY(-1.5px) rotate(-0.5deg); + } + 6% { + transform: translateY(1.5px) rotate(-1.5deg); + } + 8% { + transform: translateY(-1.5px) rotate(-1.5deg); + } + 10% { + transform: translateY(2.5px) rotate(1.5deg); + } + 12% { + transform: translateY(-0.5px) rotate(1.5deg); + } + 14% { + transform: translateY(-1.5px) rotate(1.5deg); + } + 16% { + transform: translateY(-0.5px) rotate(-1.5deg); + } + 18% { + transform: translateY(0.5px) rotate(-1.5deg); + } + 20% { + transform: translateY(-1.5px) rotate(2.5deg); + } + 22% { + transform: translateY(0.5px) rotate(-1.5deg); + } + 24% { + transform: translateY(1.5px) rotate(1.5deg); + } + 26% { + transform: translateY(0.5px) rotate(0.5deg); + } + 28% { + transform: translateY(0.5px) rotate(1.5deg); + } + 30% { + transform: translateY(-0.5px) rotate(2.5deg); + } + 32%, + 34% { + transform: translateY(1.5px) rotate(-0.5deg); + } + 36% { + transform: translateY(-1.5px) rotate(2.5deg); + } + 38% { + transform: translateY(1.5px) rotate(-1.5deg); + } + 40% { + transform: translateY(-0.5px) rotate(2.5deg); + } + 42% { + transform: translateY(2.5px) rotate(-1.5deg); + } + 44% { + transform: translateY(1.5px) rotate(0.5deg); + } + 46% { + transform: translateY(-1.5px) rotate(2.5deg); + } + 48% { + transform: translateY(-0.5px) rotate(0.5deg); + } + 50% { + transform: translateY(0.5px) rotate(0.5deg); + } + 52% { + transform: translateY(2.5px) rotate(2.5deg); + } + 54% { + transform: translateY(-1.5px) rotate(1.5deg); + } + 56% { + transform: translateY(2.5px) rotate(2.5deg); + } + 58% { + transform: translateY(0.5px) rotate(2.5deg); + } + 60% { + transform: translateY(2.5px) rotate(2.5deg); + } + 62% { + transform: translateY(-0.5px) rotate(2.5deg); + } + 64% { + transform: translateY(-0.5px) rotate(1.5deg); + } + 66% { + transform: translateY(1.5px) rotate(-0.5deg); + } + 68% { + transform: translateY(-1.5px) rotate(-0.5deg); + } + 70% { + transform: translateY(1.5px) rotate(0.5deg); + } + 72% { + transform: translateY(2.5px) rotate(1.5deg); + } + 74% { + transform: translateY(-0.5px) rotate(0.5deg); + } + 76% { + transform: translateY(-0.5px) rotate(2.5deg); + } + 78% { + transform: translateY(-0.5px) rotate(1.5deg); + } + 80% { + transform: translateY(1.5px) rotate(1.5deg); + } + 82% { + transform: translateY(-0.5px) rotate(0.5deg); + } + 84% { + transform: translateY(1.5px) rotate(2.5deg); + } + 86% { + transform: translateY(-1.5px) rotate(-1.5deg); + } + 88% { + transform: translateY(-0.5px) rotate(2.5deg); + } + 90% { + transform: translateY(2.5px) rotate(-0.5deg); + } + 92% { + transform: translateY(0.5px) rotate(-0.5deg); + } + 94% { + transform: translateY(2.5px) rotate(0.5deg); + } + 96% { + transform: translateY(-0.5px) rotate(1.5deg); + } + 98% { + transform: translateY(-1.5px) rotate(-0.5deg); + } + 0%, + 100% { + transform: translate(0px) rotate(0deg); + } +} +@keyframes a { + 2% { + transform: translateY(1.5px) rotate(1.5deg); + } + 4% { + transform: translateY(-1.5px) rotate(-0.5deg); + } + 6% { + transform: translateY(1.5px) rotate(-1.5deg); + } + 8% { + transform: translateY(-1.5px) rotate(-1.5deg); + } + 10% { + transform: translateY(2.5px) rotate(1.5deg); + } + 12% { + transform: translateY(-0.5px) rotate(1.5deg); + } + 14% { + transform: translateY(-1.5px) rotate(1.5deg); + } + 16% { + transform: translateY(-0.5px) rotate(-1.5deg); + } + 18% { + transform: translateY(0.5px) rotate(-1.5deg); + } + 20% { + transform: translateY(-1.5px) rotate(2.5deg); + } + 22% { + transform: translateY(0.5px) rotate(-1.5deg); + } + 24% { + transform: translateY(1.5px) rotate(1.5deg); + } + 26% { + transform: translateY(0.5px) rotate(0.5deg); + } + 28% { + transform: translateY(0.5px) rotate(1.5deg); + } + 30% { + transform: translateY(-0.5px) rotate(2.5deg); + } + 32%, + 34% { + transform: translateY(1.5px) rotate(-0.5deg); + } + 36% { + transform: translateY(-1.5px) rotate(2.5deg); + } + 38% { + transform: translateY(1.5px) rotate(-1.5deg); + } + 40% { + transform: translateY(-0.5px) rotate(2.5deg); + } + 42% { + transform: translateY(2.5px) rotate(-1.5deg); + } + 44% { + transform: translateY(1.5px) rotate(0.5deg); + } + 46% { + transform: translateY(-1.5px) rotate(2.5deg); + } + 48% { + transform: translateY(-0.5px) rotate(0.5deg); + } + 50% { + transform: translateY(0.5px) rotate(0.5deg); + } + 52% { + transform: translateY(2.5px) rotate(2.5deg); + } + 54% { + transform: translateY(-1.5px) rotate(1.5deg); + } + 56% { + transform: translateY(2.5px) rotate(2.5deg); + } + 58% { + transform: translateY(0.5px) rotate(2.5deg); + } + 60% { + transform: translateY(2.5px) rotate(2.5deg); + } + 62% { + transform: translateY(-0.5px) rotate(2.5deg); + } + 64% { + transform: translateY(-0.5px) rotate(1.5deg); + } + 66% { + transform: translateY(1.5px) rotate(-0.5deg); + } + 68% { + transform: translateY(-1.5px) rotate(-0.5deg); + } + 70% { + transform: translateY(1.5px) rotate(0.5deg); + } + 72% { + transform: translateY(2.5px) rotate(1.5deg); + } + 74% { + transform: translateY(-0.5px) rotate(0.5deg); + } + 76% { + transform: translateY(-0.5px) rotate(2.5deg); + } + 78% { + transform: translateY(-0.5px) rotate(1.5deg); + } + 80% { + transform: translateY(1.5px) rotate(1.5deg); + } + 82% { + transform: translateY(-0.5px) rotate(0.5deg); + } + 84% { + transform: translateY(1.5px) rotate(2.5deg); + } + 86% { + transform: translateY(-1.5px) rotate(-1.5deg); + } + 88% { + transform: translateY(-0.5px) rotate(2.5deg); + } + 90% { + transform: translateY(2.5px) rotate(-0.5deg); + } + 92% { + transform: translateY(0.5px) rotate(-0.5deg); + } + 94% { + transform: translateY(2.5px) rotate(0.5deg); + } + 96% { + transform: translateY(-0.5px) rotate(1.5deg); + } + 98% { + transform: translateY(-1.5px) rotate(-0.5deg); + } + 0%, + 100% { + transform: translate(0px) rotate(0deg); + } +} diff --git a/assets/css/joe.post.scss b/assets/css/joe.post.scss index 494a16a..6a69274 100644 --- a/assets/css/joe.post.scss +++ b/assets/css/joe.post.scss @@ -1,34 +1,35 @@ +/* 文章页面的样式 */ .joe_bread { - padding-top: 15px; - &__bread { - display: flex; - align-items: center; - .line { - color: var(--seat); - padding: 0 8px; - } - .item { - color: var(--minor); - white-space: nowrap; - .link { - color: var(--routine); - transition: color 0.35s; - &:hover { - color: var(--theme); - } - } - .icon { - width: 15px; - height: 15px; - min-width: 15px; - min-height: 15px; - fill: var(--routine); - margin-right: 2px; - } - &:first-child { - display: flex; - align-items: center; - } - } - } + padding-top: 15px; + &__bread { + display: flex; + align-items: center; + .line { + color: var(--seat); + padding: 0 8px; + } + .item { + color: var(--minor); + white-space: nowrap; + .link { + color: var(--routine); + transition: color 0.35s; + &:hover { + color: var(--theme); + } + } + .icon { + width: 15px; + height: 15px; + min-width: 15px; + min-height: 15px; + fill: var(--routine); + margin-right: 2px; + } + &:first-child { + display: flex; + align-items: center; + } + } + } } diff --git a/assets/js/joe.global.js b/assets/js/joe.global.js index f9a7b4a..a6a01ea 100644 --- a/assets/js/joe.global.js +++ b/assets/js/joe.global.js @@ -1,10 +1,9 @@ console.time('Global.js执行时长'); document.addEventListener('DOMContentLoaded', () => { - /* 昼夜模式 */ + /* 初始化昼夜模式 */ { if (localStorage.getItem('data-night')) { - $('html').attr('data-night', 'night'); $('.joe_action_item.mode .icon-1').addClass('active'); $('.joe_action_item.mode .icon-2').removeClass('active'); } else { @@ -226,15 +225,33 @@ document.addEventListener('DOMContentLoaded', () => { /* 激活画图功能 */ { if ($('#joe_comment_draw').length !== 0) { - window.sketchpad = new Sketchpad({ - element: '#joe_comment_draw', - height: 300, - penSize: 5, - color: '303133' + /* 激活画板 */ + window.sketchpad = new Sketchpad({ element: '#joe_comment_draw', height: 300, penSize: 5, color: '303133' }); + /* 撤销上一步 */ + $('.joe_comment__respond-form .body .draw .icon-undo').on('click', () => window.sketchpad.undo()); + /* 动画预览 */ + $('.joe_comment__respond-form .body .draw .icon-animate').on('click', () => window.sketchpad.animate(10)); + /* 更改画板的线宽 */ + $('.joe_comment__respond-form .body .draw .line li').on('click', function () { + window.sketchpad.penSize = $(this).attr('data-line'); + $(this).addClass('active').siblings().removeClass('active'); + }); + /* 更改画板的颜色 */ + $('.joe_comment__respond-form .body .draw .color li').on('click', function () { + window.sketchpad.color = $(this).attr('data-color'); + $(this).addClass('active').siblings().removeClass('active'); }); } } + /* 激活点击回复可见的回复按钮,页面滚动到评论区 */ + { + $('.joe_detail__article-hide i').on('click', function () { + const top = $('.joe_comment').offset().top - $('.joe_header').height() - 15; + window.scrollTo({ top, behavior: 'smooth' }); + }); + } + /* 懒加载 */ new LazyLoad('.lazyload'); diff --git a/assets/js/joe.owo.js b/assets/js/joe.owo.js new file mode 100644 index 0000000..84cfbc8 --- /dev/null +++ b/assets/js/joe.owo.js @@ -0,0 +1,145 @@ +(() => { + class OwO { + constructor(option) { + const defaultOption = { + container: document.getElementsByClassName('OwO')[0], + target: document.getElementsByTagName('textarea')[0], + position: 'down', + width: '100%', + maxHeight: '250px', + api: 'https://api.anotherhome.net/OwO/OwO.json' + }; + for (let defaultKey in defaultOption) { + if (defaultOption.hasOwnProperty(defaultKey) && !option.hasOwnProperty(defaultKey)) { + option[defaultKey] = defaultOption[defaultKey]; + } + } + this.container = option.container; + this.target = option.target; + if (option.position === 'up') { + this.container.classList.add('OwO-up'); + } + const xhr = new XMLHttpRequest(); + xhr.onreadystatechange = () => { + if (xhr.readyState === 4) { + if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) { + this.odata = JSON.parse(xhr.responseText); + this.init(option); + } else { + console.log('OwO data request was unsuccessful: ' + xhr.status); + } + } + }; + xhr.open('get', option.api, true); + xhr.send(null); + } + + init(option) { + this.area = option.target; + this.packages = Object.keys(this.odata); + + // fill in HTML + let html = ` + +
`; + + for (let i = 0; i < this.packages.length; i++) { + html += ` + `; + } + + html += ` +
+ +
+
+ `; + this.container.innerHTML = html; + + // bind event + this.logo = document.getElementsByClassName('OwO-logo')[0]; + this.logo.addEventListener('click', e => { + e.stopPropagation(); + this.toggle(); + }); + + this.container.getElementsByClassName('OwO-body')[0].addEventListener('click', e => { + let target = null; + if (e.target.classList.contains('OwO-item')) { + target = e.target; + } else if (e.target.parentNode.classList.contains('OwO-item')) { + target = e.target.parentNode; + } + if (target) { + const cursorPos = this.area.selectionEnd; + let areaValue = this.area.value; + //this.area.value = areaValue.slice(0, cursorPos) + target.innerHTML + areaValue.slice(cursorPos); + if (target.dataset.id == 'not-given') { + this.area.value = areaValue.slice(0, cursorPos) + target.innerHTML + areaValue.slice(cursorPos); + } else { + this.area.value = areaValue.slice(0, cursorPos) + target.dataset.id + areaValue.slice(cursorPos); + } + this.area.focus(); + this.toggle(); + } + }); + this.packagesEle = this.container.getElementsByClassName('OwO-packages')[0]; + for (let i = 0; i < this.packagesEle.children.length; i++) { + (index => { + this.packagesEle.children[i].addEventListener('click', e => { + e.stopPropagation(); + this.tab(index); + }); + })(i); + } + this.tab(0); + } + toggle() { + if (this.container.classList.contains('OwO-open')) { + this.container.classList.remove('OwO-open'); + } else { + this.container.classList.add('OwO-open'); + } + } + tab(index) { + const itemsShow = this.container.getElementsByClassName('OwO-items-show')[0]; + if (itemsShow) { + itemsShow.classList.remove('OwO-items-show'); + } + this.container.getElementsByClassName('OwO-items')[index].classList.add('OwO-items-show'); + + const packageActive = this.container.getElementsByClassName('OwO-package-active')[0]; + if (packageActive) { + packageActive.classList.remove('OwO-package-active'); + } + this.packagesEle.getElementsByTagName('li')[index].classList.add('OwO-package-active'); + } + } + if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = OwO; + } else { + window.OwO = OwO; + } +})(); diff --git a/assets/js/joe.post&page.js b/assets/js/joe.post&page.js index 9448261..6d077bf 100644 --- a/assets/js/joe.post&page.js +++ b/assets/js/joe.post&page.js @@ -12,8 +12,32 @@ document.addEventListener('DOMContentLoaded', () => { $('#Joe_Baidu_Record').css('color', '#67C23A'); $('#Joe_Baidu_Record').html('已收录'); } else { - const url = `https://ziyuan.baidu.com/linksubmit/url?sitename=${encodeURI(window.location.href)}`; - $('#Joe_Baidu_Record').html(`未收录,提交收录`); + /* 如果填写了Token,则自动推送给百度 */ + if (Joe.BAIDU_PUSH) { + $('#Joe_Baidu_Record').html('未收录,推送中...'); + const _timer = setTimeout(function () { + $.ajax({ + url: Joe.BASE_API, + type: 'POST', + data: { + routeType: 'baidu_push', + domain: encodeURI(window.location.hostname), + url: encodeURI(window.location.href) + }, + success(res) { + if (res.error) { + $('#Joe_Baidu_Record').html('推送失败,请检查!'); + } else { + $('#Joe_Baidu_Record').html('推送成功!'); + } + } + }); + clearTimeout(_timer); + }, 1000); + } else { + const url = `https://ziyuan.baidu.com/linksubmit/url?sitename=${encodeURI(window.location.href)}`; + $('#Joe_Baidu_Record').html(`未收录,提交收录`); + } } } }); diff --git a/assets/json/owo.json b/assets/json/owo.json new file mode 100644 index 0000000..5669469 --- /dev/null +++ b/assets/json/owo.json @@ -0,0 +1,259 @@ +{ + "泡泡": { + "type": "image", + "container": [ + { "icon": "", "data": "::(呵呵)", "text": "呵呵" }, + { "icon": "", "data": "::(哈哈)", "text": "哈哈" }, + { "icon": "", "data": "::(吐舌)", "text": "吐舌" }, + { "icon": "", "data": "::(太开心)", "text": "太开心" }, + { "icon": "", "data": "::(笑眼)", "text": "笑眼" }, + { "icon": "", "data": "::(花心)", "text": "花心" }, + { "icon": "", "data": "::(小乖)", "text": "小乖" }, + { "icon": "", "data": "::(乖)", "text": "乖" }, + { "icon": "", "data": "::(捂嘴笑)", "text": "捂嘴笑" }, + { "icon": "", "data": "::(滑稽)", "text": "滑稽" }, + { "icon": "", "data": "::(你懂的)", "text": "你懂的" }, + { "icon": "", "data": "::(不高兴)", "text": "不高兴" }, + { "icon": "", "data": "::(怒)", "text": "怒" }, + { "icon": "", "data": "::(汗)", "text": "汗" }, + { "icon": "", "data": "::(黑线)", "text": "黑线" }, + { "icon": "", "data": "::(泪)", "text": "泪" }, + { "icon": "", "data": "::(真棒)", "text": "真棒" }, + { "icon": "", "data": "::(喷)", "text": "喷" }, + { "icon": "", "data": "::(惊哭)", "text": "惊哭" }, + { "icon": "", "data": "::(阴险)", "text": "阴险" }, + { "icon": "", "data": "::(鄙视)", "text": "鄙视" }, + { "icon": "", "data": "::(酷)", "text": "酷" }, + { "icon": "", "data": "::(啊)", "text": "啊" }, + { "icon": "", "data": "::(狂汗)", "text": "狂汗" }, + { "icon": "", "data": "::(what)", "text": "what" }, + { "icon": "", "data": "::(疑问)", "text": "疑问" }, + { "icon": "", "data": "::(酸爽)", "text": "酸爽" }, + { "icon": "", "data": "::(呀咩爹)", "text": "呀咩爹" }, + { "icon": "", "data": "::(委屈)", "text": "委屈" }, + { "icon": "", "data": "::(惊讶)", "text": "惊讶" }, + { "icon": "", "data": "::(睡觉)", "text": "睡觉" }, + { "icon": "", "data": "::(笑尿)", "text": "笑尿" }, + { "icon": "", "data": "::(挖鼻)", "text": "挖鼻" }, + { "icon": "", "data": "::(吐)", "text": "吐" }, + { "icon": "", "data": "::(犀利)", "text": "犀利" }, + { "icon": "", "data": "::(小红脸)", "text": "小红脸" }, + { "icon": "", "data": "::(懒得理)", "text": "懒得理" }, + { "icon": "", "data": "::(勉强)", "text": "勉强" }, + { "icon": "", "data": "::(爱心)", "text": "爱心" }, + { "icon": "", "data": "::(心碎)", "text": "心碎" }, + { "icon": "", "data": "::(玫瑰)", "text": "玫瑰" }, + { "icon": "", "data": "::(礼物)", "text": "礼物" }, + { "icon": "", "data": "::(彩虹)", "text": "彩虹" }, + { "icon": "", "data": "::(太阳)", "text": "太阳" }, + { "icon": "", "data": "::(星星月亮)", "text": "星星月亮" }, + { "icon": "", "data": "::(钱币)", "text": "钱币" }, + { "icon": "", "data": "::(茶杯)", "text": "茶杯" }, + { "icon": "", "data": "::(蛋糕)", "text": "蛋糕" }, + { "icon": "", "data": "::(大拇指)", "text": "大拇指" }, + { "icon": "", "data": "::(胜利)", "text": "胜利" }, + { "icon": "", "data": "::(haha)", "text": "haha" }, + { "icon": "", "data": "::(OK)", "text": "OK" }, + { "icon": "", "data": "::(沙发)", "text": "沙发" }, + { "icon": "", "data": "::(手纸)", "text": "手纸" }, + { "icon": "", "data": "::(香蕉)", "text": "香蕉" }, + { "icon": "", "data": "::(便便)", "text": "便便" }, + { "icon": "", "data": "::(药丸)", "text": "药丸" }, + { "icon": "", "data": "::(红领巾)", "text": "红领巾" }, + { "icon": "", "data": "::(蜡烛)", "text": "蜡烛" }, + { "icon": "", "data": "::(音乐)", "text": "音乐" }, + { "icon": "", "data": "::(灯泡)", "text": "灯泡" }, + { "icon": "", "data": "::(开心)", "text": "开心" }, + { "icon": "", "data": "::(钱)", "text": "钱" }, + { "icon": "", "data": "::(咦)", "text": "咦" }, + { "icon": "", "data": "::(呼)", "text": "呼" }, + { "icon": "", "data": "::(冷)", "text": "冷" }, + { "icon": "", "data": "::(生气)", "text": "生气" }, + { "icon": "", "data": "::(弱)", "text": "弱" } + ] + }, + "阿鲁": { + "type": "image", + "container": [ + { "icon": "", "data": ":@(高兴)", "text": "高兴" }, + { "icon": "", "data": ":@(小怒)", "text": "小怒" }, + { "icon": "", "data": ":@(脸红)", "text": "脸红" }, + { "icon": "", "data": ":@(内伤)", "text": "内伤" }, + { "icon": "", "data": ":@(装大款)", "text": "装大款" }, + { "icon": "", "data": ":@(赞一个)", "text": "赞一个" }, + { "icon": "", "data": ":@(害羞)", "text": "害羞" }, + { "icon": "", "data": ":@(汗)", "text": "汗" }, + { "icon": "", "data": ":@(吐血倒地)", "text": "吐血倒地" }, + { "icon": "", "data": ":@(深思)", "text": "深思" }, + { "icon": "", "data": ":@(不高兴)", "text": "不高兴" }, + { "icon": "", "data": ":@(无语)", "text": "无语" }, + { "icon": "", "data": ":@(亲亲)", "text": "亲亲" }, + { "icon": "", "data": ":@(口水)", "text": "口水" }, + { "icon": "", "data": ":@(尴尬)", "text": "尴尬" }, + { "icon": "", "data": ":@(中指)", "text": "中指" }, + { "icon": "", "data": ":@(想一想)", "text": "想一想" }, + { "icon": "", "data": ":@(哭泣)", "text": "哭泣" }, + { "icon": "", "data": ":@(便便)", "text": "便便" }, + { "icon": "", "data": ":@(献花)", "text": "献花" }, + { "icon": "", "data": ":@(皱眉)", "text": "皱眉" }, + { "icon": "", "data": ":@(傻笑)", "text": "傻笑" }, + { "icon": "", "data": ":@(狂汗)", "text": "狂汗" }, + { "icon": "", "data": ":@(吐)", "text": "吐" }, + { "icon": "", "data": ":@(喷水)", "text": "喷水" }, + { "icon": "", "data": ":@(看不见)", "text": "看不见" }, + { "icon": "", "data": ":@(鼓掌)", "text": "鼓掌" }, + { "icon": "", "data": ":@(阴暗)", "text": "阴暗" }, + { "icon": "", "data": ":@(长草)", "text": "长草" }, + { "icon": "", "data": ":@(献黄瓜)", "text": "献黄瓜" }, + { "icon": "", "data": ":@(邪恶)", "text": "邪恶" }, + { "icon": "", "data": ":@(期待)", "text": "期待" }, + { "icon": "", "data": ":@(得意)", "text": "得意" }, + { "icon": "", "data": ":@(吐舌)", "text": "吐舌" }, + { "icon": "", "data": ":@(喷血)", "text": "喷血" }, + { "icon": "", "data": ":@(无所谓)", "text": "无所谓" }, + { "icon": "", "data": ":@(观察)", "text": "观察" }, + { "icon": "", "data": ":@(暗地观察)", "text": "暗地观察" }, + { "icon": "", "data": ":@(肿包)", "text": "肿包" }, + { "icon": "", "data": ":@(中枪)", "text": "中枪" }, + { "icon": "", "data": ":@(大囧)", "text": "大囧" }, + { "icon": "", "data": ":@(呲牙)", "text": "呲牙" }, + { "icon": "", "data": ":@(抠鼻)", "text": "抠鼻" }, + { "icon": "", "data": ":@(不说话)", "text": "不说话" }, + { "icon": "", "data": ":@(咽气)", "text": "咽气" }, + { "icon": "", "data": ":@(欢呼)", "text": "欢呼" }, + { "icon": "", "data": ":@(锁眉)", "text": "锁眉" }, + { "icon": "", "data": ":@(蜡烛)", "text": "蜡烛" }, + { "icon": "", "data": ":@(坐等)", "text": "坐等" }, + { "icon": "", "data": ":@(击掌)", "text": "击掌" }, + { "icon": "", "data": ":@(惊喜)", "text": "惊喜" }, + { "icon": "", "data": ":@(喜极而泣)", "text": "喜极而泣" }, + { "icon": "", "data": ":@(抽烟)", "text": "抽烟" }, + { "icon": "", "data": ":@(不出所料)", "text": "不出所料" }, + { "icon": "", "data": ":@(愤怒)", "text": "愤怒" }, + { "icon": "", "data": ":@(无奈)", "text": "无奈" }, + { "icon": "", "data": ":@(黑线)", "text": "黑线" }, + { "icon": "", "data": ":@(投降)", "text": "投降" }, + { "icon": "", "data": ":@(看热闹)", "text": "看热闹" }, + { "icon": "", "data": ":@(扇耳光)", "text": "扇耳光" }, + { "icon": "", "data": ":@(小眼睛)", "text": "小眼睛" }, + { "icon": "", "data": ":@(中刀)", "text": "中刀" } + ] + }, + "颜文字": { + "type": "emoticon", + "container": [ + { + "icon": "OωO", + "text": "Author: DIYgod" + }, + { + "icon": "|´・ω・)ノ", + "text": "Hi" + }, + { + "icon": "ヾ(≧∇≦*)ゝ", + "text": "开心" + }, + { + "icon": "(☆ω☆)", + "text": "星星眼" + }, + { + "icon": "(╯‵□′)╯︵┴─┴", + "text": "掀桌" + }, + { + "icon": " ̄﹃ ̄", + "text": "流口水" + }, + { + "icon": "(/ω\)", + "text": "捂脸" + }, + { + "icon": "∠( ᐛ 」∠)_", + "text": "给跪" + }, + { + "icon": "(๑•̀ㅁ•́ฅ)", + "text": "Hi" + }, + { + "icon": "→_→", + "text": "斜眼" + }, + { + "icon": "୧(๑•̀⌄•́๑)૭", + "text": "加油" + }, + { + "icon": "٩(ˊᗜˋ*)و", + "text": "有木有WiFi" + }, + { + "icon": "(ノ°ο°)ノ", + "text": "前方高能预警" + }, + { + "icon": "(´இ皿இ`)", + "text": "我从未见过如此厚颜无耻之人" + }, + { + "icon": "⌇●﹏●⌇", + "text": "吓死宝宝惹" + }, + { + "icon": "(ฅ´ω`ฅ)", + "text": "已阅留爪" + }, + { + "icon": "(╯°A°)╯︵○○○", + "text": "去吧大师球" + }, + { + "icon": "φ( ̄∇ ̄o)", + "text": "太萌惹" + }, + { + "icon": "ヾ(´・ ・`。)ノ\"", + "text": "咦咦咦" + }, + { + "icon": "( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃", + "text": "气呼呼" + }, + { + "icon": "(ó﹏ò。)", + "text": "我受到了惊吓" + }, + { + "icon": "Σ(っ °Д °;)っ", + "text": "什么鬼" + }, + { + "icon": "( ,,´・ω・)ノ\"(´っω・`。)", + "text": "摸摸头" + }, + { + "icon": "╮(╯▽╰)╭ ", + "text": "无奈" + }, + { + "icon": "o(*////▽////*)q ", + "text": "脸红" + }, + { + "icon": ">﹏<", + "text": "" + }, + { + "icon": "( ๑´•ω•) \"(ㆆᴗㆆ)", + "text": "" + }, + { + "icon": "(。•ˇ‸ˇ•。)", + "text": "" + } + ] + } +} diff --git a/core/route.php b/core/api.php similarity index 85% rename from core/route.php rename to core/api.php index 55f10c3..3f87de9 100644 --- a/core/route.php +++ b/core/api.php @@ -1,6 +1,6 @@ _getThumbnail($item, false), "time" => date('Y-m-d', $item->created), "created" => date('Y年m月d日', $item->created), - "title" => _getEncryptionTitle($item, false), + "title" => $item->title, "abstract" => _getAbstract($item, false), "category" => $item->categories, "views" => _getViews($item, false), @@ -51,7 +51,7 @@ function _getPost($self) $self->response->throwJson(array("data" => $result)); } -/* 浏览量 */ +/* 增加浏览量 */ function _handleViews($self) { header("HTTP/1.1 200 OK"); @@ -69,7 +69,7 @@ function _handleViews($self) } } -/* 点赞 */ +/* 点赞和取消点赞 */ function _handleAgree($self) { header("HTTP/1.1 200 OK"); @@ -92,7 +92,7 @@ function _handleAgree($self) } } -/* 收录 */ +/* 查询是否收录 */ function _getRecord($self) { header("HTTP/1.1 200 OK"); @@ -122,4 +122,26 @@ function _getRecord($self) } else { $self->response->throwJson(array("data" => "已收录")); } -} \ No newline at end of file +} + +/* 主动推送到百度收录 */ +function _pushRecord($self) +{ + header("HTTP/1.1 200 OK"); + $domain = $self->request->domain; + $url = $self->request->url; + $token = Helper::options()->JBaiduToken; + $urls = explode(",", $url); + $api = 'http://data.zz.baidu.com/urls?site=' . $domain . '&token=' . $token; + $ch = curl_init(); + $options = array( + CURLOPT_URL => $api, + CURLOPT_POST => true, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_POSTFIELDS => implode("\n", $urls), + CURLOPT_HTTPHEADER => array('Content-Type: text/plain'), + ); + curl_setopt_array($ch, $options); + $result = curl_exec($ch); + $self->response->throwJson(json_decode($result)); +} diff --git a/core/core.php b/core/core.php index deae7fc..195e567 100644 --- a/core/core.php +++ b/core/core.php @@ -1,16 +1,35 @@ commentsAntiSpam = false; + /* 强奸用户关闭检查来源URL */ + Helper::options()->commentsCheckReferer = false; + /* 强奸用户强制要求填写邮箱 */ + Helper::options()->commentsRequireMail = true; + /* 强奸用户强制要求无需填写url */ + Helper::options()->commentsRequireURL = false; + /* 强制用户开启评论回复 */ Helper::options()->commentsThreaded = true; - /* 强制显示一页15篇文章 */ + /* 强制显示一页12篇文章 */ $self->parameter->pageSize = 12; /* 主题开放API 路由规则 */ @@ -26,6 +45,9 @@ function themeInit($self) case 'baidu_record': _getRecord($self); break; + case 'baidu_push': + _pushRecord($self); + break; case 'handle_views': _handleViews($self); break; @@ -36,326 +58,7 @@ function themeInit($self) } } -/* 主题版本号 */ -function _getVersion() -{ - return "1.0.0"; -}; - -function _isMobile() -{ - if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) - return true; - if (isset($_SERVER['HTTP_VIA'])) { - return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false; - } - if (isset($_SERVER['HTTP_USER_AGENT'])) { - $clientkeywords = array('nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile'); - if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) - return true; - } - if (isset($_SERVER['HTTP_ACCEPT'])) { - if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { - return true; - } - } - return false; -} - -/* 获取加密的文章标题 */ -function _getEncryptionTitle($item, $type = true) -{ - $title = ""; - if ($item->hidden) { - $db = Typecho_Db::get(); - $title = $db->fetchRow($db->select('title')->from('table.contents')->where('cid = ?', $item->cid))['title']; - } else { - $title = $item->title; - } - if ($type) echo $title; - else return $title; -} - -/* 过滤文章内容 */ -function _parseContent($post) -{ - /* 优先判断文章内是否有回复可见的内容 */ - $content = $post->content; - if (preg_match('/\[hide\].*\[\/hide\]/', $content)) { - $db = Typecho_Db::get(); - $hasComment = $db->fetchAll($db->select()->from('table.comments')->where('cid = ?', $post->cid)->where('mail = ?', $post->remember('mail', true))->limit(1)); - if ($hasComment) { - $content = preg_replace('/\[hide\](.*?)\[\/hide\]/sm', '$1', $content); - } else { - $content = preg_replace('/\[hide\](.*?)\[\/hide\]/sm', '此处内容作者设置了 回复 可见', $content); - } - } - echo $content; -} - -function _startCountTime() -{ - global $timeStart; - $mTime = explode(' ', microtime()); - $timeStart = $mTime[1] + $mTime[0]; - return true; -} - -function _endCountTime($precision = 3) -{ - global $timeStart, $timeEnd; - $mTime = explode(' ', microtime()); - $timeEnd = $mTime[1] + $mTime[0]; - $timeTotal = number_format($timeEnd - $timeStart, $precision); - echo $timeTotal < 1 ? $timeTotal * 1000 . 'ms' : $timeTotal . 's'; -} - -function _getAvatarByMail($mail) -{ - $gravatarsUrl = 'https://gravatar.helingqi.com/wavatar/'; - $mailLower = strtolower($mail); - $md5MailLower = md5($mailLower); - $qqMail = str_replace('@qq.com', '', $mailLower); - if (strstr($mailLower, "qq.com") && is_numeric($qqMail) && strlen($qqMail) < 11 && strlen($qqMail) > 4) { - echo 'https://thirdqq.qlogo.cn/g?b=qq&nk=' . $qqMail . '&s=100'; - } else { - echo $gravatarsUrl . $md5MailLower . '?d=mm'; - } -}; - -function _getAsideAuthorMotto() -{ - $JMottoRandom = explode("\r\n", Helper::options()->JAside_Author_Motto); - echo $JMottoRandom[array_rand($JMottoRandom, 1)]; -} - -function _getAbstract($item, $type = true) -{ - $abstract = ""; - if ($item->password) { - $abstract = "本篇文章为加密文章,请前往内页查看详情"; - } else { - if ($item->fields->abstract) { - $abstract = $item->fields->abstract; - } else { - $abstract = strip_tags($item->excerpt); - } - } - if ($type) { - echo $abstract; - } else { - return $abstract; - } -} - -function _getThumbnail($item, $type = true) -{ - $randomThumb = 'https://cdn.jsdelivr.net/npm/typecho_joe_theme@4.3.5/assets/img/random/' . rand(1, 25) . '.webp'; - $custom_thumbnail = Helper::options()->JThumbnail; - if ($custom_thumbnail) { - $custom_thumbnail_arr = explode("\r\n", $custom_thumbnail); - $randomThumb = $custom_thumbnail_arr[array_rand($custom_thumbnail_arr, 1)] . "?key=" . mt_rand(0, 1000000); - } - $pattern = '/\]*>/i'; - $patternMD = '/\!\[.*?\]\((http(s)?:\/\/.*?(jpg|jpeg|gif|png|webp))/i'; - $patternMDfoot = '/\[.*?\]:\s*(http(s)?:\/\/.*?(jpg|jpeg|gif|png|webp))/i'; - if ($item->fields->thumb) { - $randomThumb = $item->fields->thumb; - } elseif (preg_match_all($pattern, $item->content, $thumbUrl)) { - $randomThumb = $thumbUrl[1][0]; - } elseif (preg_match_all($patternMD, $item->content, $thumbUrl)) { - $randomThumb = $thumbUrl[1][0]; - } elseif (preg_match_all($patternMDfoot, $item->content, $thumbUrl)) { - $randomThumb = $thumbUrl[1][0]; - } - if ($type) echo $randomThumb; - else return $randomThumb; -} - -function _getViews($item, $type = true) -{ - $db = Typecho_Db::get(); - $result = $db->fetchRow($db->select('views')->from('table.contents')->where('cid = ?', $item->cid))['views']; - if ($type) echo number_format($result); - else return number_format($result); -} - -function _getAgree($item, $type = true) -{ - $db = Typecho_Db::get(); - $result = $db->fetchRow($db->select('agree')->from('table.contents')->where('cid = ?', $item->cid))['agree']; - if ($type) echo number_format($result); - else return number_format($result); -} - -function _parseAsideLink($link) -{ - echo str_replace("#", "?scroll=", $link); -} - -function _getAgentOS($agent) -{ - $os = "Linux"; - if (preg_match('/win/i', $agent)) { - if (preg_match('/nt 6.0/i', $agent)) { - $os = 'Windows Vista'; - } else if (preg_match('/nt 6.1/i', $agent)) { - $os = 'Windows 7'; - } else if (preg_match('/nt 6.2/i', $agent)) { - $os = 'Windows 8'; - } else if (preg_match('/nt 6.3/i', $agent)) { - $os = 'Windows 8.1'; - } else if (preg_match('/nt 5.1/i', $agent)) { - $os = 'Windows XP'; - } else if (preg_match('/nt 10.0/i', $agent)) { - $os = 'Windows 10'; - } else { - $os = 'Windows X64'; - } - } else if (preg_match('/android/i', $agent)) { - if (preg_match('/android 9/i', $agent)) { - $os = 'Android Pie'; - } else if (preg_match('/android 8/i', $agent)) { - $os = 'Android Oreo'; - } else { - $os = 'Android'; - } - } else if (preg_match('/ubuntu/i', $agent)) { - $os = 'Ubuntu'; - } else if (preg_match('/linux/i', $agent)) { - $os = 'Linux'; - } else if (preg_match('/iPhone/i', $agent)) { - $os = 'iPhone'; - } else if (preg_match('/mac/i', $agent)) { - $os = 'MacOS'; - } else if (preg_match('/fusion/i', $agent)) { - $os = 'Android'; - } else { - $os = 'Linux'; - } - echo $os; -} - -function _getAgentBrowser($agent) -{ - if (preg_match('/MSIE\s([^\s|;]+)/i', $agent, $regs)) { - $outputer = 'Internet Explore'; - } else if (preg_match('/FireFox\/([^\s]+)/i', $agent, $regs)) { - $outputer = 'FireFox'; - } else if (preg_match('/Maxthon([\d]*)\/([^\s]+)/i', $agent, $regs)) { - $outputer = 'MicroSoft Edge'; - } else if (preg_match('#360([a-zA-Z0-9.]+)#i', $agent, $regs)) { - $outputer = '360 Fast Browser'; - } else if (preg_match('/Edge([\d]*)\/([^\s]+)/i', $agent, $regs)) { - $outputer = 'MicroSoft Edge'; - } else if (preg_match('/UC/i', $agent)) { - $outputer = 'UC Browser'; - } else if (preg_match('/QQ/i', $agent, $regs) || preg_match('/QQ Browser\/([^\s]+)/i', $agent, $regs)) { - $outputer = 'QQ Browser'; - } else if (preg_match('/UBrowser/i', $agent, $regs)) { - $outputer = 'UC Browser'; - } else if (preg_match('/Opera[\s|\/]([^\s]+)/i', $agent, $regs)) { - $outputer = 'Opera'; - } else if (preg_match('/Chrome([\d]*)\/([^\s]+)/i', $agent, $regs)) { - $outputer = 'Google Chrome'; - } else if (preg_match('/safari\/([^\s]+)/i', $agent, $regs)) { - $outputer = 'Safari'; - } else { - $outputer = 'Google Chrome'; - } - echo $outputer; -} - -function _parseAsideReply($text, $type = true) -{ - if ($type) echo _parseReply(preg_replace('~{!{.*~', '# 图片回复', strip_tags($text))); - else echo preg_replace('~{!{.*~', '# 图片回复', strip_tags($text)); -} - -function _parseReply($text) -{ - $text = preg_replace_callback( - '/\:\:\(\s*(呵呵|哈哈|吐舌|太开心|笑眼|花心|小乖|乖|捂嘴笑|滑稽|你懂的|不高兴|怒|汗|黑线|泪|真棒|喷|惊哭|阴险|鄙视|酷|啊|狂汗|what|疑问|酸爽|呀咩爹|委屈|惊讶|睡觉|笑尿|挖鼻|吐|犀利|小红脸|懒得理|勉强|爱心|心碎|玫瑰|礼物|彩虹|太阳|星星月亮|钱币|茶杯|蛋糕|大拇指|胜利|haha|OK|沙发|手纸|香蕉|便便|药丸|红领巾|蜡烛|音乐|灯泡|开心|钱|咦|呼|冷|生气|弱|吐血)\s*\)/is', - function ($match) { - return '表情'; - }, - $text - ); - $text = preg_replace_callback( - '/\:\@\(\s*(高兴|小怒|脸红|内伤|装大款|赞一个|害羞|汗|吐血倒地|深思|不高兴|无语|亲亲|口水|尴尬|中指|想一想|哭泣|便便|献花|皱眉|傻笑|狂汗|吐|喷水|看不见|鼓掌|阴暗|长草|献黄瓜|邪恶|期待|得意|吐舌|喷血|无所谓|观察|暗地观察|肿包|中枪|大囧|呲牙|抠鼻|不说话|咽气|欢呼|锁眉|蜡烛|坐等|击掌|惊喜|喜极而泣|抽烟|不出所料|愤怒|无奈|黑线|投降|看热闹|扇耳光|小眼睛|中刀)\s*\)/is', - function ($match) { - return '表情'; - }, - $text - ); - return $text; -} - -function _getParentReply($parent) -{ - if ($parent !== "0") { - $db = Typecho_Db::get(); - $commentInfo = $db->fetchRow($db->select('author')->from('table.comments')->where('coid = ?', $parent)); - echo '
@ ' . $commentInfo['author'] . '
'; - } -} - -function _parseCommentReply($text) -{ - $text = _parseReply($text); - $text = preg_replace('/\{!{(.*?)\}!}/', '', $text); - echo $text; -} - - -function _getLazyload($type = true) -{ - if ($type) echo Helper::options()->JLazyload; - else return Helper::options()->JLazyload; -} - -function _getAvatarLazyload($type = true) -{ - if ($type) echo "https://cdn.jsdelivr.net/gh/HaoOuBa/Joe@master/assets/img/lazyload_avatar.png"; - else return "https://cdn.jsdelivr.net/gh/HaoOuBa/Joe@master/assets/img/lazyload_avatar.png"; -} - -function _getAsideAuthorNav() -{ - if (Helper::options()->JAside_Author_Nav !== "off") { - $db = Typecho_Db::get(); - $adapterName = $db->getAdapterName(); - if ($adapterName == 'pgsql' || $adapterName == 'Pdo_Pgsql' || $adapterName == 'Pdo_SQLite' || $adapterName == 'SQLite') { - $order_by = 'RANDOM()'; - } else { - $order_by = 'RAND()'; - } - $result = $db->fetchAll( - $db->select() - ->from('table.contents') - ->where('table.contents.status = ?', 'publish') - ->where('table.contents.type = ?', 'post') - ->where("table.contents.password IS NULL OR table.contents.password = ''") - ->limit(Helper::options()->JAside_Author_Nav) - ->order($order_by) - ); - foreach ($result as $item) { - $obj = Typecho_Widget::widget('Widget_Abstract_Contents'); - $item = $obj->push($item); - $title = htmlspecialchars($item['title']); - $permalink = $item['permalink']; - echo " -
  • - {$title} - - - -
  • - "; - } - } -} - +/* 增加自定义字段 */ function themeFields($layout) { $aside = new Typecho_Widget_Helper_Form_Element_Radio( @@ -394,40 +97,3 @@ function themeFields($layout) ); $layout->addItem($abstract); } - -class Widget_Contents_Hot extends Widget_Abstract_Contents -{ - public function execute() - { - $this->parameter->setDefault(array('pageSize' => 10)); - $this->db->fetchAll( - $this->select()->from('table.contents') - ->where("table.contents.password IS NULL OR table.contents.password = ''") - ->where('table.contents.status = ?', 'publish') - ->where('table.contents.created <= ?', time()) - ->where('table.contents.type = ?', 'post') - ->limit($this->parameter->pageSize) - ->order('table.contents.views', Typecho_Db::SORT_DESC), - array($this, 'push') - ); - } -} - -class Widget_Contents_Sort extends Widget_Abstract_Contents -{ - public function execute() - { - $this->parameter->setDefault(array('page' => 1, 'pageSize' => 10, 'type' => 'created')); - $offset = $this->parameter->pageSize * ($this->parameter->page - 1); - $this->db->fetchAll( - $this->select() - ->from('table.contents') - ->where('table.contents.type = ?', 'post') - ->where('table.contents.status = ?', 'publish') - ->limit($this->parameter->pageSize) - ->offset($offset) - ->order($this->parameter->type, Typecho_Db::SORT_DESC), - array($this, 'push') - ); - } -} diff --git a/core/function.php b/core/function.php new file mode 100644 index 0000000..972c314 --- /dev/null +++ b/core/function.php @@ -0,0 +1,265 @@ +JLazyload; + else return Helper::options()->JLazyload; +} + +/* 获取头像懒加载图 */ +function _getAvatarLazyload($type = true) +{ + if ($type) echo "https://cdn.jsdelivr.net/gh/HaoOuBa/Joe@master/assets/img/lazyload_avatar.png"; + else return "https://cdn.jsdelivr.net/gh/HaoOuBa/Joe@master/assets/img/lazyload_avatar.png"; +} + +/* 查询文章浏览量 */ +function _getViews($item, $type = true) +{ + $db = Typecho_Db::get(); + $result = $db->fetchRow($db->select('views')->from('table.contents')->where('cid = ?', $item->cid))['views']; + if ($type) echo number_format($result); + else return number_format($result); +} + +/* 查询文章点赞量 */ +function _getAgree($item, $type = true) +{ + $db = Typecho_Db::get(); + $result = $db->fetchRow($db->select('agree')->from('table.contents')->where('cid = ?', $item->cid))['agree']; + if ($type) echo number_format($result); + else return number_format($result); +} + +/* 页面开始计时 */ +function _startCountTime() +{ + global $timeStart; + $mTime = explode(' ', microtime()); + $timeStart = $mTime[1] + $mTime[0]; + return true; +} + +/* 页面结束计时 */ +function _endCountTime($precision = 3) +{ + global $timeStart, $timeEnd; + $mTime = explode(' ', microtime()); + $timeEnd = $mTime[1] + $mTime[0]; + $timeTotal = number_format($timeEnd - $timeStart, $precision); + echo $timeTotal < 1 ? $timeTotal * 1000 . 'ms' : $timeTotal . 's'; +} + + +/* 通过邮箱生成头像地址 */ +function _getAvatarByMail($mail) +{ + $gravatarsUrl = 'https://gravatar.helingqi.com/wavatar/'; + $mailLower = strtolower($mail); + $md5MailLower = md5($mailLower); + $qqMail = str_replace('@qq.com', '', $mailLower); + if (strstr($mailLower, "qq.com") && is_numeric($qqMail) && strlen($qqMail) < 11 && strlen($qqMail) > 4) { + echo 'https://thirdqq.qlogo.cn/g?b=qq&nk=' . $qqMail . '&s=100'; + } else { + echo $gravatarsUrl . $md5MailLower . '?d=mm'; + } +}; + +/* 获取侧边栏随机一言 */ +function _getAsideAuthorMotto() +{ + $JMottoRandom = explode("\r\n", Helper::options()->JAside_Author_Motto); + echo $JMottoRandom[array_rand($JMottoRandom, 1)]; +} + +/* 获取文章摘要 */ +function _getAbstract($item, $type = true) +{ + $abstract = ""; + if ($item->password) { + $abstract = "加密文章,请前往内页查看详情"; + } else { + if ($item->fields->abstract) { + $abstract = $item->fields->abstract; + } else { + $abstract = strip_tags($item->excerpt); + } + } + if ($type) echo $abstract; + else return $abstract; +} + +/* 获取文章缩略图 */ +function _getThumbnail($item, $type = true) +{ + $randomThumb = 'https://cdn.jsdelivr.net/npm/typecho_joe_theme@4.3.5/assets/img/random/' . rand(1, 25) . '.webp'; + $custom_thumbnail = Helper::options()->JThumbnail; + if ($custom_thumbnail) { + $custom_thumbnail_arr = explode("\r\n", $custom_thumbnail); + $randomThumb = $custom_thumbnail_arr[array_rand($custom_thumbnail_arr, 1)] . "?key=" . mt_rand(0, 1000000); + } + $pattern = '/\]*>/i'; + $patternMD = '/\!\[.*?\]\((http(s)?:\/\/.*?(jpg|jpeg|gif|png|webp))/i'; + $patternMDfoot = '/\[.*?\]:\s*(http(s)?:\/\/.*?(jpg|jpeg|gif|png|webp))/i'; + if ($item->fields->thumb) { + $randomThumb = $item->fields->thumb; + } elseif (preg_match_all($pattern, $item->content, $thumbUrl)) { + $randomThumb = $thumbUrl[1][0]; + } elseif (preg_match_all($patternMD, $item->content, $thumbUrl)) { + $randomThumb = $thumbUrl[1][0]; + } elseif (preg_match_all($patternMDfoot, $item->content, $thumbUrl)) { + $randomThumb = $thumbUrl[1][0]; + } + if ($type) echo $randomThumb; + else return $randomThumb; +} + +/* 获取父级评论 */ +function _getParentReply($parent) +{ + if ($parent !== "0") { + $db = Typecho_Db::get(); + $commentInfo = $db->fetchRow($db->select('author')->from('table.comments')->where('coid = ?', $parent)); + echo '
    @ ' . $commentInfo['author'] . '
    '; + } +} + +/* 获取侧边栏作者随机文章 */ +function _getAsideAuthorNav() +{ + if (Helper::options()->JAside_Author_Nav !== "off") { + $db = Typecho_Db::get(); + $adapterName = $db->getAdapterName(); + if ($adapterName == 'pgsql' || $adapterName == 'Pdo_Pgsql' || $adapterName == 'Pdo_SQLite' || $adapterName == 'SQLite') { + $order_by = 'RANDOM()'; + } else { + $order_by = 'RAND()'; + } + $result = $db->fetchAll( + $db->select() + ->from('table.contents') + ->where('table.contents.status = ?', 'publish') + ->where('table.contents.type = ?', 'post') + ->where("table.contents.password IS NULL OR table.contents.password = ''") + ->limit(Helper::options()->JAside_Author_Nav) + ->order($order_by) + ); + foreach ($result as $item) { + $obj = Typecho_Widget::widget('Widget_Abstract_Contents'); + $item = $obj->push($item); + $title = htmlspecialchars($item['title']); + $permalink = $item['permalink']; + echo " +
  • + {$title} + + + +
  • + "; + } + } +} diff --git a/core/parse.php b/core/parse.php new file mode 100644 index 0000000..c90176e --- /dev/null +++ b/core/parse.php @@ -0,0 +1,59 @@ +content; + if (preg_match('/\[hide\].*\[\/hide\]/', $content)) { + $db = Typecho_Db::get(); + $hasComment = $db->fetchAll($db->select()->from('table.comments')->where('cid = ?', $post->cid)->where('mail = ?', $post->remember('mail', true))->limit(1)); + if ($hasComment || $login) { + $content = preg_replace('/\[hide\](.*?)\[\/hide\]/sm', '$1', $content); + } else { + $content = preg_replace('/\[hide\](.*?)\[\/hide\]/sm', '此处内容作者设置了 回复 可见', $content); + } + } + echo $content; +} + +/* 过滤评论回复 */ +function _parseCommentReply($text) +{ + $text = _parseReply($text); + $text = preg_replace('/\{!{(.*?)\}!}/', '', $text); + echo $text; +} + +/* 过滤表情 */ +function _parseReply($text) +{ + $text = preg_replace_callback( + '/\:\:\(\s*(呵呵|哈哈|吐舌|太开心|笑眼|花心|小乖|乖|捂嘴笑|滑稽|你懂的|不高兴|怒|汗|黑线|泪|真棒|喷|惊哭|阴险|鄙视|酷|啊|狂汗|what|疑问|酸爽|呀咩爹|委屈|惊讶|睡觉|笑尿|挖鼻|吐|犀利|小红脸|懒得理|勉强|爱心|心碎|玫瑰|礼物|彩虹|太阳|星星月亮|钱币|茶杯|蛋糕|大拇指|胜利|haha|OK|沙发|手纸|香蕉|便便|药丸|红领巾|蜡烛|音乐|灯泡|开心|钱|咦|呼|冷|生气|弱|吐血)\s*\)/is', + function ($match) { + return '表情'; + }, + $text + ); + $text = preg_replace_callback( + '/\:\@\(\s*(高兴|小怒|脸红|内伤|装大款|赞一个|害羞|汗|吐血倒地|深思|不高兴|无语|亲亲|口水|尴尬|中指|想一想|哭泣|便便|献花|皱眉|傻笑|狂汗|吐|喷水|看不见|鼓掌|阴暗|长草|献黄瓜|邪恶|期待|得意|吐舌|喷血|无所谓|观察|暗地观察|肿包|中枪|大囧|呲牙|抠鼻|不说话|咽气|欢呼|锁眉|蜡烛|坐等|击掌|惊喜|喜极而泣|抽烟|不出所料|愤怒|无奈|黑线|投降|看热闹|扇耳光|小眼睛|中刀)\s*\)/is', + function ($match) { + return '表情'; + }, + $text + ); + return $text; +} + +/* 格式化侧边栏回复 */ +function _parseAsideReply($text, $type = true) +{ + if ($type) echo _parseReply(preg_replace('~{!{.*~', '# 图片回复', strip_tags($text))); + else echo preg_replace('~{!{.*~', '# 图片回复', strip_tags($text)); +} + +/* 过滤侧边栏最新回复的跳转链接 */ +function _parseAsideLink($link) +{ + echo str_replace("#", "?scroll=", $link); +} diff --git a/core/widget.php b/core/widget.php new file mode 100644 index 0000000..a2295ad --- /dev/null +++ b/core/widget.php @@ -0,0 +1,37 @@ +parameter->setDefault(array('pageSize' => 10)); + $this->db->fetchAll( + $this->select()->from('table.contents') + ->where("table.contents.password IS NULL OR table.contents.password = ''") + ->where('table.contents.status = ?', 'publish') + ->where('table.contents.created <= ?', time()) + ->where('table.contents.type = ?', 'post') + ->limit($this->parameter->pageSize) + ->order('table.contents.views', Typecho_Db::SORT_DESC), + array($this, 'push') + ); + } +} + +class Widget_Contents_Sort extends Widget_Abstract_Contents +{ + public function execute() + { + $this->parameter->setDefault(array('page' => 1, 'pageSize' => 10, 'type' => 'created')); + $offset = $this->parameter->pageSize * ($this->parameter->page - 1); + $this->db->fetchAll( + $this->select() + ->from('table.contents') + ->where('table.contents.type = ?', 'post') + ->where('table.contents.status = ?', 'publish') + ->limit($this->parameter->pageSize) + ->offset($offset) + ->order($this->parameter->type, Typecho_Db::SORT_DESC), + array($this, 'push') + ); + } +} diff --git a/functions.php b/functions.php index 4ae6434..8d85201 100644 --- a/functions.php +++ b/functions.php @@ -1,6 +1,9 @@ - 2019 - 2020 © Reach - Joe - ', + '2019 - 2020 © Reach - Joe', '自定义底部栏左侧内容(非必填)', '介绍:用于修改全站底部左侧内容
    例如:2019 - 2020 © Reach - Joe ' @@ -594,4 +595,15 @@ function themeConfig($form) ); $JFriends->setAttribute('class', 'joe_content joe_other'); $form->addInput($JFriends); + + $JBaiduToken = new Typecho_Widget_Helper_Form_Element_Text( + 'JBaiduToken', + NULL, + NULL, + '百度推送Token', + '介绍:填写此处,前台文章页如果未收录,则会自动将当前链接推送给百度加快收录 + 其他:Token在百度收录平台注册账号获取' + ); + $JBaiduToken->setAttribute('class', 'joe_content joe_other'); + $form->addInput($JBaiduToken); } ?> \ No newline at end of file diff --git a/index.php b/index.php index 454a328..ad52246 100644 --- a/index.php +++ b/index.php @@ -14,6 +14,7 @@ need('public/include.php'); ?> + @@ -74,12 +75,12 @@ widget('Widget_Archive@' . $cid, 'pageSize=1&type=post', 'cid=' . $cid)->to($item); ?>
    - - <?php _getEncryptionTitle($item) ?> + + <?php $item->title() ?>
    推荐 - + title() ?>
    diff --git a/live.php b/live.php deleted file mode 100644 index 0e83a4d..0000000 --- a/live.php +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - need('public/include.php'); ?> - - - - - - - - -
    - need('public/header.php'); ?> -
    -
    - -
    - need('public/aside.php'); ?> -
    - need('public/footer.php'); ?> -
    - - - \ No newline at end of file diff --git a/post.php b/post.php index a01187e..4c57b88 100644 --- a/post.php +++ b/post.php @@ -36,13 +36,6 @@
    - categories) > 0) : ?> -
    - categories, 0, 5) as $key => $item) : ?> - - -
    - need('public/article.php'); ?> need('public/handle.php'); ?> need('public/copyright.php'); ?> diff --git a/public/article.php b/public/article.php index f034838..c934253 100644 --- a/public/article.php +++ b/public/article.php @@ -1,4 +1,21 @@ -

    +categories) > 0 || $this->user->uid == $this->authorId) : ?> +
    + categories) > 0) : ?> + categories, 0, 5) as $key => $item) : ?> + + + + user->uid == $this->authorId) : ?> + is('post')) : ?> + 编辑文章 + + 编辑页面 + + +
    + + +

    title() ?>

    <?php $this->author(); ?> @@ -19,16 +36,24 @@
    +
    is('post')) : ?> hidden) : ?> -
    - 需要密码访问的文章 待完成 +
    +
    + + + + + + 确定 +
    - + user->hasLogin()) ?> - + user->hasLogin()) ?>
    \ No newline at end of file diff --git a/public/comment.php b/public/comment.php index 406e032..a75fb25 100644 --- a/public/comment.php +++ b/public/comment.php @@ -21,7 +21,7 @@
    - +
    +
    +
    +
    + +
    +
    have()) : ?> @@ -66,13 +72,6 @@ ) ); ?> - -
    - - - - 暂无评论,期待你来坐沙发 -
    diff --git a/public/footer.php b/public/footer.php index 9d446bb..607a444 100644 --- a/public/footer.php +++ b/public/footer.php @@ -1,9 +1,9 @@