以’px’为单位的运动
1 | <!DOCTYPE html> |
以’px’为单位的运动
1 | <!DOCTYPE html> |
回到页面顶部demo
1 | <!DOCTYPE html> |
1 | function ajax (url, fnSucc, fnFaild){ |
1 | <!DOCTYPE html> |
1 | <script> |
作为一个马上要找工作、非计算机专业、热爱前端的大四狗,最近开始疯狂写demo、看书,准备九、十月份的校招。
晚上用js实现了一个比较简单(low)的拖拽效果,初步测试兼容性还是不错的,于是写一段小博文记录下~大神求轻喷
1 | <!DOCTYPE html> |
1 | <!DOCTYPE html> |
当用户刷新网页或有大量用户访问网站时,就会产生大量数据库查询进程,这不但拖慢了网页打开速度,同时也给服务器带来了很大压力。
作为php菜鸟,今天刚刚接触到了 memcache
这个东东,于是自己跟着文档做了一个实例,一方面鼓励自己,另一方面等大神轻喷~
1 | <?php |
今天学习javascript的时候,教程中介绍了一种简单实现jQuery 中css()方法的写法
1 | <!DOCTYPE html> |
然而当我用chrome浏览器测试的时候,浏览器却抛出了一个错误
Uncaught TypeError: Cannot read property ‘width’ of undefined
于是马上联想到这必定又是浏览器大战中留下来的兼容问题,于是小白开始上网搜索,总结如下:
currentStyle
:获取计算后的样式,也叫当前样式、最终样式。
优点:可以获取元素的最终样式,包括浏览器的默认值,而不像style
只能获取行间样式,所以更常用到。
注意:不能获取复合样式如background属性值,只能获取单一样式如background-color
等。
非常遗憾的是,这个好使的东西也不能被各大浏览器完美地支持。准确地说,在我测试的浏览器中,IE8和Opera 11弹出了“object CSSStyleDeclaration”;FF 12、chrome 14则弹出“undefined”。
虽然currentStyle
无法适用于所有浏览器,但是可以根据以上测试的结果来区分开支持、不支持的浏览器,然后再找到兼容的写法。
其实在FF浏览器中我们可以使用getComputedStyle(obj,false)
来达到与IE下currentStyle
相同的效果。
getComputedStyle(obj,false)
:在FF新版本中只需要第一个参数,即操作对象,第二个参数写“false”也是大家通用的写法,目的是为了兼容老版本的火狐浏览器。
以下是兼容写法
1 | <!DOCTYPE html> |
不支持currentStyle的三款浏览器(FF、chrome、safari),都是支持getComputedStyle的。
1 | <script> |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
ul {
width: 100px;
background: #ccc;
border:1px solid #000;
position: absolute;
display: none;
list-style: inside;
}
li {
}
</style>
</head>
<body>
<ul id="ul1">
<li>登陆</li>
<li>注销</li>
<li>回到首页</li>
<li>加入</li>
</ul>
<script>
document.oncontextmenu = function (ev){
var oEvent = ev || event;
var oUl = document.getElementById("ul1");
var scrollTop = document.documentElement.scrollTop ||
document.body.scrollTop;
oUl.style.display = "block";
oUl.style.left = oEvent.clientX + 'px';
oUl.style.top = scrollTop + oEvent.clientY + 'px';
return false;
}
document.onclick = function (){
var oUl = document.getElementById("ul1");
oUl.style.display = "none";
}
</script>
</body>
</html>
^.+@.+\\..+$
形式,字符串搜索与匹配的工具1 | /** |
preg_match($pattern, $subject, [array &$matches])
只会匹配一次,preg_match_all($pattern, $subject, array &$matches)
匹配所有1 | $pattern = '/[0-9]/'; |
preg_replace($pattern, $replacement, $subject)
和preg_filter($pattern, $replacement, $subject)
1 | $pattern = array('/[0123]/','/[456]/','/[789]/'); |
preg_grep($pattern, array $input)将无法匹配的值过滤掉 阉割版 preg_filter()
preg_split($pattern, $subject)
代码实例
1 | $pattern = '/[0-9]/'; |
preg_quote($str)
正则运算符转义
正则表达式总结
都以preg_
开头
除preg_quote()
外,第一个参数都是正则表达式preg_match()
表单验证preg_replace ()
非法词汇过滤等
1 | $pattern = '/[0-9]/'; |
原子概念
正则匹配最小单位
可见原子:键盘输出后肉眼可见的字符
不可见原子:换行符、回车、空格
在匹配中文字符时,建议先转换 Unicode http://tool.chinaz.com/Tools/Unicode.aspx
原子的筛选方式|
匹配两个或多个分支选择[]
匹配方括号中的任意一个原子 ,[789]
匹配 789 ,[a-zA-Z0-9]
匹配字母和数字[^]
匹配方括号中的原子之外的任意字符 [^789] 匹配非 789
元字符(原子的集合).
匹配除换行符之外的任意字符\d
匹配任意一个十进制数字,即 [0-9]\D
匹配除数字之外的其他字符\s
匹配一个不可见原子 即[\f\n\r\t\v]\S
匹配一个可见的原子 [^\f\n\r\t\v]\w
匹配任意一个数字、字母、或下划线 [0-9a-zA-Z]\W
匹配任意一个非数字、字母、或下划线 [^0-9a-zA-Z]
量词{n}
表示其前面的原子恰好出现 n 次{n,}
表示其前面的原子最少出现 n 次{n,m}
表示其前面的原子最少出现 n 次,最多出现 m 次*
匹配0次,1次或多次其之前的原子 即 {0,}+
匹配1次或多次其之前的原子 即 {1,}?
匹配0次或1次其之前的原子
举例子
5{2} —- 55
[a-zA-Z]{2} —- ad1256135AW
[\w]{4} —- 连续出现4次字母、数字、下划线
[\w]{4,8} —- 4到8次字母、数字、下划线
\d+ —- 1到无穷大次数字出现
边界控制^
匹配字符串开始的位置$
匹配字符串结束的位置()
匹配其中的整体为一个原子
修正模式
贪婪匹配 匹配结果有歧义时取其长
懒惰匹配 匹配结果有歧义时取其短 标识 U
i
忽略英文大小写x
匹配过程中忽略空白 ,包括空格和制表符s
让元字符’ . ‘匹配包括换行符在内的所有字符
.+
\d+\.\d{2}$
^1(3|5|4|7|8)\d{9}
^\w+(\.\w)*@\w+(\.\w)+$
^(https?://)?(\w+\.)+.[a-zA-Z]+$
1 | 'require' => '/.+/', |