首页
留言反馈
网站导航
推荐
毒鸡汤
Search
1
非插件为typecho 文章生成微海报分享
19,100 阅读
2
主题移动端,样式下添加二级分类
15,544 阅读
3
主题 添加author page
14,856 阅读
4
主题添加移动端下边栏
12,856 阅读
5
EMlog添加评论者邮箱等级
9,173 阅读
typecho
dynamic
SuiYu
Emlog
xiuno
登录
/
注册
Search
标签搜索
代码
xiuno
php
css
typecho
评论
模板
say
js
修改教程
标签
珍惜
努力
recommend
善良
样式
调用
微笑
颜色
插件
Vincent
累计撰写
151
篇文章
累计收到
184
条评论
首页
栏目
typecho
dynamic
SuiYu
Emlog
xiuno
页面
留言反馈
网站导航
推荐
毒鸡汤
搜索到
147
篇与
的结果
2021-07-01
弹窗广告代码分享
HTML代码:<!-- 弹窗 --> <div class="modal fade" id="modal_20200114" tabindex="-1" role="dialog" aria-labelledby="ModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">公告</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> 内容 </div> <div class="modal-footer"> <button type="button" class="btn btn-primary" data-dismiss="modal" id="modal_20200114_lock">我知道了,不要再弹出</button> </div> </div> </div> </div>JS代码:(放到底部)<script> !function (){ var a = $('#modal_20200114'); var b = $('#modal_20200114_lock'); var k = $.cookie('modal_20200114_lock'); if(!k){ a.modal('show'); b.on('click', function() { $.cookie('modal_20200114_lock', '1'); }); } }(); </script>
2021年07月01日
1,006 阅读
0 评论
3 点赞
2021-07-01
为xiuno增加附件下载位置详细信息
要实现附件信息功能,要增加下面三个hook文件。1. attach_output_before.php attach_downloads($aid);2. model_attach_start.php // downloads + 1function attach_downloads($aid, $n = 1) { global $conf; $sqladd = strpos($conf['db']['type'], 'mysql') === FALSE ? '' : ' LOW_PRIORITY'; $r = db_exec("UPDATE$sqladd `bbs_attach` SET downloads=downloads+$n WHERE aid='$aid'"); return $r; }3. model_post_file_list_html_delete_before.php$s .= '<br><div style="color:#999;"> 上传时间:'.date('Y-m-d', $attach['create_date'])."\r\n"; $s .= ' | 下载次数:'.intval($attach['downloads'])."\r\n"; $s .= '次 | 文件大小:'.humansize($attach['filesize'])."\r\n"; $s .= '</div>'."\r\n";
2021年07月01日
806 阅读
0 评论
3 点赞
2021-06-30
xiuno伪静态配置
apache1.在网站根目录创建文件 .htaccess,内容如下:<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*?)([^/]*)$ $1index.php?$2[QSA,PT,L] </IfModule>2. 修改conf/conf.php,将url_rewrite_on 改成13. 清理缓存nginx1. 在配置文件的server节点下新增如下内容:location ~* \.(htm)$ { rewrite "^(.*)/(.+?).htm(.*?)$" $1/index.php?$2.htm$3 last; }2. 修改conf/conf.php,将url_rewrite_on 改成13. 清理缓存
2021年06月30日
955 阅读
0 评论
3 点赞
2021-06-30
余生很贵,要跟舒服的人在一起
作家桐华说过一句话:“世界上有许多种遇见,最美好的,莫过于,在我最美的时光里与你相遇。”若是相遇太早,错过为陌路人;相遇太晚,又丢了爱的勇气。生命之幸,就是在最美的时光遇到最舒服的人。如果有这样一个人恰好出现,无需讨好与迁就,那便最是自在和舒服。{mtitle title="舒服的关系,不需计较"/}“人生所求,得之可喜,不得亦无忧。苦乐随缘,得失随缘。”人这一生,来往匆匆,相遇均是缘分。相处时若处处计较,时时算计,除了折损彼此的情义,多半还会丢了宝贵的真心。只有不计较,才能感受美好;只有不算计,脸上才有微笑。伉俪情深的钱钟书和杨绛是文学界的模范夫妻,他们常伴无争的秘诀便是从不斤斤计较。钱钟书在生活上“十指不沾阳春水”,日常的家务都是杨绛一人操办,但她从来没有怨言。而钱钟书也会特意早起为杨绛做美味早点,只为慰藉杨绛的思乡之情。生活就是相爱相伴相守在一起,各自做着力所能及的事情。相爱的人,忽略计较,心里都是彼此的付出;相伴的人,无需计较,漫漫人生都一起走过;相守的人,没有计较,生命都可交付给对方。人生已经跋山涉水,与人相处,应该是从中得到治愈与片刻栖息,而非不断计较。珍惜那些与世无争,没有怨言的人。和他们一起的时光,是安静祥和,也是温暖从容。{mtitle title="舒服的关系,不需讨好"/}人与人之间最舒服的关系,是怎样的?有个网友回复说:“我赠你三月春光,你予我四月桃花,世间真情能长存莫不因此。”深感认同。我们常常费尽心思,努力讨好他人,希望以此获得喜欢和认可,即使并非出自本心。殊不知,讨来的感情,再好也无法长久,再近也不会亲密无间。因为感情本就是两个人的事情,一个人的奔赴只是追逐,彼此努力才是幸福。与其费力讨好,不如学会先爱自己。民国才女作家苏青,为了丈夫放弃学业,在家相夫教子,本以为如此付出便可换来婚姻美满。现实却是丈夫动辄打骂,完全不体贴她的牺牲,婆婆也时常冷嘲热讽,疾言厉色。苏青认清现实后与丈夫离婚,重拾写作,终写成《结婚十年》,成为上海文坛炙手可热的写作大家。作家李碧华曾说:“他若爱你,不必讨好;若不爱你,更加不必。”真正懂你的人,能够理解你的不易,明白你的付出,让你足够安心。而只有在他们面前,才最是无拘无束,也能倍感幸福。余生很长,把真心留给懂你的人,把感情留给爱你的人。{mtitle title="舒服的关系,贵在真诚"/}《麦田里的守望者》一书中有这样一句话:“真正的朋友,无论男女,若是相知,必然相惜,若真相惜,只为真心,无关风月。”朋友之间的相处,常常是用一颗真心去相信另一颗真心,没有猜忌与瓜葛。但人生海海,所遇之人形色各异,付出真心,不一定换回真心。有的人带着面具行事,虚假伪善,真挚只能得到满地凉薄,友情的温暖便也消弭殆尽。有位网友说,她前阵子刚离婚,婚姻中的委屈和伤心,都会向一个朋友倾诉。好友表面为她出谋划策,安慰宽解,背地里却把这些都当做八卦,添油加醋,到处散播。她说,最心痛的不是其他人的风言风语,而是朋友的虚伪。“一物可以换一物,人心不一定换来人心。”不是所有的温暖善意,都会有回报;不是所有的真心付出,对方都能懂。短短一生,终其所求的,不过是有人能与诉衷肠,有人能以真心待。遇到,便是此生之幸,人生再苦也就无所畏惧。“金风玉露一相逢,便胜却人间无数。”相遇,是世间最好的关系,每个朋友都值得倍加珍惜。但人生漫长又短暂,耗费时间在错的人身上,不如趁早解脱。你我皆凡人,追求快乐才是此生目标。{message type="warning" content="往后余生,找一个令你舒服的人,与之为伴,心意互通,相知相守,便算是过好了这一生。"/}
2021年06月30日
994 阅读
0 评论
2 点赞
2021-06-30
css 流光按钮
先看效果图:实现简单炫酷,直接复制查看效果CSS:<style> .btn { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 230px; height: 90px; line-height: 90px; text-align: center; color: #fff; font-size: 25px; text-transform: uppercase; cursor: pointer; background: linear-gradient(90deg, #03a9f4, #f441a5, #ffeb3b, #03a9f4); background-size: 400%; border-radius: 60px; } .btn:hover { animation: animate 8s linear infinite; } @keyframes animate { 0% { background-position: 0%; } 100% { background-position: 400%; } } .btn::before { content: ''; position: absolute; top: -5px; left: -5px; right: -5px; bottom: -5px; z-index: -1; background: linear-gradient(90deg, #03a9f4, #f441a5, #ffeb3b, #03a9f4); background-size: 400%; border-radius: 40px; opacity: 0; transition: 0.5s; } .btn:hover::before { filter: blur(20px); opacity: 1; animation: animate 8s linear infinite; } </style> <body> <b href="#" class="btn">button</b> </body>
2021年06月30日
1,068 阅读
0 评论
3 点赞
2021-05-19
伪3D文本
HTML<div class="loading">Loading</div>CSS@import url("https://fonts.googleapis.com/css?family=Baloo+Bhaijaan&display=swap"); @function float-text-3d($shadow-color: #bbb, $depth: 10, $floating: false) { $shadows: (); // When dropped, it will shrink like a spring. When floating, it grows into its shape. @for $i from 1 to $depth { @if ($floating == false and $i > $depth / 2) { $shadow-color: transparent; } $shadows: append($shadows, 0 ($i * 1px) $shadow-color, comma); } // When dropped, the shadow reveals. When floating, the shadow fades. @if ($floating == false) { $shadows: append($shadows, 0 10px 10px rgba(0, 0, 0, 0.4), comma); } @else { $shadows: append($shadows, 0 50px 25px rgba(0, 0, 0, 0.2), comma); } @return $shadows; } body { display: flex; height: 100vh; justify-content: center; align-items: center; text-align: center; background: #2980b9; } .loading { display: flex; color: white; font-size: 5em; font-family: "Baloo Bhaijaan", cursive; text-transform: uppercase; span { text-shadow: float-text-3d($floating: false); transform: translateY(20px); animation: bounce 0.3s ease infinite alternate; } } @keyframes bounce { to { text-shadow: float-text-3d($floating: true); transform: translateY(-20px); } }JSlet loading = document.querySelector(".loading"); let letters = loading.textContent.split(""); loading.textContent = ""; letters.forEach((letter, i) => { let span = document.createElement("span"); span.textContent = letter; span.style.animationDelay = `${i / 10}s`; loading.append(span); });
2021年05月19日
855 阅读
0 评论
4 点赞
2021-04-18
收藏,日常必备的JS工具函数大全
为元素添加on方法Element.prototype.on = Element.prototype.addEventListener; NodeList.prototype.on = function (event, fn) {、 []['forEach'].call(this, function (el) { el.on(event, fn); }); return this; };为元素添加trigger方法Element.prototype.trigger = function(type, data) { var event = document.createEvent("HTMLEvents"); event.initEvent(type, true, true); event.data = data || {}; event.eventName = type; event.target = this; this.dispatchEvent(event); return this; }; NodeList.prototype.trigger = function(event) { []["forEach"].call(this, function(el) { el["trigger"](event); }); return this; };转义html标签function HtmlEncode(text) { return text .replace(/&/g, "&") .replace(/\"/g, '"') .replace(/</g, "<") .replace(/>/g, ">"); }HTML标签转义// HTML 标签转义 // @param {Array.<DOMString>} templateData 字符串类型的tokens // @param {...} ..vals 表达式占位符的运算结果tokens // function SaferHTML(templateData) { var s = templateData[0]; for (var i = 1; i < arguments.length; i++) { var arg = String(arguments[i]); // Escape special characters in the substitution. s += arg .replace(/&/g, "&") .replace(/</g, "<") .replace(/>/g, ">"); // Don't escape special characters in the template. s += templateData[i]; } return s; } // 调用 var html = SaferHTML`<p>这是关于字符串模板的介绍</p>`;跨浏览器绑定事件function addEventSamp(obj, evt, fn) { if (!oTarget) { return; } if (obj.addEventListener) { obj.addEventListener(evt, fn, false); } else if (obj.attachEvent) { obj.attachEvent("on" + evt, fn); } else { oTarget["on" + sEvtType] = fn; } }加入收藏夹function addFavorite(sURL, sTitle) { try { window.external.addFavorite(sURL, sTitle); } catch (e) { try { window.sidebar.addPanel(sTitle, sURL, ""); } catch (e) { alert("加入收藏失败,请使用Ctrl+D进行添加"); } } }提取页面代码中所有网址var aa = document.documentElement.outerHTML .match( /(url\(|src=|href=)[\"\']*([^\"\'\(\)\<\>\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\<\>\[\] ]+)/gi ) .join("\r\n") .replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/gim, ""); alert(aa);动态加载脚本文件function appendscript(src, text, reload, charset) { var id = hash(src + text); if (!reload && in_array(id, evalscripts)) return; if (reload && $(id)) { $(id).parentNode.removeChild($(id)); } evalscripts.push(id); var scriptNode = document.createElement("script"); scriptNode.type = "text/javascript"; scriptNode.id = id; scriptNode.charset = charset ? charset : BROWSER.firefox ? document.characterSet : document.charset; try { if (src) { scriptNode.src = src; scriptNode.onloadDone = false; scriptNode.onload = function() { scriptNode.onloadDone = true; JSLOADED[src] = 1; }; scriptNode.onreadystatechange = function() { if ( (scriptNode.readyState == "loaded" || scriptNode.readyState == "complete") && !scriptNode.onloadDone ) { scriptNode.onloadDone = true; JSLOADED[src] = 1; } }; } else if (text) { scriptNode.text = text; } document.getElementsByTagName("head")[0].appendChild(scriptNode); } catch (e) {} }返回顶部的通用方法function backTop(btnId) { var btn = document.getElementById(btnId); var d = document.documentElement; var b = document.body; window.onscroll = set; btn.style.display = "none"; btn.onclick = function() { btn.style.display = "none"; window.onscroll = null; this.timer = setInterval(function() { d.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1); b.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1); if (d.scrollTop + b.scrollTop == 0) clearInterval(btn.timer, (window.onscroll = set)); }, 10); }; function set() { btn.style.display = d.scrollTop + b.scrollTop > 100 ? "block" : "none"; } } backTop("goTop");实现base64解码function base64_decode(data) { var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = []; if (!data) { return data; } data += ""; do { h1 = b64.indexOf(data.charAt(i++)); h2 = b64.indexOf(data.charAt(i++)); h3 = b64.indexOf(data.charAt(i++)); h4 = b64.indexOf(data.charAt(i++)); bits = (h1 << 18) | (h2 << 12) | (h3 << 6) | h4; o1 = (bits >> 16) & 0xff; o2 = (bits >> 8) & 0xff; o3 = bits & 0xff; if (h3 == 64) { tmp_arr[ac++] = String.fromCharCode(o1); } else if (h4 == 64) { tmp_arr[ac++] = String.fromCharCode(o1, o2); } else { tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); } } while (i < data.length); dec = tmp_arr.join(""); dec = utf8_decode(dec); return dec; }确认是否是键盘有效输入值function checkKey(iKey) { if (iKey == 32 || iKey == 229) { return true; } /*空格和异常*/ if (iKey > 47 && iKey < 58) { return true; } /*数字*/ if (iKey > 64 && iKey < 91) { return true; } /*字母*/ if (iKey > 95 && iKey < 108) { return true; } /*数字键盘1*/ if (iKey > 108 && iKey < 112) { return true; } /*数字键盘2*/ if (iKey > 185 && iKey < 193) { return true; } /*符号1*/ if (iKey > 218 && iKey < 223) { return true; } /*符号2*/ return false; }全角半角转换//iCase: 0全到半,1半到全,其他不转化 function chgCase(sStr, iCase) { if ( typeof sStr != "string" || sStr.length <= 0 || !(iCase === 0 || iCase == 1) ) { return sStr; } var i, oRs = [], iCode; if (iCase) { /*半->全*/ for (i = 0; i < sStr.length; i += 1) { iCode = sStr.charCodeAt(i); if (iCode == 32) { iCode = 12288; } else if (iCode < 127) { iCode += 65248; } oRs.push(String.fromCharCode(iCode)); } } else { /*全->半*/ for (i = 0; i < sStr.length; i += 1) { iCode = sStr.charCodeAt(i); if (iCode == 12288) { iCode = 32; } else if (iCode > 65280 && iCode < 65375) { iCode -= 65248; } oRs.push(String.fromCharCode(iCode)); } } return oRs.join(""); }版本对比function compareVersion(v1, v2) { v1 = v1.split("."); v2 = v2.split("."); var len = Math.max(v1.length, v2.length); while (v1.length < len) { v1.push("0"); } while (v2.length < len) { v2.push("0"); } for (var i = 0; i < len; i++) { var num1 = parseInt(v1[i]); var num2 = parseInt(v2[i]); if (num1 > num2) { return 1; } else if (num1 < num2) { return -1; } } return 0; }压缩CSS样式代码function compressCss(s) { //压缩代码 s = s.replace(/\/\*(.|\n)*?\*\//g, ""); //删除注释 s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1"); s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); //容错处理 s = s.replace(/;\s*;/g, ";"); //清除连续分号 s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白 return s == null ? "" : s[1]; }获取当前路径var currentPageUrl = ""; if (typeof this.href === "undefined") { currentPageUrl = document.location.toString().toLowerCase(); } else { currentPageUrl = this.href.toString().toLowerCase(); }字符串长度截取function cutstr(str, len) { var temp, icount = 0, patrn = /[^\x00-\xff]/, strre = ""; for (var i = 0; i < str.length; i++) { if (icount < len - 1) { temp = str.substr(i, 1); if (patrn.exec(temp) == null) { icount = icount + 1 } else { icount = icount + 2 } strre += temp } else { break; } } return strre + "..." }时间日期格式转换Date.prototype.format = function(formatStr) { var str = formatStr; var Week = ["日", "一", "二", "三", "四", "五", "六"]; str = str.replace(/yyyy|YYYY/, this.getFullYear()); str = str.replace( /yy|YY/, this.getYear() % 100 > 9 ? (this.getYear() % 100).toString() : "0" + (this.getYear() % 100) ); str = str.replace( /MM/, this.getMonth() + 1 > 9 ? (this.getMonth() + 1).toString() : "0" + (this.getMonth() + 1) ); str = str.replace(/M/g, this.getMonth() + 1); str = str.replace(/w|W/g, Week[this.getDay()]); str = str.replace( /dd|DD/, this.getDate() > 9 ? this.getDate().toString() : "0" + this.getDate() ); str = str.replace(/d|D/g, this.getDate()); str = str.replace( /hh|HH/, this.getHours() > 9 ? this.getHours().toString() : "0" + this.getHours() ); str = str.replace(/h|H/g, this.getHours()); str = str.replace( /mm/, this.getMinutes() > 9 ? this.getMinutes().toString() : "0" + this.getMinutes() ); str = str.replace(/m/g, this.getMinutes()); str = str.replace( /ss|SS/, this.getSeconds() > 9 ? this.getSeconds().toString() : "0" + this.getSeconds() ); str = str.replace(/s|S/g, this.getSeconds()); return str; }; // 或 Date.prototype.format = function(format) { var o = { "M+": this.getMonth() + 1, //month "d+": this.getDate(), //day "h+": this.getHours(), //hour "m+": this.getMinutes(), //minute "s+": this.getSeconds(), //second "q+": Math.floor((this.getMonth() + 3) / 3), //quarter S: this.getMilliseconds() //millisecond }; if (/(y+)/.test(format)) format = format.replace( RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length) ); for (var k in o) { if (new RegExp("(" + k + ")").test(format)) format = format.replace( RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length) ); } return format; }; alert(new Date().format("yyyy-MM-dd hh:mm:ss"));跨浏览器删除事件function delEvt(obj, evt, fn) { if (!obj) { return; } if (obj.addEventListener) { obj.addEventListener(evt, fn, false); } else if (oTarget.attachEvent) { obj.attachEvent("on" + evt, fn); } else { obj["on" + evt] = fn; } }判断是否以某个字符串结束String.prototype.endWith = function(s) { var d = this.length - s.length; return d >= 0 && this.lastIndexOf(s) == d; };返回脚本内容function evalscript(s) { if (s.indexOf("<script") == -1) return s; var p = /<script[^\>]*?>([^\x00]*?)<\/script>/gi; var arr = []; while ((arr = p.exec(s))) { var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i; var arr1 = []; arr1 = p1.exec(arr[0]); if (arr1) { appendscript(arr1[1], "", arr1[2], arr1[3]); } else { p1 = /<script(.*?)>([^\x00]+?)<\/script>/i; arr1 = p1.exec(arr[0]); appendscript("", arr1[2], arr1[1].indexOf("reload=") != -1); } } return s; }格式化CSS样式代码function formatCss(s) { //格式化代码 s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1"); s = s.replace(/;\s*;/g, ";"); //清除连续分号 s = s.replace(/\,[\s\.\#\d]*{/g, "{"); s = s.replace(/([^\s])\{([^\s])/g, "$1 {\n\t$2"); s = s.replace(/([^\s])\}([^\n]*)/g, "$1\n}\n$2"); s = s.replace(/([^\s]);([^\s\}])/g, "$1;\n\t$2"); return s; }获取cookie值function getCookie(name) { var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); if (arr != null) return unescape(arr[2]); return null; }获得URL中GET参数值// 用法:如果地址是 test.htm?t1=1&t2=2&t3=3, 那么能取得:GET["t1"], GET["t2"], GET["t3"] function getGet() { querystr = window.location.href.split("?"); if (querystr[1]) { GETs = querystr[1].split("&"); GET = []; for (i = 0; i < GETs.length; i++) { tmp_arr = GETs.split("="); key = tmp_arr[0]; GET[key] = tmp_arr[1]; } } return querystr[1]; }获取移动设备初始化大小function getInitZoom() { if (!this._initZoom) { var screenWidth = Math.min(screen.height, screen.width); if (this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()) { screenWidth = screenWidth / window.devicePixelRatio; } this._initZoom = screenWidth / document.body.offsetWidth; } return this._initZoom; }获取页面高度function getPageHeight() { var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat" ? a : g.documentElement; return Math.max(f.scrollHeight, a.scrollHeight, d.clientHeight); }获取页面scrollLeftfunction getPageScrollLeft() { var a = document; return a.documentElement.scrollLeft || a.body.scrollLeft; }获取页面scrollTopfunction getPageScrollTop() { var a = document; return a.documentElement.scrollTop || a.body.scrollTop; }获取页面可视高度function getPageViewHeight() { var d = document, a = d.compatMode == "BackCompat" ? d.body : d.documentElement; return a.clientHeight; }获取页面可视宽度function getPageViewWidth() { var d = document, a = d.compatMode == "BackCompat" ? d.body : d.documentElement; return a.clientWidth; }获取页面宽度function getPageWidth() { var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat" ? a : g.documentElement; return Math.max(f.scrollWidth, a.scrollWidth, d.clientWidth); }获取移动设备屏幕宽度function getScreenWidth() { var smallerSide = Math.min(screen.width, screen.height); var fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport; var fixViewPortsExperimentRunning = fixViewPortsExperiment && fixViewPortsExperiment.toLowerCase() === "new"; if (fixViewPortsExperiment) { if (this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()) { smallerSide = smallerSide / window.devicePixelRatio; } } return smallerSide; }获取网页被卷去的位置function getScrollXY() { return document.body.scrollTop ? { x: document.body.scrollLeft, y: document.body.scrollTop } : { x: document.documentElement.scrollLeft, y: document.documentElement.scrollTop }; }获取URL上的参数// 获取URL中的某参数值,不区分大小写 // 获取URL中的某参数值,不区分大小写, // 默认是取'hash'里的参数, // 如果传其他参数支持取‘search’中的参数 // @param {String} name 参数名称 export function getUrlParam(name, type = "hash") { let newName = name, reg = new RegExp("(^|&)" + newName + "=([^&]*)(&|$)", "i"), paramHash = window.location.hash.split("?")[1] || "", paramSearch = window.location.search.split("?")[1] || "", param; type === "hash" ? (param = paramHash) : (param = paramSearch); let result = param.match(reg); if (result != null) { return result[2].split("/")[0]; } return null; }检验URL链接是否有效function getUrlState(URL) { var xmlhttp = new ActiveXObject("microsoft.xmlhttp"); xmlhttp.Open("GET", URL, false); try { xmlhttp.Send(); } catch (e) { } finally { var result = xmlhttp.responseText; if (result) { if (xmlhttp.Status == 200) { return true; } else { return false; } } else { return false; } } }获取窗体可见范围的宽与高function getViewSize() { var de = document.documentElement; var db = document.body; var viewW = de.clientWidth == 0 ? db.clientWidth : de.clientWidth; var viewH = de.clientHeight == 0 ? db.clientHeight : de.clientHeight; return Array(viewW, viewH); }获取移动设备最大化大小function getZoom() { var screenWidth = Math.abs(window.orientation) === 90 ? Math.max(screen.height, screen.width) : Math.min(screen.height, screen.width); if (this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()) { screenWidth = screenWidth / window.devicePixelRatio; } var FixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport; var FixViewPortsExperimentRunning = FixViewPortsExperiment && (FixViewPortsExperiment === "New" || FixViewPortsExperiment === "new"); if (FixViewPortsExperimentRunning) { return screenWidth / window.innerWidth; } else { return screenWidth / document.body.offsetWidth; } }判断是否安卓移动设备访问function isAndroidMobileDevice() { return /android/i.test(navigator.userAgent.toLowerCase()); }判断是否苹果移动设备访问function isAppleMobileDevice() { return /iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()); }判断是否为数字类型function isDigit(value) { var patrn = /^[0-9]*$/; if (patrn.exec(value) == null || value == "") { return false; } else { return true; } }是否是某类手机型号// 用devicePixelRatio和分辨率判断 const isIphonex = () => { // X XS, XS Max, XR const xSeriesConfig = [ { devicePixelRatio: 3, width: 375, height: 812 }, { devicePixelRatio: 3, width: 414, height: 896 }, { devicePixelRatio: 2, width: 414, height: 896 } ]; // h5 if (typeof window !== "undefined" && window) { const isIOS = /iphone/gi.test(window.navigator.userAgent); if (!isIOS) return false; const { devicePixelRatio, screen } = window; const { width, height } = screen; return xSeriesConfig.some( item => item.devicePixelRatio === devicePixelRatio && item.width === width && item.height === height ); } return false; };判断是否移动设备function isMobile() { if (typeof this._isMobile === "boolean") { return this._isMobile; } var screenWidth = this.getScreenWidth(); var fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport; var fixViewPortsExperimentRunning = fixViewPortsExperiment && fixViewPortsExperiment.toLowerCase() === "new"; if (!fixViewPortsExperiment) { if (!this.isAppleMobileDevice()) { screenWidth = screenWidth / window.devicePixelRatio; } } var isMobileScreenSize = screenWidth < 600; var isMobileUserAgent = false; this._isMobile = isMobileScreenSize && this.isTouchScreen(); return this._isMobile; }判断是否手机号码function isMobileNumber(e) { var i = "134,135,136,137,138,139,150,151,152,157,158,159,187,188,147,182,183,184,178", n = "130,131,132,155,156,185,186,145,176", a = "133,153,180,181,189,177,173,170", o = e || "", r = o.substring(0, 3), d = o.substring(0, 4), s = !!/^1\d{10}$/.test(o) && (n.indexOf(r) >= 0 ? "联通" : a.indexOf(r) >= 0 ? "电信" : "1349" == d ? "电信" : i.indexOf(r) >= 0 ? "移动" : "未知"); return s; }判断是否是移动设备访问function isMobileUserAgent() { return /iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test( window.navigator.userAgent.toLowerCase() ); }判断鼠标是否移出事件function isMouseOut(e, handler) { if (e.type !== "mouseout") { return false; } var reltg = e.relatedTarget ? e.relatedTarget : e.type === "mouseout" ? e.toElement : e.fromElement; while (reltg && reltg !== handler) { reltg = reltg.parentNode; } return reltg !== handler; }判断是否Touch屏幕function isTouchScreen() { return ( "ontouchstart" in window || (window.DocumentTouch && document instanceof DocumentTouch) ); }判断是否为网址function isURL(strUrl) { var regular = /^\b(((https?|ftp):\/\/)?[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|aero|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:\@&?=+,.!\/~%\$]*)?)$/i; if (regular.test(strUrl)) { return true; } else { return false; } }判断是否打开视窗function isViewportOpen() { return !!document.getElementById("wixMobileViewport"); }加载样式文件function loadStyle(url) { try { document.createStyleSheet(url); } catch (e) { var cssLink = document.createElement("link"); cssLink.rel = "stylesheet"; cssLink.type = "text/css"; cssLink.href = url; var head = document.getElementsByTagName("head")[0]; head.appendChild(cssLink); } }替换地址栏function locationReplace(url) { if (history.replaceState) { history.replaceState(null, document.title, url); history.go(0); } else { location.replace(url); } }解决offsetX兼容性问题// 针对火狐不支持offsetX/Y function getOffset(e) { var target = e.target, // 当前触发的目标对象 eventCoord, pageCoord, offsetCoord; // 计算当前触发元素到文档的距离 pageCoord = getPageCoord(target); // 计算光标到文档的距离 eventCoord = { X: window.pageXOffset + e.clientX, Y: window.pageYOffset + e.clientY }; // 相减获取光标到第一个定位的父元素的坐标 offsetCoord = { X: eventCoord.X - pageCoord.X, Y: eventCoord.Y - pageCoord.Y }; return offsetCoord; } function getPageCoord(element) { var coord = { X: 0, Y: 0 }; // 计算从当前触发元素到根节点为止, // 各级 offsetParent 元素的 offsetLeft 或 offsetTop 值之和 while (element) { coord.X += element.offsetLeft; coord.Y += element.offsetTop; element = element.offsetParent; } return coord; }打开一个窗体通用方法function openWindow(url, windowName, width, height) { var x = parseInt(screen.width / 2.0) - width / 2.0; var y = parseInt(screen.height / 2.0) - height / 2.0; var isMSIE = navigator.appName == "Microsoft Internet Explorer"; if (isMSIE) { var p = "resizable=1,location=no,scrollbars=no,width="; p = p + width; p = p + ",height="; p = p + height; p = p + ",left="; p = p + x; p = p + ",top="; p = p + y; retval = window.open(url, windowName, p); } else { var win = window.open( url, "ZyiisPopup", "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,modal=yes,width=" + width + ",height=" + height + ",resizable=no" ); eval("try { win.resizeTo(width, height); } catch(e) { }"); win.focus(); } }将键值对拼接成URL带参数export default const fnParams2Url = obj=> { let aUrl = [] let fnAdd = function(key, value) { return key + '=' + value } for (var k in obj) { aUrl.push(fnAdd(k, obj[k])) } return encodeURIComponent(aUrl.join('&')) }去掉url前缀function removeUrlPrefix(a) { a = a .replace(/:/g, ":") .replace(/./g, ".") .replace(///g, "/"); while ( trim(a) .toLowerCase() .indexOf("http://") == 0 ) { a = trim(a.replace(/http:\/\//i, "")); } return a; }替换全部String.prototype.replaceAll = function(s1, s2) { return this.replace(new RegExp(s1, "gm"), s2); };resize的操作(function() { var fn = function() { var w = document.documentElement ? document.documentElement.clientWidth : document.body.clientWidth, r = 1255, b = Element.extend(document.body), classname = b.className; if (w < r) { //当窗体的宽度小于1255的时候执行相应的操作 } else { //当窗体的宽度大于1255的时候执行相应的操作 } }; if (window.addEventListener) { window.addEventListener("resize", function() { fn(); }); } else if (window.attachEvent) { window.attachEvent("onresize", function() { fn(); }); } fn(); })();滚动到顶部// 使用document.documentElement.scrollTop 或 document.body.scrollTop 获取到顶部的距离,从顶部 // 滚动一小部分距离。使用window.requestAnimationFrame()来滚动。 // @example // scrollToTop(); function scrollToTop() { var c = document.documentElement.scrollTop || document.body.scrollTop; if (c > 0) { window.requestAnimationFrame(scrollToTop); window.scrollTo(0, c - c / 8); } }设置cookie值function setCookie(name, value, Hours) { var d = new Date(); var offset = 8; var utc = d.getTime() + d.getTimezoneOffset() * 60000; var nd = utc + 3600000 * offset; var exp = new Date(nd); exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000); document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=360doc.com;"; }设为首页function setHomepage() { if (document.all) { document.body.style.behavior = "url(#default#homepage)"; document.body.setHomePage("http://w3cboy.com"); } else if (window.sidebar) { if (window.netscape) { try { netscape.security.PrivilegeManager.enablePrivilege( "UniversalXPConnect" ); } catch (e) { alert( "该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true" ); } } var prefs = Components.classes[ "@mozilla.org/preferences-service;1" ].getService(Components.interfaces.nsIPrefBranch); prefs.setCharPref("browser.startup.homepage", "http://w3cboy.com"); } }按字母排序,对每行进行数组排序function setSort() { var text = K1.value .split(/[\r\n]/) .sort() .join("\r\n"); //顺序 var test = K1.value .split(/[\r\n]/) .sort() .reverse() .join("\r\n"); //反序 K1.value = K1.value != text ? text : test; }延时执行// 比如 sleep(1000) 意味着等待1000毫秒,还可从 Promise、Generator、Async/Await 等角度实现。 // Promise const sleep = time => { return new Promise(resolve => setTimeout(resolve, time)); }; sleep(1000).then(() => { console.log(1); }); // Generator function* sleepGenerator(time) { yield new Promise(function(resolve, reject) { setTimeout(resolve, time); }); } sleepGenerator(1000) .next() .value.then(() => { console.log(1); }); //async function sleep(time) { return new Promise(resolve => setTimeout(resolve, time)); } async function output() { let out = await sleep(1000); console.log(1); return out; } output(); function sleep(callback, time) { if (typeof callback === "function") { setTimeout(callback, time); } } function output() { console.log(1); } sleep(output, 1000);判断是否以某个字符串开头String.prototype.startWith = function(s) { return this.indexOf(s) == 0; };清除脚本内容function stripscript(s) { return s.replace(/<script.*?>.*?<\/script>/gi, ""); }时间个性化输出功能/* 1、< 60s, 显示为“刚刚” 2、>= 1min && < 60 min, 显示与当前时间差“XX分钟前” 3、>= 60min && < 1day, 显示与当前时间差“今天 XX:XX” 4、>= 1day && < 1year, 显示日期“XX月XX日 XX:XX” 5、>= 1year, 显示具体日期“XXXX年XX月XX日 XX:XX” */ function timeFormat(time) { var date = new Date(time), curDate = new Date(), year = date.getFullYear(), month = date.getMonth() + 10, day = date.getDate(), hour = date.getHours(), minute = date.getMinutes(), curYear = curDate.getFullYear(), curHour = curDate.getHours(), timeStr; if (year < curYear) { timeStr = year + "年" + month + "月" + day + "日 " + hour + ":" + minute; } else { var pastTime = curDate - date, pastH = pastTime / 3600000; if (pastH > curHour) { timeStr = month + "月" + day + "日 " + hour + ":" + minute; } else if (pastH >= 1) { timeStr = "今天 " + hour + ":" + minute + "分"; } else { var pastM = curDate.getMinutes() - minute; if (pastM > 1) { timeStr = pastM + "分钟前"; } else { timeStr = "刚刚"; } } } return timeStr; }全角转换为半角函数function toCDB(str) { var result = ""; for (var i = 0; i < str.length; i++) { code = str.charCodeAt(i); if (code >= 65281 && code <= 65374) { result += String.fromCharCode(str.charCodeAt(i) - 65248); } else if (code == 12288) { result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32); } else { result += str.charAt(i); } } return result; }半角转换为全角函数function toDBC(str) { var result = ""; for (var i = 0; i < str.length; i++) { code = str.charCodeAt(i); if (code >= 33 && code <= 126) { result += String.fromCharCode(str.charCodeAt(i) + 65248); } else if (code == 32) { result += String.fromCharCode(str.charCodeAt(i) + 12288 - 32); } else { result += str.charAt(i); } } return result; }金额大写转换函数function transform(tranvalue) { try { var i = 1; var dw2 = new Array("", "万", "亿"); //大单位 var dw1 = new Array("拾", "佰", "仟"); //小单位 var dw = new Array( "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" ); //整数部分用 //以下是小写转换成大写显示在合计大写的文本框中 //分离整数与小数 var source = splits(tranvalue); var num = source[0]; var dig = source[1]; //转换整数部分 var k1 = 0; //计小单位 var k2 = 0; //计大单位 var sum = 0; var str = ""; var len = source[0].length; //整数的长度 for (i = 1; i <= len; i++) { var n = source[0].charAt(len - i); //取得某个位数上的数字 var bn = 0; if (len - i - 1 >= 0) { bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字 } sum = sum + Number(n); if (sum != 0) { str = dw[Number(n)].concat(str); //取得该数字对应的大写数字,并插入到str字符串的前面 if (n == "0") sum = 0; } if (len - i - 1 >= 0) { //在数字范围内 if (k1 != 3) { //加小单位 if (bn != 0) { str = dw1[k1].concat(str); } k1++; } else { //不加小单位,加大单位 k1 = 0; var temp = str.charAt(0); if (temp == "万" || temp == "亿") //若大单位前没有数字则舍去大单位 str = str.substr(1, str.length - 1); str = dw2[k2].concat(str); sum = 0; } } if (k1 == 3) { //小单位到千则大单位进一 k2++; } } //转换小数部分 var strdig = ""; if (dig != "") { var n = dig.charAt(0); if (n != 0) { strdig += dw[Number(n)] + "角"; //加数字 } var n = dig.charAt(1); if (n != 0) { strdig += dw[Number(n)] + "分"; //加数字 } } str += "元" + strdig; } catch (e) { return "0元"; } return str; } //拆分整数与小数 function splits(tranvalue) { var value = new Array("", ""); temp = tranvalue.split("."); for (var i = 0; i < temp.length; i++) { value = temp; } return value; }清除空格String.prototype.trim = function() { var reExtraSpace = /^\s*(.*?)\s+$/; return this.replace(reExtraSpace, "$1"); }; // 清除左空格 function ltrim(s) { return s.replace(/^(\s*| *)/, ""); } // 清除右空格 function rtrim(s) { return s.replace(/(\s*| *)$/, ""); }随机数时间戳function uniqueId() { var a = Math.random, b = parseInt; return ( Number(new Date()).toString() + b(10 * a()) + b(10 * a()) + b(10 * a()) ); }##实现utf8解码function utf8_decode(str_data) { var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0; str_data += ""; while (i < str_data.length) { c1 = str_data.charCodeAt(i); if (c1 < 128) { tmp_arr[ac++] = String.fromCharCode(c1); i++; } else if (c1 > 191 && c1 < 224) { c2 = str_data.charCodeAt(i + 1); tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = str_data.charCodeAt(i + 1); c3 = str_data.charCodeAt(i + 2); tmp_arr[ac++] = String.fromCharCode( ((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63) ); i += 3; } } return tmp_arr.join(""); }
2021年04月18日
1,377 阅读
0 评论
6 点赞
2021-01-26
emlog底部导航+样式代码
底部html下方的代码扔到正在使用的模板footer.php 位置自己看着来<nav class="m-menubar"> <ul> <li id="menu-item" class="menu-item"><a href="<?php echo BLOG_URL; ?>"><i class="fa fa-home"></i> 首页</a></li> <li id="menu-item" class="menu-item menu-item-has-children"><a><i class="fa fa-paper-plane-o"></i> 文章分类</a> <ul class="sub-menu"> <?php blog_navid();?> </ul> </li> <li class="menu-item menu-item-has-children"> <a href="/" ><i class="fa fa-shopping-bag"></i>在线商城</a> </li> <li class="menu-item menu-item-has-children"> <a><i class="fa fa-weixin"></i>站长微信</a> <div class="sub-menu"> <div class="menuwhact"><img src="<?php echo $Tconfig["weixinimg"];?>"></div> <div class="tanc_ico"> <p class="lianxi_p"><span class="fa fa-weixin"></span><?php echo $Tconfig["weixinname"];?></p> </div> </div> </li> <li class="menu-item menu-item-has-children" > <a><i class="fa fa-userfa fa-user"></i>用户中心</a> <div class="sub-menu"> <div class="m_menubar"> <h4>这里的东西自己想象!</h4> <a href="javascript:;">这里的东西自己想象</a> </div> </div> </li> </ul> </nav>底部php下面代码扔到正在使用模板的module.php<?php //blog:底部导航 function blog_navid(){ global $CACHE; global $Tconfig; $navi_cache = $CACHE->readCache('navi'); foreach($navi_cache as $value): $id=$value["id"]; if ($value['pid'] != 0) { continue; } $newtab = $value['newtab'] == 'y' ? 'target="_blank"' : ''; $value['url'] = $value['isdefault'] == 'y' ? BLOG_URL . $value['url'] : trim($value['url'], '/'); //$current_tab = BLOG_URL . trim(Dispatcher::setPath(), '/') == $value['url'] ? 'active' : ''; ?> <li id="menu-item" class=">menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item" > <a href="<?php echo $value['url']; ?>" <?php echo $newtab;?>> <?php if(empty($Tconfig['arr_navico'][$id])) {echo $value['naviname'];}else {echo "<i class='".$Tconfig['arr_navico'][$id]."'></i> ".$value['naviname']."";} ?> <?php if (!empty($value['children']) || !empty($value['childnavi'])) :?> <?php endif;?> </a> </li> <?php endforeach; ?> <?php if($Tconfig['more']== 1 ){?> <?php echo $Tconfig['more_html'];?> <?php }?> <?php }?>底部jsjs扔到你的全局js文件里面// 手机端登入 $(".m-menubar li.menu-item-has-children").on("click", function() { $(this).toggleClass("active").siblings().removeClass("active") }); $('.m-user').on('click', function(){ jsui.bd.addClass('m-wel-on') $('.m-mask').show() }) $('.m-mask').on('click', function(){ $(this).hide() jsui.bd.removeClass('m-wel-on') }) $('.m-wel-content ul a').on('click', function(){ $('.m-mask').hide() jsui.bd.removeClass('m-wel-on') }) $('.m-icon-nav').on('click', function(){ jsui.bd.addClass('m-nav-show') $('.m-mask').show() jsui.bd.removeClass('search-on') $('.search-show .fa').removeClass('fa-remove') }) $('.m-mask').on('click', function(){ $(this).hide() jsui.bd.removeClass('m-nav-show') })底部csscss代码扔到你的全局css文件里面其实下面的css有多大部分是多余的代码 但是懒得删了 凑合用把/*手机端登入*/ .minicat-btn{text-align:center;padding:15px 0;background:#f6f6f6} .m-menubar{display:none;z-index:9990;position:fixed;bottom:0;left:0;right:0;height:55px;background-color:#fff;box-shadow:0 0 10px rgba(37,45,51,.1)} .m-menubar:before{content:'1';color:transparent;position:absolute;left:0;top:0;width:100%;height:1px;background-color:rgba(0,0,0,.1);display:block;overflow:hidden;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)} .m-menubar ul{display:flex;text-align:center;padding:0} .m-menubar .active .sub-menu{visibility:inherit;opacity:1} .m-menubar .sub-menu{position:fixed;top:auto;bottom:55px;left:0;right:0;margin:0;width:100%;background-color:#fff;color:#555;padding:15px;font-size:14px;font-weight:700;height:auto;box-shadow:0 -15px 15px rgba(0,0,0,.2);display:block;visibility:hidden;opacity:0;-webkit-transition:all .25s ease-in;-moz-transition:all .25s ease-in;transition:all .25s ease-in} .m-menubar .sub-menu .menu-item{margin:1%;font-size:12px;padding:5px 15px;background-color:#f6f6f6;color:#888;font-weight:100;width:31.333%;float:left} .m-menubar .menu-item{flex:1;text-align:center;font-size:12px} .m-menubar .menu-item i.fa{display:block;font-size:22px;margin-bottom:3px;margin-top:8px;font-weight:400} .menubar_header,.menubar_usermenu{padding-bottom:10px;text-align:initial;display:-webkit-flex;padding:0;width:100%;flex-wrap:wrap;margin:10px 0} .menubar_usermenu li{display:block;width:23%;font-weight:100;margin:1%;background:#f6f6f6;padding-bottom:8px;font-size:12px} .menubar_top{text-align:left;padding:0 0 0 60px;display:block;width:60%} .menubar_right{text-align:right;display:block;width:40%;font-size:1px;font-weight:100} .mendown{font-size:12px} .menubar_down{display:inline-block;background:#ddebff;margin-left:4px;padding:0 4px;border-radius:5px;color:#5c84bf;margin-bottom:8px} .menubar_right .btn{display:inline-block;margin-bottom:8px} .menubar_top .avatar{-webkit-border-radius:50%;border-radius:50%;width:60px;border:2px solid #f6f9fa;padding:5px;float:left;margin-left:-65px;height:60px} .menubar_top h4{padding-top:13px;margin:0 0 8px;font-size:15px;line-height:1;font-weight:700} .menubar_top h5{margin:0;font-size:13px;line-height:1;color:#999} .menuwhact{padding:10px} .menuwhact img{width:50%} .m-nav-show .m-navbar{left:0} .article-meta .item-bianlan{display:none} .m-navbar ul{padding:0} .m-navbar li{margin-left:0;position:relative;width:100%;float:left} .current-menu-item a{color:#4ba7fd!important} .m-navbar .sub-menu{position:relative;padding:0 15px} .m-navbar .sub-menu li{float:left;width:46%;margin-right:4%;margin-bottom:10px;text-align:center} .m-navbar .fa{width:18px;display:inline-block;text-align:center} .m-navbar li a{display:block;font-size:14px;font-weight:700;color:#4e585a;border-bottom:1px solid rgba(255,255,255,.04);padding:8px 15px} .m-navbar li a:hover,.m-navbar li:hover>a{color:#45b6f7} .m-navbar .sub-menu li a{font-size:12px;padding:8px 15px;background-color:#f6f9fa;color:#888;font-weight:inherit} .m-navbar .sub-menu li a:hover{background-color:#eee} .m-navbar li.menu-item-has-children .faa{content:'';position:absolute;right:15px;top:0;font-size:15px;margin:0;padding:6px 15px;z-index:2;cursor:pointer;display:block;width:auto;color:#585858} @media(max-width:720px){.asb-post-footer{margin-bottom:20px} .m-mask{background-color:rgba(0,0,0,.5)} .m-wel-start{display:block;position:absolute;top:0;right:0;height:48px;padding:23px 20px 0;font-size:14px;line-height:1;-webkit-transition-duration:.6s;transition-duration:.6s;z-index:91;color:#fff;cursor:pointer} .m-navbar-on{position:fixed;top:0;left:0;right:0;bottom:0;overflow:hidden;-webkit-transform:translateX(80%);transform:translateX(80%)} .m-navbar-on .m-mask{opacity:1;visibility:visible} .m-navbar-on .m-navbar-start{left:-80%;color:#4e585a} .m-wel{display:block;position:fixed;top:0;left:100%;bottom:0;width:70%;padding:50px 0 0;z-index:90;font-size:12px;background-color:#fff} .m-wel header{text-align:left;padding:0 30px 0 120px} .m-wel header .avatar{-webkit-border-radius:50%;border-radius:50%;width:50px;border:1px solid #f6f9fa;padding:5px;float:left;margin-left:-65px} .m-wel header h4{padding-top:10px;margin:0 0 8px;font-size:12px;line-height:1;font-weight:700} .m-wel header h5{margin:0;font-size:12px;line-height:1;color:#999} .m-wel footer{text-align:center;position:absolute;bottom:0;right:0;left:0} .m-wel footer a{display:block;line-height:60px;color:#555;background-color:#fbfbfb} .m-wel footer a:hover{background-color:#eceeef;color:#4e585a} .m-wel .m-wel-content{overflow-y:auto;-webkit-overflow-scrolling:touch;position:absolute;top:130px;left:0;bottom:60px;right:0;font-size:14px;text-align:left;padding:0} .m-wel .m-wel-content ul{margin:0;padding:0;list-style:0} .m-wel .m-wel-content ul a{padding:10px 0 10px 65px;line-height:1.4;display:block;color:#999;-webkit-border-radius:2px;border-radius:2px} .m-wel .m-wel-content ul a:hover{background-color:#f6f9fa;color:#4e585a} .m-wel .m-wel-login{text-align:center;margin-top:30%} .m-wel .m-wel-login .avatar{display:block;margin:0 auto 30px;width:50px;-webkit-border-radius:50%;border-radius:50%} .m-wel .m-wel-login a{display:block;margin:0 60px 15px;padding:12px 15px;-webkit-border-radius:2px;border-radius:2px} .m-wel .m-wel-login a.m-wel-login{color:#fff;background-color:#0ae} .m-wel .m-wel-login a.m-wel-login:hover{background-color:#0098d5} .m-wel .m-wel-login a.m-wel-register{background-color:#f6f9fa} .m-wel .m-wel-login a.m-wel-register:hover{background-color:#eceeef} .m-wel-on{position:fixed;top:0;left:0;right:0;bottom:0;overflow:hidden;-webkit-transform:translateX(-80%);transform:translateX(-80%);-webkit-transform:translateX(-70%);transform:translateX(-70%)} .m-menubar{display:block} }
2021年01月26日
1,649 阅读
0 评论
10 点赞
2021-01-26
给emlog主题添加统计栏目代码及教程
给emlog主题添加统计栏目代码及教程最近很多大佬都在问,那个统计代码怎么放,我怎么放了没有用呀,听到这些,我也不想说了,下面直接给你们丢代码,喜欢花里胡哨的站长你们要的东西它来了。……首页调用代码,这里我用的是fee主题,那么直接丢到log_list.php文件里头,当然也有人会问具体丢哪里,因为有很多那种刚玩网站的”大佬”不知道加哪里,然而加了把网站也打不开的那种,只要记住代码丢<?php }?>后面基本会没错,具体放入位置,个人喜欢吧<!--统计栏目--> <div class="tpt-wp cl"> <ul> <li class="tpt-md-4"><div class="tpt-cm"> <i class="layui-icon fa fa-folder-open-o" style="font-size: 20px; color: #e4ad85;vertical-align: middle; margin: 0px 3px;"></i>文章资源 <font color="#03f"><?php echo $sta_cache['lognum']; ?></font> 篇</div> </li> <li class="tpt-md-4"><div class="tpt-cm"> <i class="layui-icon fa fa-commenting-o" style="font-size: 20px; color: #27c24c;vertical-align: middle; margin: 0px 3px;"></i>评论回复 <font color="#03f"><?php echo $sta_cache['comnum_all']; ?></font> 次</div> </li> <li class="tpt-md-4"><div class="tpt-cm"> <i class="layui-icon fa fa-user-o" style="font-size: 20px; color: #23b7e5;vertical-align: middle; margin: 0px 3px;"></i>网站用户 <font color="#03f"><?php echo count_user_all();?> </font>位</div> </li> <li class="tpt-md-4"><div class="tpt-cm"> <i class="layui-icon fa fa-history" style="font-size: 20px; color: #7266ba;vertical-align: middle; margin: 0px 3px;"></i>最后更新 <font color="#ff0000"><?php echo last_post_log();?></font></a ></div> </li> </ul> </div>module.php文件添加以下代码,前台调用,具体你想调用哪些还是个人喜欢。<?php //统计文章总数 function count_log_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "blog WHERE type = 'blog'"); return $data['total']; } //置顶文章数 function count_log_top(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "blog WHERE top = 'y' or sortop = 'y' AND type = 'blog'"); return $data['total']; } //隐藏文章数 function count_log_hide(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "blog WHERE hide = 'y' AND type = 'blog'"); return $data['total']; } //未审核文章数 function count_log_check(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "blog WHERE checked = 'n' AND type = 'blog'"); return $data['total']; } //加密文章数 function count_log_pass(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "blog WHERE password !='' AND type = 'blog'"); return $data['total']; } //统计页面总数 function count_page_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "blog WHERE type = 'page'"); return $data['total']; } //统计评论总数 function count_com_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "comment"); return $data['total']; } //统计友链总数 function count_link_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "link"); return $data['total']; } //统计微语评论总数 function count_treply_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "reply"); return $data['total']; } //统计分类总数 function count_sort_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "sort"); return $data['total']; } //统计子分类数 function count_sort_mod(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "sort WHERE pid != 0"); return $data['total']; } //统计标签总数 function count_tag_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "tag"); return $data['total']; } //统计微语总数 function count_tw_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "twitter"); return $data['total']; } //统计用户总数 function count_user_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "user"); return $data['total']; } //统计管理员总数 function count_user_admin(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "user WHERE role = 'admin'"); return $data['total']; } //统计作者总数 function count_user_writer(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "user WHERE role = 'writer'"); return $data['total']; } //统计附件总数 function count_att_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "attachment"); return $data['total']; } //最后发表文章时间 function last_post_log(){ $db = MySql::getInstance(); $sql = "SELECT * FROM " . DB_PREFIX . "blog WHERE type='blog' ORDER BY date DESC LIMIT 0,1"; $res = $db->query($sql); $row = $db->fetch_array($res); $date = date('Y-n-j H:i',$row['date']); return $date; }; ?>CSS部分/*统计栏目*/ .new-content {margin-top: 5px;} .tpt-wp{margin:0 auto;width:100%}.tpt-cm{color: #333;text-align: center;background: #FFF;height: 60px;line-height: 60px; border: 1px solid #eaeaea;}.tpt-md-4{float:left}.tpt-md-3{float:left}.tpt-md-2{float:left}.tpt-md-1{width:100%} @media only screen and (max-width:767px){.tpt-md-4{width:50%}.tpt-md-3{width:100%}.tpt-md-2{width:100%}.tpt-ml-3{display:none}.tpt-mr-3{display:none}.tpt-ml-7{width:100%}.tpt-mr-7{width:100%}} @media only screen and (min-width:768px) and (max-width:1023px){.tpt-md-4{width:50%}.tpt-md-3{width:50%}.tpt-md-2{width:50%}.tpt-ml-3{display:none}.tpt-mr-3{display:none}.tpt-ml-7{width:100%}.tpt-mr-7{width:100%}} @media only screen and (min-width:1024px) and (max-width:1199px){.tpt-md-4{width:33.33333333%}.tpt-md-3{width:33.33333333%}.tpt-md-2{width:50%}.tpt-ml-3{float:left;width:30%}.tpt-mr-3{float:right;width:30%}.tpt-ml-7{float:left;width:70%}.tpt-mr-7{float:right;width:70%}} @media only screen and (min-width:1200px){.tpt-md-4{width:25%}.tpt-md-3{width:33.33333333%}.tpt-md-2{width:50%}.tpt-ml-3{float:left;width:30%}.tpt-mr-3{float:right;width:30%}.tpt-ml-7{float:left;width:70%}.tpt-mr-7{float:right;width:70%}.tpt-wp{width:100%;margin:0 auto;}}
2021年01月26日
4,429 阅读
0 评论
9 点赞
1
...
5
6
7
...
17