分享
是一种美德

常用的正则表达式

mrnaas阅读(114)

[^\x00-\xff]  //双字节字符(包括汉字在内)

[\u4e00-\u9fa5]  //中文字符

\n\s*\r  //空白行

^\s*|\s*$   //首尾空白字符

^[a-zA-Z][a-zA-Z0-9_]{4,15}$   //帐号: 字母开头,5-16字节,字母数字可加下划线

\d{3}-\d{8}|\d{4}-\d{7} //电话号码

 [1-9][0-9]{4,}  //QQ

 [1-9]\d{5}(?!\d)   //邮编

\d{15}|\d{18}   //身份证

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*  //Email地址

<(\S*?)[^>]*>.*?</\1>|<.*? />   //HTML标记

\d+\.\d+\.\d+\.\d+   //IP地址

[a-zA-z]+://[^\s]*   //网址URL

特定字符串的匹配:

^[A-Za-z]+$  //匹配由26个英文字母组成的字符串

^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串

^[a-z]+$  //匹配由26个英文字母的小写组成的字符串

^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串

^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

特定数字:

^[1-9]\d*$    //正整数

^-[1-9]\d*$   //负整数

^-?[1-9]\d*$   //整数

^[1-9]\d*|0$  //非负整数

^-[1-9]\d*|0$   //非正整数

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //正浮点数

^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //负浮点数

^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //浮点数

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //非负浮点数

^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //非正浮点数

Redis命令总结

mrnaas阅读(136)

Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用。在编程时,比如使用Redis 的Java语言包,这些命令都有对应的方法,比如上面例子中使用的sadd方法,就是对集合操作中的SADD命令。下面将Redis提供的命令做一总结。

连接操作相关的命令
Ÿ  quit:关闭连接(connection)

Ÿ   auth:简单密码认证

对value操作的命令
Ÿ  exists(key):确认一个key是否存在

Ÿ   del(key):删除一个key

Ÿ   type(key):返回值的类型

Ÿ  keys(pattern):返回满足给定pattern的所有key

Ÿ  randomkey:随机返回key空间的一个key

Ÿ   rename(oldname, newname):将key由oldname重命名为newname,若newname存在则删除newname表示的key

Ÿ  dbsize:返回当前数据库中key的数目

Ÿ  expire:设定一个key的活动时间(s)

Ÿ   ttl:获得一个key的活动时间

Ÿ   select(index):按索引查询

