web tips

#不积跬步无以至千里

###2015-06-01

- 1.解决英文超长“单词”换行问题,使用css的 word-wrap: break-word;属性;

###2015-06-02

- 1.img 标签的alt='' 解决图片加载失败显示效果不好的bug。

- 2.onerror 事件会在文档或图像加载过程中发生错误时被触发。

//onerror(reload(this,src))

function reload(dom, src) {

var count = dom.getAttribute('data-count');

if (count < 3) {

count++;

dom.setAttribute('src', src);

dom.setAttribute('data-count', count);

}

}

- 3.ios输入框失去焦点触发blur事件。

###2015-06-03

- 1.ios 下根据input是否获得焦点,和使用position:absolute解决键盘弹出时底部fixed的层位置不对bug。

//fix ios position fixed bug

fixfixed = function(fc) {

if (fc) {

$('#im-send-wrap').addClass('fix-fixed');

var height = $(document).height() - 44;

$('#im-send-wrap').css('top', height + 'px');

} else {

$('#im-send-wrap').removeClass('fix-fixed');

$('#im-send-wrap').css('top', '');

}

};

- 2.deeplink demo(https://github.com/ahai3840/deeplink)

###2015-06-04

- 1.在页面中可使用更改URL的hash值和锚点跳转的方式,实现跳动到制定位置。

###2015-06-05

- 1.解决图片加载占位可以给img标签设置背景或者给父层div设置背景。

- 2.使用input的type=tel调出电话号码输入键盘。

- 3.调用AppStore和Google Play 自带推荐

###2015-06-08

- 1.使用width=100%和max-width解决居中的宽度调整问题。

###2015-06-09

- 1.php的number_format()  函数通过千位分组来格式化数字。

- 2.php的in_array() 函数在数组中搜索给定的值。

###2015-06-10

- 1.修改Ubuntu的host文件: sudo vi /etc/hosts。

- 2.background-size的值可以为auto。

- 3.解决iOS上Safari使用系统返回按钮无法刷新页面问题。

###2015-06-11

- 1.解决Safari中层滑动不流畅问题-webkit-overflow-scrolling : touch;

- 2.自定义滚动条样式。

/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/

&::-webkit-scrollbar

{

width: 5px;

height: 5px;

}

/*定义滑块 内阴影+圆角*/

&::-webkit-scrollbar-thumb

{

border-radius: 5px;

height: 30px;

background-color:#666;

opacity: 0.7;

}

- 4.css3的steps()函数可以用于实现逐针动画。

###2015-06-15

- 1.php返回手机访问wap的平台

//get platform

function get_device_type(){

// get the agent description

$agent = strtolower($_SERVER['HTTP_USER_AGENT']);

$type = 'other';

// checking ios device

if(strpos($agent, 'iphone') || strpos($agent, 'ipad')){

$type = 'ios';

}

// checking android device

if(strpos($agent, 'android')){

$type = 'android';

}

return $type;

}

- 2.javascript判断访问平台

navigator.userAgent.indexOf("iPhone") || navigator.userAgent.indexOf("iPad")  // ios

navigator.userAgent.indexOf("android") // android

- 3.javascript的toLocaleLowerCase()方法用于把字符串转换为小写。

stringObject.toLocaleLowerCase()

- 4.javascript常用正则表达式

digits: [/^\d+$/, "请输入数字"]

,letters: [/^[a-z]+$/i, "{0}只能输入字母"]

,tel: [/^(?:(?:0\d{2,3}[- ]?[1-9]\d{6,7})|(?:[48]00[- ]?[1-9]\d{6}))$/, "电话格式不正确"]

,mobile: [/^1[3-9]\d{9}$/, "手机号格式不正确"]

,email: [/^(?:[a-z0-9]+[_\-+.]?)*[a-z0-9]+@(?:([a-z0-9]+-?)*[a-z0-9]+\.)+([a-z]{2,})+$/i, "邮箱格式"]

,qq: [/^[1-9]\d{4,}$/, "QQ号格式不正确"]

,date: [/^\d{4}-\d{1,2}-\d{1,2}$/, "请输入正确的日期,例:yyyy-mm-dd"]

,time: [/^([01]\d|2[0-3])(:[0-5]\d){1,2}$/, "请输入正确的时间,例:14:30或14:30:00"]

,ID_card: [/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[A-Z])$/, "身份证号码"]

