iTakeo

页面自由滑动。

通常需要页面滑动都某个地方,比如返回底部,返回顶部,或者滑动到某个区域。调用接口如下:

//滑动到100的地方
jump.init(100);
//预定义top变量,返回到顶部
jump.init('top');
//预定义bottom变量,返回到底部
jump.init('bottom');
//某个元素的class或者id
jump.init('.item');
//或者传入某个dom
var div = document.getElementById('div1')
jump.init(div);
//另外还有两个配置项,第二个参数传入
jump.init(400,{
    mouse : true, //是否开启鼠标滚动干预,在滑动的时候如果滚动鼠标立即停止,默认true
    speed : 800  //滚动速度,默认800
});
//最后一个参数为回调函数,结束时执行
jump.init(400,function(){
    //jump.init('top')
});
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.

演示如下:

(更多…)

2015/12/30 2 / /
标签:  暂无标签

js对iframe的操作。


父窗口操作子窗口。

//通过contentWindow来获取到子窗口的window对象。
var _window = document.getElementById('ifm').contentWindow;
//有了window对象,就可以获取到任何元素
var _p = _window.document.getElementsByTagName('p');
//然后对元素进行操作
_p.innerHTML = '123';
//还可以执行子窗口中的函数或者获取变量。
_window.fn();
01.
02.
03.
04.
05.
06.
07.
08.

(更多…)

2015/12/28 1 / /
标签:  暂无标签

textarea高度自适应。

textarea高度自适应。

首先最好的办法就是使用HTML5的contenteditable属性。能将标签设置为可编辑。如下:

<div contenteditable="true">  </div> 
01.
复制这行文字粘贴!

如果一定要使用textarea的话,简单的写了一个插件。该插件无调用接口,只需引入js,然后在textarea上写上 data-autoheight=”auto” 即可。

如果需要达到某个高度后不需要在自适应高度,可以将 data-autoheight 的auto,改为需要固定的高度即可。如下:

//自适应
<textarea data-autoheight="auto"></textarea> 
//达到设置高度后,将自动出现滚动条
<textarea data-autoheight="180"></textarea> 
01.
02.
03.
04.

(更多…)

2015/12/27 1 / /
标签:  暂无标签

简单的瀑布流插件。

瀑布流插件,只做了基本的封装,插件自身,只起到排序的作用,具体的无限追加,没有写进插件内部,毕竟DOM结构不是统一的。

下面是调用方法。

//直接传入id或者class,其他配置默认  
var wf = new Waterfall('.ul')  
//其他配置参数  
var wf = new Waterfall({    
    id :'#ul',    //元素的id或者class    
    width : 200,  //每个块的宽度,默认200    
    space : 10,   //每个块之间的间距    
    maxCol :null  //最大列数,默认根据屏幕自动排列    
});    
//提供两个方法    
wf.append(html)  //用与添加数据    
wf.scroll(function(off){    
    if(off) {  }; //滚动判断    
});   
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.

由于动态添加没有封装进去,所以需要自己根据数据来写。

一种是后台返回的数据已经设置好图片的宽高。如下:

var json = [  
    {url:'images/1.jpg',width:399,height:610},  
    {url:'images/2.jpg',width:500,height:750},  
    {url:'images/3.jpg',width:640,height:427},  
    {url:'images/4.jpg',width:427,height:640}  
];  
01.
02.
03.
04.
05.
06.

循环这个json数据,根据当前列的宽度,和json里提供的宽高,算出当前元素的高度。循环一次之后,调用一次append方法,把数据添加到DOM中。

for(var i = 0;i < json.length;i++){  
    var html = '';  
    html = '<li style="height:'+(200 / json[i].width * json[i].height)+'px;">\  
        <img src="'+ json[i].url +'" alt="">\  
    </li>';  
    wf.append(html);  
}  
01.
02.
03.
04.
05.
06.
07.

(更多…)

