iTakeo

Fontmin,让加载中文字体成为可能。

浏览器的季风已撩拨起 webfont 的热浪,中文字体却依旧寂寞如雪。与英文26个字母不同的是,中文字符集过多,导致字体文件过大,少则2M、3M多则7M、8M,还要加载不同格式的字体,基本上不用想,只能使用图片代替。

有些地方使用图片并不方便,如下图所示:

上面图里,中文字体之间夹着特殊字体,并且数字会改变,只能通过切除图片0-9每个数字一张图片。然后再通过js拼接到一起。
下面两个按钮也是特殊的字体,如果这样的按钮有很多,岂不是每个都得切一张图。

现在通过Fontmin(是一个纯 JavaScript 实现的字体子集化方案),就可以做到把你想要的特殊字体提取出来,从而不用去加载庞大的字体了。

(更多…)

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

各种各样的hack。

各种hack,包括css和js,从国外网站看到的。

Android

Selector Hacks

.selector:not(*:root) {}
  • Chrome*
  • Safari*
  • Opera≥ 14
  • Android*

JavaScript Hacks

var isChromium =!!window.chrome;
  • Chrome*
  • Opera≥ 14
  • Android4.0.4

Media Query Hacks

@media screen and (min-width:0\0) {}
  • Internet Explorer≥ 9
  • Safari4
  • Android≥ 2.3

(更多…)

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

通过css3来判断横竖屏。

通过css3的媒体查询orientation,这个属性是来判断设备中的页面可见区域高度是否大于或等于宽度。

  1. @media (orientation: portrait) {   
  2.     //竖屏  
  3. }  
  4. @media (orientation: landscape) {   
  5.     //横屏  
  6. }  

具体,请使用手机打开下面的链接,并打开屏幕旋转,查看效果。

点击打开

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

判断鼠标移入移出方向。

判断鼠标移入移出方向。

  1. //0:top  
  2. //1:right  
  3. //2:botto,  
  4. //3:left  
  5. function getDirection (ev, obj) {  
  6.     var w = obj.offsetWidth,   
  7.         h = obj.offsetHeight,   
  8.         x = ev.pageX – obj.offsetLeft – w / 2 * (w > h ? h / w : 1),   
  9.         y = ev.pageY – obj.offsetTop – h / 2 * (h > w ? w / h : 1),   
  10.         d = Math.round(Math.atan2(y, x) / 1.57079633 + 5) % 4;  
  11.     return d;  
  12. };  

具体看下面的例子:

  1. var div = document.getElementById(‘DirectionBox’);  
  2. div.onmouseover = div.onmouseout = function  (ev) {  
  3.     this.innerHTML =  getDirection(ev, this);  
  4. };  

(更多…)

2015/11/11 1 / /
标签:  暂无标签

根据页面长度实现阅读进度条。

根据页面长度实现阅读进度条,具体看页面上的效果。

  1. ;(function(w,d){  
  2.     var dom = d.createElement(‘div’);  
  3.     dom.className = ‘scrollMove’;  
  4.     dom.style.cssText = ‘position: fixed; left: 0px; top: 0px; height: 7px; background: #f00808; z-index: 999999;box-shadow: 0px 0px 3px #999;width: 0;transition:width 0.3s ease-out;-moz-transition:width 0.3s ease-out;-webkit-transition:width 0.3s ease-out;’  
  5.     d.body.appendChild(dom);  
  6.     w.addEventListener(‘scroll’,function(){  
  7.         dom.style.width = Math.round((pageYOffset  / (d.body.offsetHeight – d.documentElement.clientHeight)) * 100) +’%’;  
  8.     },false);  
  9. })(window,document);  

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

输入银行卡号,每隔4位数字加一个空格

每隔4位数字加一个空格。

  1. document.getElementById(‘bankCardInp’).onkeyup = function (event) {  
  2.     var v = this.value;  
  3.     if(/\S{5}/.test(v)){  
  4.         this.value = v.replace(/\s/g, ).replace(/(.{4})/g, “$1 “);  
  5.     }     
  6. };  


2015/11/03 3 / /
标签:  暂无标签

JS将图片转换成base64。

JS将图片转换成base64格式,之前有篇读取本地图片,使用html5也可以做到,这里用到了canvas来处理。

调用:

  1. imgToBase.init(‘li3.png’,function(data){  
  2.     //回调,data为base64代码  
  3. });  

源码:

(更多…)

2015/10/30 0 / /
标签:  暂无标签

随手记:一个文字无限滚动。。。

利用appendChild,做一个无限滚动。达到一定距离后,把第一个append到最后一个,第二个就变成第一个,以此类推。

无间隔。

  1. var dom = document.getElementById(‘wrapScroll’),i = 0;  
  2. //定时器  
  3. setInterval(function(){  
  4.     init();  
  5. },40);  
  6. function init(){  
  7.     i = i-1;//累减  
  8.     if(i<=-35){  
  9.         //位置归0并append  
  10.         dom.style.top = ‘0px’,i = 0;  
  11.         dom.appendChild(dom.children[0]);  
  12.     };  
  13.     dom.style.top = i +’px’  
  14. };  

有间隔。

(更多…)

2015/10/26 2 / /
标签:  暂无标签

一个简单的日期选择插件。

一个简单的日期选择插件。

下面是调用方法。

