美文网首页
开发之随手记

开发之随手记

作者: 溪离欣洛 | 来源:发表于2014-11-14 21:17 被阅读64次

类数组转换为数组

htmlcollection = document.getElementByTagName('tr');
htmlcollection = Array.prototype.slicestrong text.call(htmlcollection); 

重力感应事件

注意移动端和PC端的属性不相同,当重力感应事件 onorientationchange被触发时。
可以通过判断window.orientation来或得旋转的方向,但是在PC端当中,这个属性等同于
window.screen.orientation.type,并且不能如愿的区分各个方向,大多其值为landscape-promary。

window.onorientationchange = orientationChange;
function orientationChange(){
     switch(window.orientation){
         case 0:
             console.log('正常的');
             break;
         case 90:
             console.log('左转');
             break;
         case -90:
             console.log('右转');
             break;
         case 180:
             console.log('倒转');
             break;
     }
};

通过CSS设置设备转屏时的样式

<!--竖屏时使用的样式-->
<style media="all and (orientation:portrait)" type="text/css">
    #landscape { display: none; }
</style>

<!--横屏时使用的样式-->
<style media="all and (orientation:landscape)" type="text/css">
    #portrait { display: none; }
</style>

关于innerHTML

innerHTML在IE10以前不支持

<col><colgroup><frameset><head><html><style><table><tbody><thead><tfoot><tr>

所以可以使用以下方案解决

function setTBodyInnerHTML(tbody, html) {
   var div = document.createElement("div")
   div.innerHTML = "<table>" + html + "</table>";
   while (tbody.firstChild) {
    tbody.removeChild (tbody.firstChild)
   }
   tbody.appendChild (div.firstChild.firstChild)
}

关于inline-block的bug

display:inline-block

如此设置会导致元素现实上有多余空格,解决方案:把元素间空格省略,或者设置font-size为0

移动端滚动条缓冲

    -webkit-overflow-scrolling:touch; /* 核心代码 */

代码有效性

使用 W3C HTML Validator 来验证你的HTML代码有效性;
使用 W3C CSS Validator 来验证你的CSS代码有效性。

Css缩写

CSS文本:

font-style: italic;
font-weight: bold;
font-size: 30px;
line-height:50px;
font-family:arial,sans-serif;

font:italic bold 30px/50px arial,sans-serif;(有顺序) 

CSS背景:

background-color:#f00;
background-image:url(background.gif);
background-repeat:no-repeat;
background-attachment:fixed;
background-position:0 0;   

background:#f00 url(background.gif) no-repeat fixed 0 0; (无顺序)

JS自定义事件

var event = new Event('build');
// Listen for the event.
elem.addEventListener('build', function (e) { ... }, false);
// Dispatch the event.
elem.dispatchEvent(event);

touch事件

原生的touch事件是 touchStart、touchMove、touchEnd。
在写自定义的touch时间的时候 需要注意是否需要将事件冒泡到document上,将会导致document的偏移,因此 可以使用以下代码来阻止时间冒泡。

document.addEventListener('touchmove', function(e) {
    e.preventDefault();
});

关于如何理解Css动画透视

关于3D动画的容器设置 prespective 的值时,可以简单将其理解为三维坐标轴的原点 ,该值决定的是Z值,另两个值由 prespective-origin来决定,默认为容器的中心。
因此当确定透视点之后,所有元素沿Z轴的位移不能超过prespective的值,原因是默认屏幕为Z= 0的平面,设置prespective = x坐标原点变化后,屏幕为Z=x的平面,所有元素在Z轴上的位移超过x,在理论上将存在于屏幕的前方,所以无法在屏幕上显示。

关于动画的注意事项

prespective 相关的属性 要先于 rotateXTZ定义。否则无意义。

使用样式

所有样式使用class 与JS相关的 使用js-开头 用来与非功能性样式区分

表单验证

所有的文字内容需要转码 encodeURI进行转码

拨打电话

a标签的tel协议

    <a href='tel:18945000734'>my</a>

关于把数据强制转换为布尔值的最佳实践

    !!num

非零数据为true 0为false

使用 ~实现 indexof()==-1 转换为false
~取反 为在十进制中表现为 符号取反后减一 故此,-1取反变现为0 由此可以使用这种方式

    if(~'abc'.indexOf(b))console.log(ok)

setTimeOut() 和 clearTimeOut()使用

通常用于处理程序执行超时

    var setTime;
    window.clearTimeOut(setTime);
    var setTime = setTimeOut(function(){
        console.log('ok');
    },1000);

window.onload与document.DOMContentLoaded事件

window.onload需要等到所有全部加载完成,包括我们不想等待的图片加载。
document.DOMContentLoaded则是当所有DOM解析完以后会触发这个事件。
常见的库中都提供了此事件的兼容各个浏览器的封装,如果你是个jQuery使用者,你可能会经常使用$(document).ready();或者$(function(){}) 这都是使用了DOMContentLoaded事件

Css样式 加载顺序

不以class内写的顺序迭代,而是以CSS中写的顺序为准

图片加载