2015/12/25 1 / /
标签:  暂无标签

手把手教你制作-带箭头的流程进度条。

纯CSS的带箭头流程进度条,兼容到IE8。

首先写出一个基本的样式。

  • 首页
.cssNav li{  
    padding: 0px 20px;   
    line-height: 40px;  
    background: #50abe4;  
    display: inline-block;   
    color: #fff;  
    position: relative;  
}   
01.
02.
03.
04.
05.
06.
07.
08.

接下来使用 :after 伪类画出一个三角形,定位到右边,如下:

  • 首页
.cssNav li:after{  
    content: '';  
    display: block;  
    border-top: 20px solid red;  
    border-bottom: 20px solid red;  
    border-left: 20px solid blue;  
    position: absolute;   
    rightright: -20px;   
    top: 0;  
}   
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.

(更多…)

2015/12/24 0 / /
标签:  暂无标签

insertAdjacentHTML和insertAdjacentText


我们向Dom中写入HTML文本,通常使用innerHTML或者innerText(textContent);其实还有insertAdjacentHTML和insertAdjacentText这两个方法。并且更加灵活,插入内容更加方便。而且兼容性很好,IE6貌似都能兼容。

先来做个简单的例子。假如html内容如下,我们要动态往Ul中追加内容。

<ul>  
    <li>内容1</li>  
    <li>内容2</li>  
    <li>内容3</li>  
    <li>内容4</li>  
</ul>  
01.
02.
03.
04.
05.
06.

通常我们会做3步。如下

var _li = document.createElement('li'); //1、创建元素  
_li.innerHTML = '内容5';  //2、写入内容  
document.querySelector('ul').appendChild(_li); //3、插入到ul中   
01.
02.
03.

当我们使用insertAdjacentHTML,只需下面一行代码就可以;

document.querySelector('ul').insertAdjacentHTML("beforeend", '<li>内容</li>');
01.

并且还提供了多个地方插入文本。

beforebegin  //在 element 元素的前面。  
afterbegin   //在 element 元素的第一个子元素前面。  
beforeend    //在 element 元素的最后一个子元素后面。  
afterend     //在 element 元素的后面。  
01.
02.
03.
04.

点击下面按钮测试。

Test
Test

再来举个例子。我们要向Dom中的开头添加元素。会使用insertBefore;如果Dom中没有子元素,我们还要去判断一下,再利用appendChild去插入,否则会报错(至少在IE中),如下代码;

if(dom.children.length){  
    //如果有子元素,就使用insertBefore  
    dom.insertBefore(_li,dom.children[0])  
}else{  
    //没有子元素,使用appendChild  
    dom.appendChild(_li)  
};  
01.
02.
03.
04.
05.
06.
07.

现在使用insertAdjacentHTML,依然只有一句话,不管里面有没有子元素。

element.insertAdjacentHTML("afterbegin", '<p>内容</p>');  
01.

以上两个方法,第二个参数都必须是字符串,假如已经有dom节点或者已经createElement出来了一个元素,需要插入怎么办?还有一个叫做 insertAdjacentElement ,使用方法相同,第二参数可以是create出来的节点获取其他dom元素。

var _dom = document.createElement('p');  
_dom.innerHTML = '测试';  
element.insertAdjacentElement("beforeend", _dom);
01.
02.
03.
var _dom = document.querySelector('.ele');  
element.insertAdjacentElement("beforeend", _dom );   
01.
02.

需要注意的是,insertAdjacentHTML是插入文本会解析html标签,insertAdjacentText不会解析html标签,但是火狐不支持这个insertAdjacentText,不过我们可以做下兼容。如下代码;

另外insertAdjacentElement在火狐中也不支持,同样使用下面的兼容代码

(更多…)

2015/12/22 2 / /
标签:  暂无标签

资源加载并显示进度条。

资源加载并显示进度条。支持图片和js文件。