//调用方法,后面回调函数返回的是当前选择的日期
//第二个参数如果为true时,则直接显示日历,该参数可不写(不写则是点击显示)  
calender('#calend',true).init(function(date){  
    this.innerHTML = date  
});
01.
02.
03.
04.
05.
//具体参数说明    
//如果需要传入参数,第一个为json,第二个为回调函数    
//下面是format格式化显示格式类型,有如下几种:    
//yyyy为年数      
//大写M为月数      
//d为几号      
//h为小时      
//小写m为分钟      
//s为秒数      
//q为季度      
//小写e,为数字星期格式      
//大写E,为中文星期格式      
//举例:'yyyy年MM月dd日','yyyy-MM-dd','yyyy','MM','e','dd E'    
//注意:以上获取时间如果是个位数则返回个位数,比如7月,则返回7,如果需要返回07,参数可以写成这样“MM”,其它同理,由于时分秒功能还没有添加,默认获取当前时分秒     
calender('#calend').init({    
    date : [2015,12,12], //设置默认显示年月日,默认当前年月日       
    format : 'yyyy-MM-dd', //设置显示格式  
    button : false //是否显示按钮    
    left : 0, //追加left,默认0
    top :0, //追加top,默认0
    onload : function(){  } //初始化完成执行,this为当前创建的日历对象  
},function(date){    
    //回调函数    
    this.innerHTML = date    
});
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.

主要css样式。

#calender-mask{position:fixed;left:0px;top:0px;width:100%;height:100%;z-index:999}.containter{width:320px;margin:auto}.calender-wrap{-webkit-animation:clafade .3s ease;-moz-animation:clafade .3s ease;animation:clafade .3s ease;padding:5px;background:#fff;width:240px;box-shadow:0 5px 10px rgba(0,0,0,0.2);border-radius:4px;position:relative;font-family:"Microsoft yahei";position:absolute;z-index:1000}.calender-wrap{border:1px solid #e2e2e2}.calender-wrap:after{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #eee;border-top:0;border-bottom-color:#d7d7d7;position:absolute;left:9px;top:-7px}.calender-wrap:before{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;border-top:0;position:absolute;left:10px;top:-6px;z-index:10}.calender-caption{height:35px;border-bottom:1px solid #ddd;z-index:2;background:#eee}.calender-content{position:relative;overflow:hidden}.calender-content:after{content:'';display:block;clear:both}.calender-cell{cursor:pointer;float:left;width:14.28571428%;height:35px;text-align:center;line-height:35px;font-size:12px;color:#000;z-index:1;border-bottom:1px solid #eee}.calender-cell:hover{background:#eee}.calender-caption .calender-cell:hover{background:none}.calender-cell-dark{cursor:no-drop;color:#b9b9b9}.calender-caption .calender-cell{height:35px;line-height:35px;font-size:13px;color:#111;font-weight:bold}.calender-header{text-align:center;line-height:35px;text-align:center;color:#888;padding-bottom:4px;margin-bottom:1px;background:#fff;position:relative;border-bottom:1px solid #e6e6e6;font-size:14px}#calender-prev,#calender-next{text-decoration:none;display:block;width:14.2857%;height:35px;background:#fff;position:absolute;left:0%;top:0px;font-family:'宋体';font-size:14px;color:#555}#calender-prev,#calender-next{color:#999;font-size:16px}#calender-prev:hover,#calender-next:hover{background:#eee;border-radius:5px;color:#222}#calender-next{left:auto;right:0%}#calender-year,#calender-mon{cursor:pointer;padding:2px 4px;border-radius: 3px; margin:0 3px;}#calender-year:hover,#calender-mon:hover{background:#eee}.calender-list{overflow:hidden}.calender-list2,.calender-list3{display:none}.calender-year-cell,.calender-mon-cell{width:32.41%;float:left;border-radius:4px;text-align:center;font-size:12px;padding:15px 0;border:1px solid #fff}.calender-year-cell:hover,.calender-mon-cell:hover{background:#eee;cursor:pointer}.calender-cell.active,.calender-year-cell.active,.calender-mon-cell.active{background:#23acf1;color:#fff}.calender-cell.active:hover,.calender-year-cell.active:hover,.calender-mon-cell.active:hover{background:#23acf1;color:#fff}.calender-button{border-top:1px solid #eee;width:100%;margin-top:-1px;padding:7px 0px 2px 0;overflow:hidden}.calender-button a{display:block;text-align:center;padding:0px 15px;height: 25px; line-height: 25px; float:right;background:#23acf1;color:#fff;margin-right:5px;cursor:pointer;margin-left:5px;font-size:12px;text-decoration:none}.calender-button a:hover{background:#0084c9}.calender-wrap.year .calender-list,.calender-wrap.month .calender-list{display:none}.calender-wrap.year .calender-list2{display:block}.calender-wrap.month .calender-list3{display:block}@keyframes clafade{0%{transform:scale(0.95);opacity:0}100%{transform:scale(1);opacity:1}}@-webkit-keyframes clafade{0%{-webkit-transform:scale(0.95);opacity:0}100%{-webkit-transform:scale(1);opacity:1}}
01.

(更多…)

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

正则匹配所有html标签。


正则匹配所有html标签,如下:

<[^>]+>

经过测试,发现下面的也可以。

<.*?>


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