onload onerror 这个事件不冒泡

function loadImage(url, callback) {
    var img = new Image(); //创建一个Image对象,实现图片的预下载
    img.src = url;
     
    if(img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
        callback.call(img);
        return; // 直接返回,不用再处理onload事件
    }
    img.onload = function () { //图片下载完毕时异步调用callback函数。
        callback.call(img);//将回调函数的this替换为Image对象
    };
};

CSS动画结束触发的事件

webkitTransitionEnd

transition-property

PC上已经支持 transform ,手机端需要 使用 -webkit-transform

    -webkit-transform: translate3d(-1125px, 0px, 0px); 
    -webkit-transition: -webkit-transform 0.3s ease-in-out; 

关于min-height

即使父元素已经触发min-height,但是min-height子元素透明,子元素获取不到父元素的高,所以在响应式设计中需要注意的是尽量减少层级。

与此相同的还有 伸缩盒模型

关于垂直居中

    top:50%;
    transform: translatey(-50%);

translatey以百分比设置时,其基于元素本身大小进行计算。
同理 进行水平居中的时候

    top:50%;
    transform: translatex(-50%);

clac()

calc()使用通用的数学运算规则,但是也提供更智能的功能:

使用“+”“-”“*”“/”四则运算;
可以使用百分比、px、em、rem等单位;
可以混合使用各种单位进行计算。

浏览器支持

firefox 4.0+已经开支支持calc()功能,不过要使用-moz-calc()私有属性,chrome从19 dev版,也开始支持私有的-webkit-calc()写法,IE9这次则牛逼了一次,原生支持标准的不带前缀的写法了。Opera貌似还不支持~~

注意:
http://www.qianduan.net/calc-at-at-at-page-intelligent-layout.html看到的,他的原文中width:calc(100%-100px)是没有空格的,经测试无效,就像其评论中:calc()里面的表达式好像要注意格式。

事件

function swithcToTouchEvent(ori, pro){ 
    var TouchList = [{
        clientX : pro.clientX, 
        clientY : pro.clientY, 
        pageX : pro.pageX,
        pageY : pro.pageY,
        screenX : pro.screenX,
        screenY : pro.screenY,
        target : pro.target
    }];
    ori.changedTouches = TouchList; 
    ori.touches = TouchList;
    ori.targetTouches = TouchList;
    return ori;
}
mockTouchstart = document.createEvent('MouseEvents');
mockTouchstart.initEvent('touchstart',true,true);
frameDom.addEventListener('mousedown',function(e){
    window._mockTouchTarget = e.target;
    frameDom._touchstate = true;        e.target.dispatchEvent(swithcToTouchEvent(mockTouchstart,e));  
},false);
    

值得注意的是 creatEvent('MouseEvents'),MouseEvents.

图片格式的选择

能够满足透明需求的图片格式有 png和 gif。
gif的透明只提供全透明,对于半透明不知道。
对于图片中色彩跨度大的图片适用于jpg
对于图片中色彩较为单一png压缩比更高。
另有新兴图片格式webP,该格式不能处理透明。

获取css最终样式

    window.getComputedStyle(document.getElementById('name'))

此时取到的为计算后的样式 ,transform为矩阵方式表达的。

表单input包在label内

会扩大有效操作区域

css3 实现毛玻璃滤镜

-webkit-filter: blur(10px); /* Chrome, Opera */ -moz-filter: blur(10px); -ms-filter: blur(10px); filter: blur(10px);

相关文章

  • ReactiveCocoa相关

    随手记录: 1、iOS开发系列--Objective-C之KVC、KVO 2、ReactiveCocoa初探

  • 微信小程序开发手记和大众点评实战系列

    新手向!微信小程序开发手记系列: 微信小程序开发手记《一》:项目的代码结构微信小程序开发手记《二》:属性displ...

  • 开发之随手记

    类数组转换为数组 重力感应事件 注意移动端和PC端的属性不相同,当重力感应事件 onorientationchan...

  • 随拍,手记。

  • 恶意:上

    事件之章:野野口修的手记 疑惑之章:加贺恭一郎的记录 解决之章:野野口修的手记 探究之章:加贺恭一郎的独白 告白之...

  • 2017会计人调查报告

    日前,随手科技旗下国内用户量最大的记账理财App随手记、新兴的家庭及中小企业理财服务平台随管家联合金蝶集团旗下云之...

  • 洄游

    随流随流,志向远方,溯回游之,向心栖之。 随波随波,浪向远方,溯回游之,莲鱼戏之。 随汐随汐,我向远方,溯回游之,...

  • 34 开发手记

    一,class 与 static 的区别 二,初始化器 三,oc 与 swift 的区别 四,class与stru...

  • 人之初善

    人之初善 随境而变 人之自私 随性而固 人之自大 随功境喜 人之贪婪 随欲而求 人之狂妄 随暴而起 人之多变 随利而破

  • 关于时区的那点事

    php 学习笔记之关于时区的那点事_慕课手记

网友评论

      本文标题:开发之随手记

      本文链接:https://www.haomeiwen.com/subject/qylitttx.html