,url: [/^(https?|ftp):\/\/[^\s]+$/i, "网址格式不正确"]

,postcode: [/^[1-9]\d{5}$/, "邮政编码格式不正确"]

,chinese: [/^[\u0391-\uFFE5]+$/, "请输入中文"]

,username: [/^\w{3,12}$/, "请输入3-12位数字、字母、下划线"]

,password: [/^[0-9a-zA-Z]{6,16}$/, "密码由6-16位数字、字母组成"]

###2015-06-16

- 1.wap端使用遮罩效果防止跳转链接被多次点击。

- 2.wap端的应用下载链接需要考虑winphone和功能机下的情况。

###2015-06-17

- 1.页面抓取demo (https://github.com/ahai3840/Spider)。

- 2.php的file_get_contents() 函数把整个文件读入一个字符串中。

- 3.php的html解析类:simple_html_dom.php

###2015-06-18

- 1.php抓取页面时设置userAgent,使用curl方式。

- 2.从抓取页面获取的json由于编码问题无法使用php的json_decode(),可以使用自定义的json解析函数。

//自定义函数,将json字符串解析为arry

function json_decode2($json)

{

$comment = false;

$out = '$x=';

for($i=0; $i

{

if (!$comment)

{

if (($json[$i] == '{') || ($json[$i] == '['))      $out .= ' array(';

else if (($json[$i] == '}') || ($json[$i] == ']'))  $out .= ')';

else if ($json[$i] == ':')    $out .= '=>';

else                        $out .= $json[$i];

}

else $out .= $json[$i];

if ($json[$i] == '"' && $json[($i-1)]!="\\")    $comment = !$comment;

}

eval($out);

return $x;

}

- 3.自定义php的debug()

// debug the output to the screen

function debug($data, $die = true)

{

// ensure debugs NEVER happen on PROD

// create a pre tag

echo '

' . chr(10);

// sanity check if the data is an array

if (is_array($data)) {

// print the data to screen

print_r($data);

} else {

// Dumps information about a variable

var_dump($data);

}

// close pre tag

echo '

' . chr(10);

// sanity check to stop PHP processing

if ($die) {

// stop PHP processing

die();

}

}

###2015-06-25

- 1.js操作cookie使用jquery.cookie.js(https://github.com/carhartl/jquery-cookie)

- 2.将字符串转为json

eval("(" + jsonString + ")")

- 3.css文件中的:/img/xxx.png图片解析到的是css文件的域名。

###2015-07-06

- 1.jquery的$.getJson()无法解决跨域问题。

- 2.可设置 header( 'Access-Control-Allow-Origin:*' ); 来解决移动端跨域问题。

- 3.访问相同域名不同协议的接口要跨域,例如http和https。

###2015-07-08

- 1.在图片地址中添加$命名来防止图片被爬虫抓取。

- 2.使用php的file_get_contents()可抓取地址含$的图片。

- 3.-webkit-scrollbar 无法影藏Safari下的滚动条。

###2015-07-09

- 1. \n 在android和ios应用中表示换行。

- 2.自定义find函数。

//find element by class

function findByClass(dom,str){

return dom.getElementsByClassName(str);

}

//find element by id

function findByID(dom,id){

return dom.getElementById(id);

}

//find element by  tag

function findByTag(dom,tag){

return dom.getElementsByTagName(tag);

}

- 3.getElementById()返回单一元素,getElementsByClassName()和getElementsByTagName()返回数组。

###2015-07-14

- 1.getElementsByName()方法可返回带有指定名称的对象的集合。

- 2.JSON.stringify()将json转为字符串。

- 3.split()按指定字符将字符串分割为数组。

###2015-07-16

- 1.Jquery跳到页面制定元素。

$('html, body').animate({ scrollTop: $('#skus').offset().top }, 600);

- 2.JavaScript无法使用length属性获得对象的长度。

- 3.使用typeof()判断对象是否有相应属性。

- 4.!!object.attr可判断对象是否有该属性。

###2015-07-17

- 1.jQuery v1.11.0的data()方法设置属性失效,建议使用attr()方法。

- 2. 使用jquery创建div节点

$('

');

###2015-07-20

- 1.JavaScript中数组和对象需先声明再使用,避免语法报错。

var arr = [];

var obj = {};

- 2.JavaScript将URL中的参数存到一个对象中。

function GetRequest() {

var url = location.search; //获取url中"?"符后的字串

var theRequest = new Object();

if (url.indexOf("?") != -1) {

var str = url.substr(1);

strs = str.split("&");

for(var i = 0; i < strs.length; i ++) {

theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);

}

}

return theRequest;

}

- 3.在wap页的浮层中使用滑动层,由于和页面的滑动共用判断手势,滑动体验不佳。

###2015-07-22

- 1.在wap页的浮层中使用滑动层,通过给body设置position:fixed解决滑动体验不佳问题。

- 2.使用服务的语言(php等)给JavaScript传值时注意转义,以免特殊符号引起JavaScript报错。

- 3. 使用background-clip:padding-box;解决部分Android浏览器的border-radius的bug。

- 4.设置元素为box-sizing: border-box;能更好的响应百分比布局。

- 5.jQuery的$.isEmptyObject() 判断某个对象是否为空(不含有任何属性)。

- 6.jQuery的$.isArray() 判断某个参数是否为数组。

###2015-07-24

- 1.jquery的on()方法可以给js新生成的DOM绑定事件。

- 2.jquery的1.8版之后不支持live()方法。

- 3.在node下使用mysql连接时,域名为localhost或报错,可以使用ip(127.0.0.1)代替。

###2015-08-05

- 1.github 获取主库更新内容

 
 

git remote -v

git remote add upstream https://github.com/otheruser/repo.git

git fetch upstream

git checkout master

git merge upstream/master

###2015-08-07

- 1.npm更新。

 
 

npm install npm -g

###2015-08-11

- 1.$().jquery获取jquery版本号。

###2015-08-18

- 1.网站快速置为黑白色css代码

 
 

html {

filter: url("data:image/svg+xml;utf8,#grayscale");

font-size: 100%;

}

###2015-08-28

- 1.sudo fuser -k 80/tcp  Ubuntu下查看占用80端口的进程。

- 2.kill -9 2286 2288 2289 2290 2291 2292 3466 杀死对应编号的进程。

###2015-09-08

- 1.在ios上使用第三方浏览器可以访问测试环境的https站点。

- 2.ios的Safari会屏蔽不安全的https连接。

###2015-09-14

- 1.虚拟机拷贝之后记得重新生成mac地址,不然ip不会变,会造成冲突。

- 2.ie8不支持background-size。

- 3.连接nginx失败,注意查看access.log和error.log。

###2015-09-23

- 1.ios下使用css的绝对定位时,需要考虑元素的层级关系。

- 2.Jquery可以使用offset()获取元素在页面中的位置。

###2015-09-25

- 1.ubuntu 下修改hosts文件 sudo vim /etc/hosts。

- 2.连接memcached: telnet 127.0.0.1 11211。

- 3.清除memcached缓存flush_all。

- 4.重启memcached: sudo service memcached restart.

###2015-11-11

- 1.监听不是a标签的元素的click事件可能在iphone西出现闪屏现象。

- 2.使用text-align和line-height实现的居中在不同的设备上有差异,导致不是绝对居中的现象。

- 3.如果阻止touchend的默认行为,会导致部分设备上a标签不可跳转。

- 4.transition的兼容性不是很好,在部分三星的设备上会有卡顿现象。

- 5.实现元素的垂直居中可以使用display:table-cell;

###2015-12-16

- 1.js的{}对象无length属性。

- 2.使用css3的动画效果可以有效利用硬件的GPU,动画效果比直接操作left、top流畅。

- 3.服务器间通信使用ssh。

- 4.positon:abslute;定位的默认宽度是包含内容宽度。

- 5.根节点指的是html节点。

你可能感兴趣的:(web tips)