淡泊以明志,宁静而致远。

织网

CSS Hack 汇总速查一览

由于浏览器之间存在兼容性问题,在制作网页的时候,为了使页面能在不同浏览器中显示相对一致或者其他原因,网页制作人员总结了种种 Hack 方法;在解决兼容性问题之前,这些方法还经常会用到。接下来,52CSS.com将向给大家介绍常用的CSS Hack汇总,以便大家平时的速查。

  屏蔽IE浏览器(也就是IE下不显示)
  *:lang(zh) select {font:12px  !important;}  select:empty {font:12px  !important;}  这里select是选择符,根据情况更换。第二句是MAC上safari浏览器独有的。 

  仅IE7与IE5.0可以识别 
  *+html  select {…} 当面临需要只针对IE7与IE5.0做样式的时候就可以采用这个HACK。 

  仅IE7可以识别 
  *+html  select {…!important;} 当面临需要只针对IE7做样式的时候就可以采用这个HACK。 

  IE6及IE6以下识别 
  * html  select {…} 这个地方要特别注意很多博客都写成了是IE6的HACK其实IE5.x同样可以识别这个HACK。其它浏览器不识别。html >body  select {…} 这句与上一句的作用相同。 

  仅IE6不识别,屏蔽IE6 
  select { display :none;} 这里主要是通过CSS注释分开一个属性与值,注释在冒号前。 

  仅IE6与IE5不识别,屏蔽IE6与IE5 
  select { display :none;} 这里与上面一句不同的是在选择符与花括号之间多了一个CSS注释。不屏蔽IE5.5 

  仅IE5不识别,屏蔽IE5 
  select {…} 这一句是在上一句中去掉了属性区的注释。只有IE5不识别,IE5.5可以识别。 

  盒模型解决方法 
  selct {width:IE5.x宽度; voice-family :”\”}\”"; voice-family:inherit; width:正确宽度;} 盒模型的清除方法不是通过!important来处理的。这点要明确。
 
  清除浮动 
  select:after {content:”.”; display:block; height:0; clear:both; visibility:hidden;} 在Firefox中,当子级都为浮动时,那么父级的高度就无法完全的包住整个子级,那么这时用这个清除浮动的HACK来对父级做一次定义,那么就可以解决这个问题。 

  截字省略号 
  select { -o-text-overflow:ellipsis; text-overflow:ellipsis; white-space:nowrap; overflow:hidden; } 这个是在越出长度后会自行的截掉多出部分的文字,并以省略号结尾,很好的一个技术。只是目前Firefox并不支持。 

  只有Opera识别 
  @media all and (min-width: 0px){ select {……} } 针对Opera浏览器做单独的设定。 

  以上都是写CSS中的一些HACK,这些都是用来解决局部的兼容性问题,如果希望把兼容性的内容也分离出来,不妨试一下下面的几种过滤器。这些过滤器有的是写在CSS中通过过滤器导入特别的样式,也有的是写在HTML中的通过条件来链接或是导入需要的补丁样式。

  IE5.x的过滤器,只有IE5.x可见 
  @media tty {i{content:”\”;}} @import ’ie5win.css’;
  IE5/MAC的过滤器,一般用不着 
 
  IE的if条件Hack 
  <!–[if IE]> Only IE <![endif]–> 所有的IE可识别<!–[if IE 5.0]> Only IE 5.0 <![endif]–>只有IE5.0可以识别<!–[if gt IE 5.0]> Only IE 5.0+ <![endif]–>IE5.0包换IE5.5都可以识别<!–[if lt IE 6]> Only IE 6- <![endif]–>仅IE6可识别<!–[if gte IE 6]> Only IE 6/+ <![endif]–>IE6以及IE6以下的IE5.x都可识别<!–[if lte IE 7]> Only IE 7/- <![endif]–> 仅IE7可识别

正则表达式高级技巧基本概念实例详解[译]

英文原文来自Smashing Magazine。由笨活儿翻译。转载请注明出处。

正则表达式(Regular Expression, abbr. regex) 功能强大,能够用于在一大串字符里找到所需信息。它利用约定俗成的字符结构表达式来发生作用。不幸的是,简单的正则表达式对于一些高级运用,功能远远不够。若要进行筛选的结构比较复杂,你可能就需要用到高级正则表达式

本文为您介绍正则表达式的高级技巧。我们筛选出了八个常用的概念,并配上实例解析,每个例子都是满足某种复杂要求的简单写法。如果你对正则的基本概念尚缺乏了解,请先阅读这篇文章,或者这个教程,或者维基条目