var resources = ['img.png','img2.jpg','js/a.js']; //数组集合,可以是图片文件和js文件 
//var resources = document.querySelectorAll('.wrap img'); 或者某个img集合
loadImg.init ( resources,{  
    onstart : function(){  
        //开始加载
    },
    progress : function(a,b){  
    	//加载中执行
        console.log('已加载:' + (a*100).toFixed(0));  
    },  
    complete : function(a){ 
    	//加载结束执行 
       console.log('加载结束');  
    }  
});
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.


(更多…)

2015/12/14 0 / /
标签:  暂无标签

文字聚合动画效果。

文字聚合效果,原理就是将容器分为若干的小块,然后每个小块设置 background-poisition ,最后添加css3动画就可以了,去掉注释,也就仅仅20行的代码。

源码如下:

//c为列数,r为行数,把box划分成多少个小块  
var box = document.querySelector('.boxWrap1'),c=4,r=8;  
//每个小块的宽高  
var w = box.offsetWidth/c,h = box.offsetHeight/r;  
//循环添加小块  
for(var i = 0;i < r;i++){  
    for(var j = 0;j < c;j++) {    
        var _div=document.createElement('div');   
        var _left = j * w,_top = i * h;  
        //添加css样式,并设置每个小块的背景  
        _div.style.cssText = 'width:'+w+'px;height:'+h+'px;left:'+_left+'px;top:'+_top+'px; opacity:0;background-position:'+(-_left) + 'px ' + (-_top) + 'px';  
        //添加css动画时间  
        _div.style.transition = 'all '+ Random(1,1.8) +'s  ease';  
        //添加css的transform动画  
        _div.style.transform  = 'perspective(800px) translate3d('+Random(-200,200)+'px, '+Random(-200,200)+'px,300px) rotate('+Random(-90,90)+'deg) scale('+ Random(0,2) +')'  
        //添加  
        box.appendChild(_div);  
    };  
};  
//延时添加动画  
setTimeout(function(){  
    box.classList.add('set');  
},100);  
//随机数  
function Random(start,end){    
    return Math.random()*(end-start)+start;    
}; 
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.

效果演示:

(更多…)

2015/12/14 11 / /
标签:  暂无标签

使用px2rem,将px转换成rem。

px2rem (npm链接) ,顾名思义将px转换成rem。在移动端的时候,需要将px根据页面的fontSize来设置rem,现在可以一键完成。

首先安装node环境,然后安装:npm install px2rem

接着安装:npm install gulp-px3rem

编辑gulpfile.js

  1. var gulp = require(‘gulp’),  
  2. px2rem = require(‘gulp-px3rem’);  
  3. gulp.task(‘pxrem’, function() {  
  4.     gulp.src(‘src/style/sty.css’)  
  5.     .pipe(px2rem({  
  6.         remUnit: 64  
  7.     }))  
  8.     .pipe(gulp.dest(‘dest’))  
  9. });  

其他选项:

  1. px2rem({  
  2.     baseDpr: 2,             // 基于设备的Dpr  
  3.     threeVersion: false,    // 是否生成 @1x, @2x and @3x 三个版本(默认: false),打开后  
  4.     remVersion: true,       // 是否生成rem版本(默认: true)  
  5.     remUnit: 75,            // rem转换比例 (默认: 75)  
  6.     remPrecision: 5         // rem保留几位数 (默认: 5)  
  7. }  

还有第二种方法,使用postcss插件,首先还是安装:npm install gulp-postcss

(更多…)

2015/11/26 0 / /
标签:  暂无标签

input类型为date情况下不支持placeholder。

placeholder很好用,只是当input类型为date情况下,placeholder不起作用。

看下面的图,最后一个input为date类型的时候,placeholder并没有显示出来。

解决方法:input默认text,onclick动态改变他的type。

(更多…)

2015/11/17 0 / /
标签:  暂无标签
5/10
1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
回到顶部