Ÿ   move(key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库

Ÿ  flushdb:删除当前选择数据库中的所有key

Ÿ  flushall:删除所有数据库中的所有key

对String操作的命令
Ÿ   set(key, value):给数据库中名称为key的string赋予值value

Ÿ  get(key):返回数据库中名称为key的string的value

Ÿ   getset(key, value):给名称为key的string赋予上一次的value

Ÿ   mget(key1, key2,…, key N):返回库中多个string(它们的名称为key1,key2…)的value

Ÿ   setnx(key, value):如果不存在名称为key的string,则向库中添加string,名称为key,值为value

Ÿ   setex(key, time, value):向库中添加string(名称为key,值为value)同时,设定过期时间time

Ÿ   mset(key1, value1, key2, value2,…key N, value N):同时给多个string赋值,名称为key i的string赋值value i

Ÿ   msetnx(key1, value1, key2, value2,…key N, value N):如果所有名称为key i的string都不存在,则向库中添加string,名称key i赋值为value i

Ÿ  incr(key):名称为key的string增1操作

Ÿ   incrby(key, integer):名称为key的string增加integer

Ÿ  decr(key):名称为key的string减1操作

Ÿ   decrby(key, integer):名称为key的string减少integer

Ÿ   append(key, value):名称为key的string的值附加value

Ÿ   substr(key, start, end):返回名称为key的string的value的子串

对List操作的命令
Ÿ   rpush(key, value):在名称为key的list尾添加一个值为value的元素

Ÿ   lpush(key, value):在名称为key的list头添加一个值为value的 元素

Ÿ  llen(key):返回名称为key的list的长度

Ÿ   lrange(key, start, end):返回名称为key的list中start至end之间的元素(下标从0开始,下同)

Ÿ   ltrim(key, start, end):截取名称为key的list,保留start至end之间的元素

Ÿ   lindex(key, index):返回名称为key的list中index位置的元素

Ÿ   lset(key, index, value):给名称为key的list中index位置的元素赋值为value

Ÿ   lrem(key, count, value):删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素。

Ÿ  lpop(key):返回并删除名称为key的list中的首元素

Ÿ  rpop(key):返回并删除名称为key的list中的尾元素

Ÿ   blpop(key1, key2,… key N, timeout):lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对key i+1开始的list执行pop操作。

Ÿ   brpop(key1, key2,… key N, timeout):rpop的block版本。参考上一命令。

Ÿ   rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

对Set操作的命令
Ÿ   sadd(key, member):向名称为key的set中添加元素member

Ÿ   srem(key, member) :删除名称为key的set中的元素member

Ÿ   spop(key) :随机返回并删除名称为key的set中一个元素

Ÿ   smove(srckey, dstkey, member) :将member元素从名称为srckey的集合移到名称为dstkey的集合

Ÿ   scard(key) :返回名称为key的set的基数

Ÿ   sismember(key, member) :测试member是否是名称为key的set的元素

Ÿ   sinter(key1, key2,…key N) :求交集

Ÿ   sinterstore(dstkey, key1, key2,…key N) :求交集并将交集保存到dstkey的集合

Ÿ   sunion(key1, key2,…key N) :求并集

Ÿ   sunionstore(dstkey, key1, key2,…key N) :求并集并将并集保存到dstkey的集合

Ÿ   sdiff(key1, key2,…key N) :求差集

Ÿ   sdiffstore(dstkey, key1, key2,…key N) :求差集并将差集保存到dstkey的集合

Ÿ   smembers(key) :返回名称为key的set的所有元素

Ÿ   srandmember(key) :随机返回名称为key的set的一个元素

对zset(sorted set)操作的命令
Ÿ   zadd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。

Ÿ   zrem(key, member) :删除名称为key的zset中的元素member

Ÿ   zincrby(key, increment, member) :如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment

Ÿ   zrank(key, member) :返回名称为key的zset(元素已按score从小到大排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”

Ÿ   zrevrank(key, member) :返回名称为key的zset(元素已按score从大到小排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”

Ÿ   zrange(key, start, end):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素

Ÿ   zrevrange(key, start, end):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素

Ÿ   zrangebyscore(key, min, max):返回名称为key的zset中score >= min且score <= max的所有元素

Ÿ  zcard(key):返回名称为key的zset的基数

Ÿ   zscore(key, element):返回名称为key的zset中元素element的score

Ÿ   zremrangebyrank(key, min, max):删除名称为key的zset中rank >= min且rank <= max的所有元素

Ÿ   zremrangebyscore(key, min, max) :删除名称为key的zset中score >= min且score <= max的所有元素

Ÿ   zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。

对Hash操作的命令
Ÿ   hset(key, field, value):向名称为key的hash中添加元素field<—>value

Ÿ   hget(key, field):返回名称为key的hash中field对应的value

Ÿ   hmget(key, field1, …,field N):返回名称为key的hash中field i对应的value

Ÿ   hmset(key, field1, value1,…,field N, value N):向名称为key的hash中添加元素field i<—>value i

Ÿ   hincrby(key, field, integer):将名称为key的hash中field的value增加integer

Ÿ   hexists(key, field):名称为key的hash中是否存在键为field的域

Ÿ   hdel(key, field):删除名称为key的hash中键为field的域

Ÿ  hlen(key):返回名称为key的hash中元素个数

Ÿ  hkeys(key):返回名称为key的hash中所有键

Ÿ  hvals(key):返回名称为key的hash中所有键对应的value

Ÿ  hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

持久化
Ÿ   save:将数据同步保存到磁盘

Ÿ   bgsave:将数据异步保存到磁盘

Ÿ  lastsave:返回上次成功将数据保存到磁盘的Unix时戳

Ÿ  shundown:将数据同步保存到磁盘,然后关闭服务

远程服务控制
Ÿ   info:提供服务器的信息和统计

Ÿ   monitor:实时转储收到的请求

Ÿ   slaveof:改变复制策略设置

Ÿ  config:在运行时配置Redis服务器

一般动态创建元素可以通过两种方式

mrnaas阅读(130)

1、Dom HTml

 var select = document_createElement_x_x_x("select");
     select.options[0] = new Option("加载项1", "value1");
     select.options[1] = new Option("加载项2", "value2");
     select.size = "2";
     testDiv.a(select);
     });

通过document的createElement_x_x_x方法创建,然后通过a方法添加到指定的对象中即可

2、JQuery函数创建

 $("动态创建的div")


    通过append,appendto,prepend,prependto等方法添加到指定的对象中,具体可以查看

3、页面加载的时候最好在页面加载完后执行创建

   可以使用window.onload,但是在添加新的元素, 但是不幸的是浏览器执行window.onload函数不仅仅是在构建完DOM树之后, 也是在所有图像和其他外部资源完整的加载并且在浏览器窗口显示完毕之后. 所以如果某个图片或者其他资源加载很长时间, 访问者就会看到一个不完整的页面, 甚至在图片加载之前就执行了需要依赖动态添加的元素的脚本而导致脚本错误.

解决办法就是等DOM被解析后, 在图像和外部资源加载之前执行我们的函数.在jQuery中让这一实现变得可行

$(document).ready(
        function() { testDiv.innerHTML = "

使用动态创建的$(document).ready(function)方法
"; }
);

或者使用简便语法:

//jQuery 使用$(function)方法
$(
        function() { testDiv.innerHTML += "
使用$(function)方法
"; } );

使用$()将我们的函数包装起来即可. 而且可以在一个页面绑定多个函数, 如果使用传统的window.onload则只能调用一个函数.

所以请大家将修改DOM的函数使用此方法调用. 另外还要注意document_createElement_x_x_x和innerHTML的区别. 如果可以请尽量使用document_createElement_x_x_x和$(“”)的形式创建对象.

JS闭包学习

mrnaas阅读(128)

闭包

  能够访问另一个函数作用域的变量的函数。清晰的讲:闭包就是一个函数,这个函数能够访问其他函数的作用域中的变量。

下面inner 就是一个闭包函数,因为他能够访问到outer函数的作用域

function outer() {
      var  a = '变量1'
      var  inner = function () {
             console.info(a)
      }
     return inner;
 }

闭包是站在作用域的角度上来定义的,因为inner访问到outer作用域的变量,所以inner就是一个闭包函数。虽然定义很简单,但是有很多坑点,比如this指向、变量的作用域,稍微不注意可能就造成内存泄露。

坑点一,引用的变量可能发生变化

 function outer() {
       var result = [];
       for (var i = 0; i<10; i++){
         result.[i] = function () {
             console.info(i)
         }
      }
      return result
 }

看样子result每个闭包函数对打印对应数字,1,2,3,4,…,10, 实际不是,因为每个闭包函数访问变量i是outer执行环境下的变量i,随着循环的结束,i已经变成10了,所以执行每个闭包函数,结果打印10, 10, …, 10。这时,可以使用闭包保存临时数据:

 function outer() {
       var result = [];
       for (var i = 0; i<10; i++){
         result.[i] = function (num) {
              return function() {
                    console.info(num);    
              }
         }(i)
      }
      return result
 }

此时访问的num,是上层函数执行环境的num,数组有10个函数对象,每个对象的执行环境下的number都不一样。

坑点二,this指向问题

 var object = {
      name: ''object",
      getName: function() {
         return function() {
              console.info(this.name)
         }
     }
 }
 object.getName()()    // underfined

因为里面的闭包函数是在window作用域下执行的,也就是说,this指向windows

坑点三,内存泄露问题

 function  showId() {
     var el = document.getElementById("app")
     el.onclick = function(){
       aler(el.id) 
     }
 }

这样会导致闭包引用外层的el,当执行完showId后,el无法释放,因此需要手动置空

 function  showId() {
     var el = document.getElementById("app")
     var id  = el.id
     el.onclick = function(){
       aler(id)
     }
     el = null  // 主动释放el
 }

技巧1,用闭包解决递归调用问题

function  factorial(num) {
   if(num<= 1) {
       return 1;
   } else {
      return num * factorial(num-1)
   }
}
var anotherFactorial = factorial
factorial = null
anotherFactorial(4)

报错 ,因为最好是return num* arguments.callee(num-1),arguments.callee指向当前执行函数,但是在严格模式下不能使用该属性也会报错,所以借助闭包来实现。

 function newFactorial = (function f(num){
     if(num<1) {return 1}
     else {
        return num* f(num-1)
     }
 })

这样就没有问题了,实际上起作用的是闭包函数f,而不是外面的函数newFactorial。

技巧2,用闭包模仿块级作用域

es6没出来之前,用var定义变量存在变量提升问题,当然现在大多用es6的let 和const 定义。

 for(var i=0; i<10; i++){
     console.info(i)
 }
 alert(i)  // 变量提升,弹出10
 
 //为了避免i的提升可以这样做
 (function () {
     for(var i=0; i<10; i++){
          console.info(i)
     }
 })()
 alert(i)  // underfined   因为i随着闭包函数的退出,执行环境销毁,变量回收

红绿灯下

CN、古哥阅读(213)

在城市,当你走到十字街头时,往往会与红绿灯相遇。

  说来好笑,我最初来到城市时,最怕的就是过街。在西安和北京求学期间,只要是有天桥和地下通道,我绝不走十字街。我对红绿灯不信任,它们闪来闪去的,像是两只鬼眼,变幻太快,常常是绿灯一亮,我起步走,却遭逢侧向驶来的一串汽车,它们占据了半边路,阻断你。等它们过去后,你再前行,绿灯的心房就颤动了,红灯随之亮起,你被隔在马路中央,身前身后是川流不息的车辆,有被钢铁夹击的感觉。此时我总会联想起卓别林的《摩登时代》中,那个被卡在机器中的工人,觉得自己是工业化时代的一个可怜虫。

  我喜欢回到故乡,其中的一个缘由是,在乡间路上,我不会为红绿灯左右。能够阻断我脚步的,有时是一群黄昏中归家的羊,有时是几只正午时通过堤坝,要下河戏耍的鸭子。

  据说在交通事故中,死于红绿灯下的行人占了很大比例。闯红灯,是肇事的元凶。有时是汽车闯红灯殃及行人,有时是行人闯红灯自蹈黄泉,这样的行人无疑就是举着阎王爷掷来的招魂牌在过街。不管责任在哪一方,倒霉的总归是人。所以家长送孩子上学的路上,在过十字街时,如临虎口,总要拉起孩子的手。在幼儿教育中,学会通过红绿灯下的街口,也成了必修课。走到红绿灯下,人的心就会紧张起来,你要眼观六路,耳听八方,稍有不慎,就会酿下惨祸。在我眼中,十字街就像匍匐在大地的十字架,它主宰着人的生死。

  我在哈尔滨生活以后,习惯了走红绿灯。前些年,每当过十字街时,看见绿灯闪烁了,我会一路飞奔,分秒必争,抢在红灯敲响警钟时到达街对面。由于年轻,体力充沛,我与绿灯的赛跑很少有输的时候。当街口的行人集体闯红灯时,我也尾随其后,大摇大摆地招摇过市。汽车像一支支飞来的箭,刷刷地在我们身旁呼啸而过,可是大家对它们毫无惧色,我也心底泰然。

  二○○二年初春,爱人离开哈尔滨时,带我去花店买花。我们到了海城街的鲜花批发市场,我选了一束红色康乃馨,几枝黄玫瑰。当我把玫瑰拿在手中的时候,爱人说,别老买黄色的,换点鲜艳的颜色吧。于是,我挑了两枝娇艳的粉色玫瑰。他捧着康乃馨,我拿着玫瑰,散步回家。经由红军街桥下的十字路口时,恰好赶上绿灯眨眼了,我说等下一个绿灯再过吧。爱人说,你跟着我,能抢过去的!他个子高,步伐大,很快就跑到街对面了。我呢,一见红灯亮了,腿立刻就软了,向回撤。这样,我站在街这头,他站在对面,我们中间,是一台连着一台的疾驰的车辆。车辆就像汪洋大海,把我们分开了。三天后,爱人在回故乡的山间的公路上出了车祸。故乡的路没有红绿灯,可是他为了早点回到工作的地方,急于赶路,还是出了事故。他的心中,看来一直亮着一盏颤动的绿灯啊。他是一个疯狂的旅人,只知道一刻不停地向前赶,赶,赶。这种“赶”,这种热情的“奔命”,使我们一个在此岸,一个在彼岸,永隔着万水千山。他像流星,以为自己生命的光华还很漫长,却不知道当他飞速掠过天际的时候,迎接他的却是永恒的寂静。

  爱人离去后,我身边没了陪伴的人,可是路还是要走下去的。我曾在十字街头为他焚烧纸钱,都说那是灵魂聚集的地方。再经过那样的路口时,我感觉有无数的灵魂在幽幽地歌唱。远远地看到绿灯要变幻了,我便会放慢脚步,在路边静心等待;人们蜂拥着闯红灯时,我也会原地不动,气定神凝地候着。红绿灯下那些步履匆匆、神色慌张的路人,在我眼里是那么的可怜可笑。

  我想,人生是可以慢半拍,再慢半拍的。生命的钟表,不能一味地往前拨,要习惯自己是生活的迟到者。人是弱的,累了,就要休息;高兴了,就要开怀大笑。郁闷的时候,何苦要掩饰自己,对着青山绿水呼喊吧。我们可以与友人畅饮,一醉方休;也可以对那些邪恶的人当面示以唾弃。我们可以在月夜下多几分缠绵,也可以在旅途中因着美好的风景而多几日的停留。随遇而安,随缘而行。随风而舞,随雨而歌!

  是的,我们要给自己多亮几盏红灯,让生命有所停顿,有所沉吟。这样的红灯,就是我们生命中不息的火焰!只有这样,弱的生命才会变成强的生命,暗淡的生命才会变成有光华的生命!当生命的时针有张有弛、疾徐有致地行走的时候,我们的日子,才会随着日升月落,发出流水一样清脆的足音。

来源:https://www.lz13.cn/meiwen/183890.html

CSS样式规范

wangtong阅读(192)

页面制作思想原则
始终保证HTML、CSS的轻量化,把复杂的事情简单化,把简单的事情模块化,用尽可能简洁的代码实现所需的页面。

页面制作布局规范
1.页面title格式
以下划线()分割,格式:内容标题栏目标题

2.页面分为Layout和Block两大类
Layout部分负责限定总体尺寸及构建页面基本轮廓。
Block部份依实际内容分别定制最外层以div标签包裹,尺寸一般不做限定,模块尽量设置overflow样式以控制出错成本。

3.关于重用
当页面中相似模块较多时,可考虑将其结构制作成公用模块,以方便重用。
重用模块主要以结构重用为目的,对于模块中的文字、链接等细节等的处理,可以通过给其附加额外的class进行扩展。

样式命名及参数规范
1.一律采用px为数值单位
2.按钮以btn开头命名
3.图标以ico
开头命名
4.Layout模块的样式以la为前缀命名。
5.重用模块的命名以前缀re
开头以方便识别,重用样式建立修改必需慎重。
6.样式继承的起始为点为该标签所在的Block,继承层级尽量控制在4个以内。
7.样式套用顺序:重用样式 预置样式 私有样式。
8.样式名以前缀+Camel风格命名,例:la_showDemo
9.大型项目时可考虑给body设置class以提供额外的全局判断,利于细节扩展。

图片文件命名整合规范
1.临时文件以下划线开头(_)开头,应确保在任何情况下该文件被删除时都不会影响到网页的设计需求。例:photo.jpg
2.背景图片以bg
开头来命名
a.大图独立命名,体积以控制在70KB以内为宜。
b.有固定宽高之一的平铺图片根据轴向以bg_x.jpg或bgy.jpg命名整合在一起,以1px不同色块间隔,存储成质量为100的jpg。
(考虑到平铺图片的特性,若有尺寸上的修改,原则上以删除旧图,在图片末尾处添加新图为准,不要试图在原处修改,以免出现管理混乱。)
c.有延伸要求的平铺图片务必独立命名,不可贪图方便整合进其他图片。格式为:前缀
轴向_实例名。例:bg_xpage.jpg
3.网站常规的样式图片可根据需求选择jpg或gif格式,以img.jpg或img.gif命名。
4.gif动画文件需同类整合,以m
为前缀,注意控制图片体积。
5.现阶段尽量不用png。

常用hack
注意:良好的结构比任何hack都好,尽量少用。
width:1px;*width:1px;_width:1px; ff,ie7,ie6

附表
复制内容到剪贴板
代码:
样式命名规范表
类型 前缀 命名示例
网页结构 la_ lashowDemo
普通模块 无 showDemo
重用模块 re
 re showDemo
图标 ico
 ico showDemo
按钮 btn
 btn showDemo
复制内容到剪贴板
代码:
图片命名规范表
类型 规范 命名示例
普通图片 无 photo.jpg
整合图片 img+数字(可选) img.gif | img1.gif
gif动画 m
前缀 mico.gif
大尺寸背景图 bg
命名 bgtop.jpg
平铺图片(限定) bg
轴向 bgx.jpg
平铺图片(延伸) bg
轴向_命名 bg_xpage.jpg
临时图片 
_photo.jpg

火狐CSS hack -moz

mrnaas阅读(110)

-moz火狐CSS hack

Mozilla浏览器支持一些扩展的CSS是以-moz开头的。这些措施包括了一些功能,包括圆形边界,并能够指定不同的方块的宽度和高度的计算,在非标准方式下,这种css在Mozilla浏览器下执行计算更容易得到支持。

有些特性在后来被提议列入的CSS规范,但标准的属性与-moz属性还是有些不同。

其中一些非标准属性只适用于Mozilla浏览器。

At-rules

@-moz-document
Pseudo-elements and pseudo-classes

:-moz-list-bullet控制list-style的大小。
:-moz-first-node伪对象:第一个节点。
:-moz-last-node 伪对象:最后一个节点。
:-moz-only-whitespace伪对象:空白内容。
:-moz-bound-element
:-moz-any-link (matches :link and :visited)
:-moz-drag-over
:-moz-tree-row
:-moz-tree-row(hover) New in Firefox 3
:-moz-tree-cell
:-moz-tree-checkbox
:-moz-tree-column
:-moz-tree-cell-text
:-moz-tree-cell-text(hover) New in Firefox 3
:-moz-tree-twisty
:-moz-tree-indentation
:-moz-tree-line
:-moz-tree-image
:-moz-tree-separator
:-moz-tree-drop-feedback
:-moz-tree-progressmeter
:-moz-system-metric(windows-default-theme) New in Firefox 3
:-moz-system-metric(mac-graphite-theme) New in Firefox 3.1 bug 448767
:-moz-system-metric(images-in-menus) New in Firefox 3
:-moz-system-metric(scrollbar-start-backward) New in Firefox 3
:-moz-system-metric(scrollbar-start-forward) New in Firefox 3
:-moz-system-metric(scrollbar-end-backward) New in Firefox 3
:-moz-system-metric(scrollbar-end-forward) New in Firefox 3
:-moz-system-metric(scrollbar-thumb-proportional) New in Firefox 3
:-moz-alt-text New in Firefox 3
:-moz-placeholder New in Firefox 3
:-moz-broken New in Firefox 3
::-moz-svg-foreign-content
::-moz-scrolled-page-sequence
::-moz-scrolled-content
::-moz-anonymous-block
::-moz-cell-content
::-moz-anonymous-positioned-block
::-moz-pagecontent
::-moz-page
::-moz-page-sequence
::-moz-pagebreak
::-moz-viewport
::-moz-viewport-scroll
::-moz-canvas
::-moz-scrolled-canvas
::-moz-xul-anonymous-block
::-moz-table
::-moz-table-cell
::-moz-table-row-group
::-moz-table-column-group
::-moz-table-column
::-moz-table-row
::-moz-table-outer
::-moz-inline-table
Properties

-moz-appearance
-moz-binding
-moz-background-clip
-moz-background-inline-policy
-moz-background-origin
-moz-border-image New in Firefox 3.1 bug 378217
-moz-border-top-colors
-moz-border-right-colors
-moz-border-bottom-colors
-moz-border-left-colors
-moz-border-radius
-moz-border-radius-topleft
-moz-border-radius-topright
-moz-border-radius-bottomleft
-moz-border-radius-bottomright
-moz-box-align
-moz-box-direction
-moz-box-flex
-moz-box-ordinal-group
-moz-box-orient
-moz-box-pack
-moz-box-shadow New in Firefox 3.1 bug 212633
-moz-box-sizing
-moz-image-region
-moz-box-flexgroup
-moz-opacity Obsolete
-moz-outline Deprecated
-moz-outline-color Deprecated
-moz-outline-offset
-moz-outline-radius
-moz-outline-radius-topleft
-moz-outline-radius-topright
-moz-outline-radius-bottomleft
-moz-outline-radius-bottomright
-moz-outline-style Deprecated
-moz-outline-width Deprecated
-moz-user-focus
-moz-user-input
-moz-user-modify
-moz-user-select
-moz-window-shadow New in Firefox 3.1 bug 450939

CSS3 Box
o overflow-x
o overflow-y

CSS3 Columns
o -moz-column-count
o -moz-column-gap
o -moz-column-width
o -moz-column-rule New in Firefox 3.1 bug 271586
o -moz-column-rule-width New in Firefox 3.1 bug 271586
o -moz-column-rule-style New in Firefox 3.1 bug 271586
o -moz-column-rule-color New in Firefox 3.1 bug 271586

CSS transforms
o -moz-transform New in Firefox 3.1
o -moz-transform-origin New in Firefox 3.1

-moz-float-edge

-moz-border-end
-moz-border-end-color
-moz-border-end-style
-moz-border-end-width
-moz-border-start bug 74880
-moz-border-start-color
-moz-border-start-style
-moz-border-start-width
-moz-margin-end
-moz-margin-start
-moz-padding-start
-moz-padding-end
-moz-force-broken-image-icon
-moz-stack-sizing New in Firefox 3.1
Values

cursor
o -moz-alias
o -moz-cell
o -moz-context-menu
o -moz-copy
o -moz-grab
o -moz-grabbing
o -moz-spinning
o -moz-zoom-in
o -moz-zoom-out

display
o -moz-box
o -moz-inline-block
o -moz-inline-box
o -moz-inline-grid
o -moz-inline-stack
o -moz-inline-table
o -moz-grid
o -moz-grid-group
o -moz-grid-line
o -moz-groupbox
o -moz-deck
o -moz-popup
o -moz-stack
o -moz-run-in
o -moz-compact
o -moz-marker

overflow
o -moz-scrollbars-horizontal
o -moz-scrollbars-none
o -moz-scrollbars-vertical
o -moz-hidden-unscrollable

Note: All of these values should be considered deprecated. Use of the overflow-x and overflow-y is preferred, although it does not replace the last of these.

border-style and outline-style
o -moz-bg-inset - Makes the inset border to blend with then current background (scheduled for removal bug 84307 )
o -moz-bg-outset - Makes the outset border to blend with then current background (scheduled for removal bug 84307 )
o -moz-bg-solid - Makes the solid border to blend with then current background (scheduled for removal bug 84307 )

border-color
o -moz-use-text-color

For all properties accepting color keywords
o -moz-activehyperlinktext
o -moz-hyperlinktext
o -moz-visitedhyperlinktext
o -moz-buttondefault
o -moz-buttonhoverface
o -moz-buttonhovertext
o -moz-cellhighlight
o -moz-cellhighlighttext
o -moz-field
o -moz-fieldtext
o -moz-dialog
o -moz-dialogtext
o -moz-dragtargetzone
o -moz-mac-accentdarkestshadow
o -moz-mac-accentdarkshadow
o -moz-mac-accentface
o -moz-mac-accentlightesthighlight
o -moz-mac-accentlightshadow
o -moz-mac-accentregularhighlight
o -moz-mac-accentregularshadow
o -moz-mac-chrome-active New in Firefox 3.1 bug 449833
o -moz-mac-chrome-inactive New in Firefox 3.1 bug 449833
o -moz-mac-focusring
o -moz-mac-menuselect
o -moz-mac-menushadow
o -moz-mac-menutextselect
o -moz-menuhover
o -moz-menuhovertext
o -moz-win-communicationstext New in Firefox 3
o -moz-win-mediatext New in Firefox 3
o -moz-nativehyperlinktext New in Firefox 3.1 bug 426732

empty-cells
o -moz-show-background (default value in quirks mode)

font-family
o -moz-fixed

font
o -moz-button
o -moz-info
o -moz-desktop
o -moz-dialog (also a color)
o -moz-document
o -moz-workspace
o -moz-window
o -moz-list
o -moz-pull-down-menu
o -moz-field (also a color)

text-align
o -moz-center
o -moz-left
o -moz-right

text-decoration
o -moz-anchor-decoration

-moz-user-select
o -moz-all
o -moz-none

list-style-type
o -moz-arabic-indic
o -moz-bengali
o -moz-cjk-earthly-branch
o -moz-cjk-heavenly-stem
o -moz-devanagari
o -moz-ethiopic-halehame
o -moz-ethiopic-halehame-am
o -moz-ethiopic-halehame-ti-er
o -moz-ethiopic-halehame-ti-et
o -moz-ethiopic-numeric
o -moz-gujarati
o -moz-gurmukhi
o -moz-hangul
o -moz-hangul-consonant
o -moz-japanese-formal
o -moz-japanese-informal
o -moz-kannada
o -moz-khmer
o -moz-lao
o -moz-malayalam
o -moz-myanmar
o -moz-oriya
o -moz-persian
o -moz-simp-chinese-formal
o -moz-simp-chinese-informal
o -moz-tamil
o -moz-telugu
o -moz-thai
o -moz-trad-chinese-formal
o -moz-trad-chinese-informal
o -moz-urdu

width , min-width , max-width (see bug 311415 )
o -moz-min-content New in Firefox 3
o -moz-fit-content New in Firefox 3
o -moz-max-content New in Firefox 3
o -moz-available New in Firefox 3

-moz-appearance
o -moz-win-browsertabbar-toolbox New in Firefox 3
o -moz-win-communications-toolbox New in Firefox 3
o -moz-win-media-toolbox New in Firefox 3
o -moz-mac-unified-toolbar New in Firefox 3.1

Others

color ‘functions’
o -moz-hsla (hue, saturation, lightness, opacity)
o -moz-rgba

-moz-initial - The value -moz-initial is a partial implementation of css3’s initial used to apply the CSS specification’s initial value of a property to an element.

-moz-math-columnline

-moz-math-firstcolumn
-moz-math-firstrow
-moz-math-font-size
-moz-math-font-style
-moz-math-lastcolumn
-moz-math-lastrow
-moz-math-rowline
CSS Transforms

From CSS Transforms spec (Webkit)

-moz-transform CSS Transforms introduction New in Firefox 3.1 bug 435293
-moz-transform-origin New in Firefox 3.1 bug 435293

跨浏览器兼容实现首段首字下沉效果的CSS代码

mrnaas阅读(128)

之前有朋友问过类似的问题,找了找相关的资料,找到了,分享一下,希望能帮助大家!
CSS代码如下:

.parent_class>p:first-child:first-letter{ 
font-size:2.5em; 
padding:5px 5px 0 0; 
float:left; 
font-family:楷体,楷体_GB2312; 
font-weight:bold; 
color:#E6192C; 
line-height:1.2em; 
}

其中.parent_class为p标签的父级元素,最后一行指定行高为了兼容IE,否则ie显示会错位。字体的话,好像在xp下,用“楷体”不能识别,必须用“楷体_GB2312”,而win7下正常。其它内容可按需要更改为你想要的效果。

网页设计:色彩搭配原则及方法

wangtong阅读(126)

在这一篇中将介绍色彩搭配原则和方法!
一、色彩搭配原则
在选择网页色彩时,除了考虑网站本身的特点外还要遵循一定的艺术规律,从而设计出精美的网页。
1.色彩的鲜明性:
如果一个网站的色彩鲜明,很容易引人注意,会给浏览者耳目一新的感觉。
2.色彩的独特性:
要有与众不同色彩,网页的用色必须要有自己独特的风格,这样才能给人浏览者留下深刻的印象。
3.色彩的艺术性:
网站设计是一种艺术活动,因此必须遵循艺术规律。按照内容决定形式的原则,在考虑网站本身特点的同时,大胆进行艺术创新,设计出既符合网站要求,又具有一定艺术特色的网站。
4.色彩搭配的合理性:
色彩要根据主题来确定,不同的主题选用不同的色彩。例如,用蓝色体现科技型网站的专业,用粉红色体现女性的柔情等。
二、网页色彩搭配方法
网页配色很重要,网页颜色搭配的是否合理会直接影响到访问者的情绪。好的色彩搭配会给访问者带来很强的视觉冲击力,不恰当的色彩搭配则会让访问者浮躁不安。
1.同种色彩搭配:
同种色彩搭配是指首先选定一种色彩,然后调整其透明度和饱和度,将色彩变淡或加深,而产生新的色彩,这样的页面看起来色彩统一,具有层次感。
2.邻近色彩搭配:
邻近色是指在色环上相邻的颜色,如绿色和蓝色、红色和黄色即互为邻近色。采用邻近色搭配可以里是网页避免色彩杂乱,易于达到页面和谐统一的效果。
3.对比色彩搭配:
一般来说,色彩的三原色(红、黄、蓝)最能体现色彩间的差异。色彩的强烈对比具有视觉诱惑力,能够起到几种实现的作用。对比色可以突出重点,产生强烈的视觉效果。通过合理使用对比色,能够使网站特色鲜明、重点突出。在设计时,通常以一种颜色为主色调,其对比色作为点缀,以起到画龙点睛的作用。
4.暖色色彩搭配:
暖色色彩搭配是指使用红色橙色黄色集合色等色彩的搭配。这种色调的运用可为网页营造出稳性、和谐和热情的氛围。
5.冷色色彩搭配:
冷色色彩搭配是指使用绿色、蓝色及紫色等色彩的搭配,这种色彩搭配可为网页营造出宁静、清凉和高雅的氛围。冷色点色彩与白色搭配一般会获得较好的视觉效果。
6.有主色的混合色彩搭配:
有主色的混合色彩搭配是指以一种颜色作为主要颜色,同色辅以其他色彩混合搭配,形成缤纷而不杂乱的搭配效果。
7.文字与网页的背景色对比要突出:
文字内容的颜色与网页的背景色对比要突出,底色深,文字的颜色就应浅,以深色的背景衬托浅色的内容(文字或图片);反之,底色淡,文字的颜色就要深些,以浅色的背景衬托深色的内容(文字或图片)。

微信6.0之后,分享到朋友圈新方法

mrnaas阅读(126)

微信6.0之后,原有的WeixinJSBridge.on(‘menu:share:timeline’, function (argv) {}不再可以使用,但是微信提供的新的方法 JS-SDK, 官方接口请参见 微信JSSDK说明文档 ,具体的方法官方文档都说的比较清楚了,本文只是记录下开发过程中遇到的问题以及解决方式。

  1. 虽然微信提供了JSSDK,但是这不意味着你可以用自定义的按钮来直接打开微信的分享界面,这套JSSDK只是把微信分享接口的内容定义好了,实际还是需要用户点击右上角的菜单按钮进行主动的分享,用户点开分享界面之后,出现的内容就会是你定义的分享标题、图片和链接。
  2. wx.config()注入配置成功之后,会触发wx.ready()函数(同样失败的时候会触发wx.error()函数),所以之后的有必要的接口调用,比如定义分享到朋友圈、分享给好友的内容,还是放在wx.ready()中进行调用以保证正确性。
    3.wx.checkJsApi无需wx.config即可调用,用来判断当前客户端是否能支持微信JSSDK的接口。
    4.分享出去的链接,会被微信在链接后面追加参数。这个问题十分重要,本人在开发过程中,第一次分享出去,成功没有任何问题,但是再次打开链接,会提示invalid signature,也就是签名错误,这个问题出现的原因,就是因为原来链接的被追加了参数,传递到自己服务器后台的页面原地址和提交给微信的页面原地址不匹配,解决方法如下:
<font color="#000"><font face="Arial">var pageUrl = window.location.href.split('#')[0];
pageUrl = pageUrl.replace(/\&/g, '%26');</span>
initJsApiTicket(pageUrl, function (data) {
    if (data.errcode == '0') {
        wx.config({
            debug: false,
            appId: data.appId,
            timestamp: data.timestamp,
            nonceStr: data.nonceStr,
            signature: data.signature,
            jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage']
        });
    }
});</font></font>

注意如果你是用这种方式将页面原地址作为参数传递到后台的话,需要将参数中的&全部替换为%26,否则后台接收到的地址会丢失参数,导致最后签名不一致。另外,在你分享出去的URL中,必须将微信附加的参数去掉,否则会导致第二次分享成功,但是第三次、第四次以及后续的分享都失败。

wx.ready(function () {
    pageUrl = pageUrl.substr(0, pageUrl.indexOf('%26'));
    wx.onMenuShareTimeline({
        title: '胶囊内镜检查图片', // 分享标题
        link: pageUrl, // 分享链接
        imgUrl: 'http://escloud-media.oss-cn-hangzhou.aliyuncs.com/escloud/newsmsg-small.png', // 分享图标
        success: function () {
            // 用户确认分享后执行的回调函数
     },
     cancel: function () {
         // 用户取消分享后执行的回调函数
     },
     fail: function (res) {
         alert("分享失败,请重新尝试");
        }
    });
    wx.onMenuShareAppMessage({
        title: '胶囊内镜检查图片', // 分享标题
        desc: '胶囊内镜检查图片', // 分享描述
        link: pageUrl, // 分享链接
        imgUrl: 'http://escloud-media.oss-cn-hangzhou.aliyuncs.com/escloud/newsmsg-small.png', // 分享图标
        type: 'link', // 分享类型,music、video或link,不填默认为link
        dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
        success: function () {
            // 用户确认分享后执行的回调函数
        },
        cancel: function () {
            // 用户取消分享后执行的回调函数
        }
   });
});