这里的正则语法适用于PHP,与Perl兼容。

1. 贪婪/懒惰

Greed

所有能多次限定的正则运算符都是贪婪的。他们尽可能多地匹配目标字符串,也就是说匹配结果会尽可能地长。不幸的是,这种做法并不总是我们想要的。因此,我们添加“懒惰”限定符来解决问题。在各个贪婪运算符后添加“?”能让表达式只匹配尽可能短的长度。另外,修改器“U”也能惰化能多次限定的运算符。理解贪婪与懒惰的区别是运用高级正则表达式的基础。

贪婪操作符

操作符 * 匹配之前的表达式零次或零次以上。它是一个贪婪操作符。请看下面的例子:

1
2
preg_match( '/<h1>.*< \/h1>/', '</h1><h1>这是一个标题。</h1>
<h1>这是另一个。</h1>', $matches );

句点(.)能代表除换行符外的任意字符。上面的正则表达式匹配 h1 标签以及标签内的所有内容。它用句点(.)和星号(*)来匹配标签内的所有内容。匹配结果如下:

1
<h1>这是一个标题。</h1><h1>这是另一个。</h1>

整个字串都被返回。* 操作符会连续匹配所有内容—— 甚至包括中间的 h1 闭合标签。因为它是贪婪的,匹配整个字串是符合其利益最大化原则。

懒惰操作符

把上面的式子稍作修改,加上一个问号(?),能让表达式变懒惰:

1
/<h1>.*?< \/h1>/</h1>

这样它会觉得,只需匹配到第一个 h1 结尾标签就完成任务了。

另一个有着类似属性的贪婪操作符是 {n,} 。它代表之前的匹配模式重复n次或n次以上,如果没有加上问号,它会寻找尽可能多的重复次数,加上的话,则会尽可能少重复(当然也就是“重复n次”最少)。

1
2
3
4
5
6
# 建立字串
$str = 'hihihi oops hi';
# 使用贪婪的{n,}操作符进行匹配
preg_match( '/(hi){2,}/', $str, $matches );  # matches[0] 将是 'hihihi'
# 使用堕化了的 {n,}? 操作符匹配
preg_match( '/(hi){2,}?/', $str, $matches );  # matches[0] 将是 'hihi'

Continue reading

[原][ASP]字符串截取函数

两个以前写的ASP字符串截取函数,做小偷程序时经常用到。
首发地址:http://bbs.blueidea.com/viewthread.php?tid=2853887

简单版:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
'********************************************************************************
'Function(公有)
'名称 :	盛飞字符串截取函数
'作用 :	按指定首尾字符串截取内容(本函数为从左向右截取)
'参数 :	sContent ---- 被截取的内容
'	sStart ------ 首字符串
'	sOver ------- 尾字符串
'	iType ------- 类型(1:不包含首尾字符串;2:包含首尾字符串;3:包含首、不包含尾;4:不包含首、包含尾)
'********************************************************************************
Function SenFe_Cut(sContent, sStart, sOver, iType)
	Dim iStart, iOver
	iStart = InStr(sContent,sStart)
	iOver  = InStr(iStart+Len(sStar),sContent,sOver)
	If iStart>0 And iOver>0 Then
		Select Case iType
			Case 1 iStart = iStart+Len(sStart)
			Case 2 iOver  = iOver+Len(sOver)
			Case 4 iStart = iStart+Len(sStart):iOver = iOver+Len(sOver)
		End Select
		SenFe_Cut = Mid(sContent,iStart,iOver-iStart)
	Else
		SenFe_Cut = "没有找到您想要的内容,可能您设定的首尾字符串不存在!"
	End If
End Function

Continue reading

[原][ASP]储存单位转换小函数

原贴地址:http://bbs.blueidea.com/thread-2864029-1-1.html
参考资料:http://zh.wikipedia.org/w/index.php?title=Yottabyte&variant=zh-cn

1
2
3
4
5
6
7
8
9
10
11
12
Public Function SenFe_GetFileSize(iSize)
	Dim aUnit, sUnit, I
	aUnit = Array("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
	I = 0
	sUnit = aUnit(0)
	Do While iSize >= 1024 And I < UBound(aUnit)
		I = I + 1
		iSize = iSize / 1024
		sUnit = aUnit(I)
	Loop
	SenFe_GetFileSize = FormatNumber(iSize, 2) & " " & sUnit
End Function

转载请注明出处