• 2018-03-19

    CSS禁止选中文本
    .noselect {
    -webkit-touch-callout: none; /* iOS Safari */
    -webkit-user-select: none; /* Chrome/Safari/Opera */
    -khtml-user-select: none; /* Konqueror */
    -moz-user-select: none; /* Firefox */
    -ms-user-select: none; /* Internet Explorer/Edge */
    user-select: none; /* Non-prefixed version, currently not supported by any browser */
    }
    在 IE < 10 和 Opera < 15中我们需要在需要禁止选中的元素上面添加一个属性
    unselectable="on",否则可能不会生效
  • 2018-01-24

    使用validate时报setDefaults未定义,
    1. 确定validate文件正确引用;
    2. 确定是否是因为不同版本的jq造成的;
    3. 用file_get_contents嵌入到页面的,获取地址的这个页面里不要用$().ready();会造成validate报错
  • 2017-11-02

    改变placeholder的字体颜色,
    input::-webkit-input-placeholder {color:#000;}
    input:-moz-placeholder {color:#000;}
    input::-moz-placeholder {color:#000;}
    input:-ms-input-placeholder {color:#000;}
  • 2017-10-03

    手机端scrolltop获取值总为0
    可以用window.onscroll或者window.addEventListener监听滑动。
    window.onscroll = function(){
    var scrolltop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
    alert(scrolltop);
    }
    或者
    window.addEventListener("onscroll",function(){
    var scrolltop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
    alert(scrolltop);
    })
    这样就会一直监听滑动事件
  • 2017-10-02

    范围随机数的获取
    <script>
    function getRandom(n,m){
    var c = m - n + 1;
    return Math.floor(Math.random() * c + n);
    }
    </script>
  • 2017-09-02

    animate scrolltop无效问题
    $("html,body").animate({"scrollTop":top})
  • 2017-09-01

    pre自适应
    pre{white-space: pre-wrap;word-wrap: break-word;}
    文字超出折行
    增加属性word-break: break-all;
    单行省略号
    overflow: hidden;text-overflow:ellipsis;white-space: nowrap;
    多行省略号
    overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;
    适用范围
    因使用了WebKit的CSS扩展属性,该方法适用于WebKit浏览器及移动端;
    多行省略号广适配
    p{position: relative; line-height: 20px; max-height: 40px;overflow: hidden;}
    p:after{content: "..."; position: absolute; bottom: 0; right: 0; padding-left: 40px;
    background: -webkit-linear-gradient(left, transparent, #fff 55%);
    background: -o-linear-gradient(right, transparent, #fff 55%);
    background: -moz-linear-gradient(right, transparent, #fff 55%);
    background: linear-gradient(to right, transparent, #fff 55%);
    }
    适用范围:
    该方法适用范围广,但文字未超出行的情况下也会出现省略号,可结合js优化该方法。
    注:
    1.将height设置为line-height的整数倍,防止超出的文字露出。
    2.给p::after添加渐变背景可避免文字只显示一半。
    3.由于ie6-7不显示content内容,所以要添加标签兼容ie6-7(如:<span>…<span/>)。
  • 2017-07-01

    浏览器兼容
    1.不同浏览器的标签默认margin和padding值是不同的,所以可以先重置浏览器默认样式再写自己的当时,可以借用一些现成的reset.css,不过要选合适点的。
    2.块元素float后有横向margin时,IE6下的双边距问题。(样式中加入display:inline,转为行内元素)
    3.行内元素设置display:block后采用float布局,有横向margin是IE6双边距问题。(在display:block后面再加上display:inline;display:table)
    4.设置最小高度标签(一般小于10px)IE6,IE7等高度超出设置高度。(给超出高度的标签设置overflow:hidden或设置行高小于自己设置的高度)
    5.图片默认的间距。(使用float可以去除间距)
    6.透明度属性。(IE下使用filter:alpha(opacity:50)滤镜,其他浏览器opacity:0.5)
    7.谷歌下字体小于12px,则按12px显示。(-webkit-text-size-adjust:none;或用css属性-webkit-transform:scale(0.8);)
    8.对button设置红色背景色,在苹果手机端会变成粉色。(在样式中加上
    input[type="button"],input[type="submit"],input[type="reset"]{-webkit-appearance:none;}
    textarea{-webkit-appearance;none;})
    9.background兼容性问题。(IE8下这种写法不支持
    background:url(xxx) no-repeat center \cover;应该分开写,background:url(xx) no-repeat;background-size:cover;)
    10.word-spacing对中文无效。(文字中间加空格就可以了)
  • 2017-07-04

    性能优化
    减少HTTP请求:比如合并图片,合并css样式和js文件,图片较多的页面可以使用图片懒加载等技术
    正确理解Repaint(重绘)和Reflow(重排):设置元素的宽高等属性会导致Repaint,所以最好通过class改变样式,有动画效果position属性应设置为fixed或absolute,这样不会影响其他布局,若不能则权衡速度与平滑性
    减少对DOM的操作:修改和访问DOM元素会造成页面的Repaint和Reflow,减少对DOM元素的查询和修改,查询时可将其赋给局部变量
    使用json格式来进行数据交换:json是一种轻量级的数据交换格式,同时json是JavaScript原生格式,JavaScript中处理json数据不需要任何特殊的API或工具包
    推荐使用CDN加速(内容分发网络):将css和js代码放到外部文件中应用,css放头,js放尾,</script>会让页面等待脚本的解析和执行,执行完成后才能继续渲染页面,建议把js代码放到</body>之前,既能有效阻止js的阻塞,又能使HTML结构更快的释放
    控制cookie大小和污染:cookie是本地磁盘文件,每次浏览器都会去响应的读取,所以建议去除不必要的cookie,合理的设置cookie的过期时间
  • 2017-06-01

    两列等高
    1.正内补丁和负外补丁(padding-bottom:1000px;margin-bottom:-1000px;),父元素overflow:hidden;
    2.利用JavaScript动态修正
    3.可以用表单table来等高
  • 2017-06-02

    垂直居中问题
    1.定宽高,left:0,right:0,top:0,bottom:0,margin:auto
    2.定宽高,width:1000px,height:100px,left:50%,top:50%,margin-left:-500px,margin-top:-50px
    3.不定宽高,父容器display:table,子容器display:table-cell,vertical-align:middel
  • 2017-06-03

    div下select宽度100%,input宽度100%,不对齐,原因是input的border导致的,可以修改border就可以了
  • 2017-06-04

    清除浮动
    1.增加空标签,
    2.利用伪类
    3.父容器设置overflow:hidden;属性
    注:元素同时用float和position:absolute时,清除浮动会有兼容问题,此时可以用1,3的办法
  • 2017-05-01

    <input type="text" onfocus="if(this.value == 'xxx'){this.value = 'sss';}" onblur="if(this.value == 'xxxx'){this.value = 'aaaa';}" />
    控制其样式:input{color:#777;} => input:focus{display:block;color:#000;}
  • 2017-05-02

    一般div错位:
    1.检查是否position:absolute后是否没设置高度
    2.检查float后是否没有清除浮动
    3.检查元素的z-index值,是否被覆盖
    4.检查是否用了iframe,iframe默认是撑不开父容器的
    5.检查div标签是否正确闭合
    6.absolute后top:20%无效,确认各父容器的height存在且正确
    7.float后位置不对也可能是各容器高度不一样导致的
    8.检查盒模型是否一致
  • 2017-05-03

    image加载错误时加载默认图片<img src="应该加载的图片地址" onerror="this.src='默认的图片加载地址'">
  • 2017-05-04

    一种左右结构的HTML
    两个标签均为块元素,然后浮动第一个,第二个overflow:hidden;这样就能左右排列,然后清除浮动,在父元素上overflow:hidden; 这样的结构主要避免后面元素内内容过多导致包裹的现象
返回顶部