• 向下箭头CSS样式

    发表于 2020-04-15 16:27:31   |   下载附件
    箭头向上箭头向下箭头arrow箭头样式

    HTML

    <div class="more up"><em>展开</em><u><i></i></u></div>


    CSS

    .more {
    	.font(b,14px,32px); float: right; cursor: pointer;
    	em { float: left; color: #333; margin-right:8px; font-weight:normal; }
    	u { 
    	    position: relative; display: block; width: 0; height: 0; float: left;
    	    margin-top: 14px;
    	    border-right: 6px solid transparent; 
    	    border-top: 7px solid #666; 
    	    border-left: 6px solid transparent; 
    	}
    	i { 
    	    position: absolute; display: block; left: -6px; bottom: 2px; width: 0; height: 0; 
    	    border-right: 6px solid transparent; 
    	    border-top: 7px solid #fff; 
    	    border-left: 6px solid transparent; 
    	}
    	&:hover {
    		em { color: #189AE5; }
    		u { border-top: 7px solid #189AE5; }
    	}
    	// 向上
    	&.up {
    		u { 
    		    border-bottom: 7px solid #666; 
    		    border-top: none; 
    		}
    		i { 
    			top: 2px; bottom: auto;
    		    border-bottom: 7px solid #fff; 
    		    border-top: none; 
    		}
    		&:hover {
    			em { color: #189AE5; }
    			u { border-bottom: 7px solid #189AE5; }
    		}
    	}
    }
  • 倒计时函数,距指定时间还有多少天多少小时多少分多少秒

    发表于 2020-03-24 11:06:29   |   下载附件
    倒计时距指定时间多少小时天时分秒倒计时
    // 倒计时函数
    countdown = function(timeStamp, secondFn, finishFn) {
        if (typeof timeStamp == 'undefined' || typeof timeStamp != 'number') return;
        var _secondFn = secondFn || function() {},
            _finishFn = finishFn || function() {},
            _timer,
            _timeStamp = timeStamp,
            _day,
            _hour,
            _minute,
            _second;
        function count() {
            _timeStamp = _timeStamp - 1;
            if (_timeStamp <= 0) {
                clearInterval(_timer);
                _day = _hour = _minute = _second = '00';
                _secondFn(_day, _hour, _minute, _second);
                _finishFn();
            }
            _day = Math.floor(_timeStamp / ( 3600 * 24 ));
            _hour = Math.floor((_timeStamp % ( 3600 * 24 )) / 3600);
            _minute = Math.floor((_timeStamp % 3600) / 60);
            _second = parseInt(_timeStamp) % 60;
            //补0
            _day = (_day < 10 ? '0' + _day : _day + '');
            _hour = (_hour < 10 ? '0' + _hour : _hour + '');
            _minute = (_minute < 10 ? '0' + _minute : _minute + '');
            _second = (_second < 10 ? '0' + _second : _second + '');
            _secondFn(_day, _hour, _minute, _second);
        }
        _timer = setInterval(count, 1000);
    };
  • 右侧固定代码(随页面滚动)

    发表于 2020-03-14 09:37:12   |   下载附件
    右侧固定左侧固定滚动页面右侧固定
    /**
     * 
     * @authors Your Name (you@example.org)
     * @date    2020-02-20 13:02:44
     * @version $Id$
     */
    
    // 谭子良 右侧固定代码优化
    // id 右侧固定容器
    // offsetBotton 底部固定位置
    function aFixedbottom(id, offsetBotton) {
    	var offsetBotton = offsetBotton || 0;
    	var objMarginLeft = 0;
    	var isIE6 = ($.browser.msie && $.browser.version == '6.0') ? true : false;
    	var Container = $('#' + id);
    
    	if (Container.length != 1) return 'fixedbottom不能正确获取id';
    
    	var initTop = Container.offset().top,
    		initHeight = Container.height(),
    		initWidth = Container.width(),
    		initOutWidth = Container.outerWidth(),
    		initWinH = $(window).height(),
    		initBodyH = $('body').height();
    
    	var Shadow = $('<div id="js_fixedbot_shadow"></div>').addClass(Container.attr('class')).height(initHeight).css({
    		'visibility': 'hidden',
    		'display': 'none'                                                                       
    	});
    	Container.after(Shadow);
    
    	//页面高度、侧边栏高度均达不到一屏高度的情况下,无需脚本处理
    	//if( initBodyH<=initWinH || initHeight<=initWinH ) return null;
    
    	var fixedFlag = false;
    	var triggerHeight;
    	objMarginLeft = 1000 - initOutWidth - 500;
    
    	this.setObjMarginLeft = function(wrapperWidth) {
    		wrapperWidth = wrapperWidth ? wrapperWidth : 1000;
    		objMarginLeft = wrapperWidth - initOutWidth - wrapperWidth / 2;
    	}
    
    	this.init = function() {
    		var that = this;
    		setInterval(function() {
    			var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    			var winH = $(window).height();
    			//临界值(触发高度)
    			if (!fixedFlag) {
    				triggerHeight = Container.height() + Container.offset().top - $(window).height() + offsetBotton;
    			}
    			if (scrollTop >= triggerHeight) {
    				fixedFlag = true;
    				if (!isIE6) {
    					Container.css({
    						'position': 'fixed',
    						'width': initWidth,
    						'top': 'auto',
    						'bottom': offsetBotton,
    						'left': '50%',
    						'marginLeft': objMarginLeft
    					});
    					Shadow.css('display', 'block');
    				}
    			} else {
    				fixedFlag = false;
    				if (!isIE6) {
    					Container.css({
    						'position': 'static',
    						'marginLeft': 0
    					})
    					Shadow.css('display', 'none');
    				}
    			}
    		}, 40);
    	}
    };
    
    // 右侧栏固定效果
    if ($('#adFix').length > 0) {
    	var Fixedbottom = new aFixedbottom('adFix',94);
    	Fixedbottom.init();
    }
    
    // --------------------------------------
    
    // 谭子良 右侧固定代码优化
    // id 右侧固定容器
    // offsetBotton 底部固定位置
    // endOffsetBotton 滚动条至页面底部时的最终 底部固定位置
    function aFixedbottom(id, offsetBotton,endOffsetBotton) {
    	var offsetBotton = offsetBotton || 0;
    	var objMarginLeft = 0;
    	var isIE6 = ($.browser.msie && $.browser.version == '6.0') ? true : false;
    	var Container = $('#' + id);
    
    	if (Container.length != 1) return 'fixedbottom不能正确获取id';
    
    	var initTop = Container.offset().top,
    		initHeight = Container.height(),
    		initWidth = Container.width(),
    		initOutWidth = Container.outerWidth(),
    		initWinH = $(window).height(),
    		initBodyH = $('body').height();
    
    	var Shadow = $('<div id="js_fixedbot_shadow"></div>').addClass(Container.attr('class')).height(initHeight).css({
    		'visibility': 'hidden',
    		'display': 'none'
    	});
    	Container.after(Shadow);
    
    	//页面高度、侧边栏高度均达不到一屏高度的情况下,无需脚本处理
    	//if( initBodyH<=initWinH || initHeight<=initWinH ) return null;
    
    	var fixedFlag = false;
    	var triggerHeight;
    	objMarginLeft = 1000 - initOutWidth - 500;
    
    	this.setObjMarginLeft = function(wrapperWidth) {
    		wrapperWidth = wrapperWidth ? wrapperWidth : 1000;
    		objMarginLeft = wrapperWidth - initOutWidth - wrapperWidth / 2;
    	}
    
    	this.init = function() {
    		var that = this;
    		setInterval(function() {
    			var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    			var winH = $(window).height();
    			//183为footer的高度
    			var contentHeight = $('body').height() - endOffsetBotton;
    			//临界值(触发高度)
    			if (!fixedFlag) {
    				triggerHeight = Container.height() + Container.offset().top - $(window).height() + offsetBotton;
    			}
    			if (scrollTop >= triggerHeight) {
    				fixedFlag = true;
    				if (!isIE6) {
    					if (scrollTop >= (contentHeight - winH + offsetBotton)) {
    						Container.css({
    							'position': 'absolute',
    							'width': initWidth,
    							'bottom': 'auto',
    							'top': contentHeight - Container.height(),
    							'left': '50%',
    							'marginLeft': objMarginLeft
    						});
    					} else {
    						Container.css({
    							'position': 'fixed',
    							'width': initWidth,
    							'top': 'auto',
    							'bottom': offsetBotton,
    							'left': '50%',
    							'marginLeft': objMarginLeft
    						});
    					}
    					Shadow.css('display', 'block');
    				}
    			} else {
    				fixedFlag = false;
    				if (!isIE6) {
    					Container.css({
    						'position': 'static',
    						'marginLeft': 0
    					})
    					Shadow.css('display', 'none');
    				}
    			}
    		}, 40);
    	}
    };
    
    // 右侧栏固定效果
    if ($('#adFix').length > 0) {
    	var Fixedbottom = new aFixedbottom('adFix',10,94);
    	Fixedbottom.init();
    }
  • IOS 手机浏览屏底部被挡住的CSS解决代码片断

    发表于 2019-11-30 22:50:06   |   下载附件
    ios padding浏览屏底部遮挡问题解决IOS 样式问题ios 移动样式

    IOS 手机浏览屏底部被挡住的CSS解决代码片断


    padding-top: env(safe-area-inset-top);
    padding-bottom: env(safe-area-inset-bottom);


  • 读取文件目录下的所有文件名称

    发表于 2019-11-13 10:02:40   |   下载附件
    读取目录下的文件遍历获取文件名称遍历打开文件遍历目录遍历文件
    /**
     * 得到目录下所有文件数组(仅是文件名)
     */
    function foreachDir($path){
        $fileArray = array();
        // 打开文件夹
        if( $handle=opendir($path) ){ 
            while ( false !== ($file = readdir($handle)) ) { 
                // 排除 当前目录  上级目录
                if( $file!="." && $file!='..'){ 
                    // 打开的是目录
                    if(is_dir($path.$file)){ 
                        foreachDir($path.$file);
                    // 打开的是文件
                    }else{
                        $fileArray[] = $file;
                    }
                } 
            } 
            return $fileArray; 
        } 
    }
    // 得到目录下所有文件数组(仅是文件名)
    $fileList = foreachDir('./textbooks');
  • phpQuery中文手册(更新中)

    发表于 2019-11-07 18:18:15   |   下载附件
    phpQueryphp采集php爬虫框架轻量级 PHP 派虫框架
  • validate 简易正则校验插件

    发表于 2019-10-16 19:36:44   |   下载附件
    validate正则校验表单校验表单提交校验rules 校验正则
    // 添加新规则
    validate.setConfig({
    	chinese: /.*[\u0391-\uFFE5].*$/
    })
    
    // 使用说明
    var userRules = {
        'old_password':[
            { rule:'required', message:'请输入旧密码' },
            { rule:'NumberOrEnglish', message:'旧密码必须是字线或数字'},
            { rule:'min:6', message:'旧密码不能低于6位长度' },
            { rule:'max:20', message:'旧密码不能超过20位长度'}
        ],
        'new_password':[
            { rule:'required', message:'请输入新密码' },
            { rule:'NumberOrEnglish', message:'新密码必须是字线或数字'},
            { rule:'min:6', message:'新密码不能低于6位长度' },
            { rule:'max:20', message:'新密码不能超过20位长度'}
        ],
    }
    
    // 所有校验不通过的错误
    var resultError = validate.test({old_password:'',new_password:''},userRules);
  • 在小程序中使用全局数据监听

    发表于 2019-09-25 09:37:09   |   下载附件
    小程序全局监听definePropertyObject.definePropertygetset
    // 全局可被监听数据
    watchData : {},
    
    // 对监听的属性进行操作,当值发现变更时
    watch: function (Name, method) {
        var obj = this.watchData;
        Object.defineProperty(obj, Name, {
            configurable: true, // 描述属性是否配置,以及可否删除
            enumerable: true,   // 描述属性是否会出现在for in 或者 Object.keys()的遍历中
            set: function (value) {
                this['__' + Name] = value;
                method(value);
            },
            get: function () {
                // 可以在这里打印一些东西,然后在其他界面调用getApp().GD.name的时候,这里就会执行。
                return this['__' + Name]
            }
        })
    },
  • Array.prototype.indexOf

    发表于 2019-09-17 17:51:24   |   下载附件
    Array.prototype.indexOf数组方法indexOf
    Array.prototype.indexOf = function(item) {
        for (var i = 0; i < this.length; i++) {
            if (this[i] == item) return i;
        }
        return -1;
    }
  • 一个CSS值转REM的Sublime Text插件

    发表于 2019-08-12 10:34:58   |   下载附件
    CSSREMcss转remcss转rem sublime text 插件
每页显示10条,当前为第2页,总页数为19页