css能否监测一个模块宽度的大小

html-css011

css能否监测一个模块宽度的大小,第1张

css是不可能检测一个模块宽度的大小的,CSS只能相当于是一个html的颜料而已。意思是,主要通过css这个颜料去绘画html来做出不同的东西。

如果你要用检测,只能通过JS进行监控,所以像很多动画,运动效果都是用js控制css来实现的。

希望我的回答可以帮到你,有什么不懂可以追问。

CSS animations, transforms 以及 transitions 不会自动开启GPU加速,而是由浏览器的缓慢的软件渲染引擎来执行。那我们怎样才可以切换到GPU模式呢,很多浏览器提供了某些触发的CSS规则。

现在,像Chrome, FireFox, Safari, IE9+和最新版本的Opera都支持硬件加速,当它们检测到页面中某个DOM元素应用了某些CSS规则时就会开启,最显著的特征的元素的3D变换。

例如:

.cube {

   -webkit-transform: translate3d(250px,250px,250px)

   rotate3d(250px,250px,250px,-120deg)

   scale3d(0.5, 0.5, 0.5)

}

可是在一些情况下,我们并不需要对元素应用3D变换的效果,那怎么办呢?这时候我们可以使用个小技巧“欺骗”浏览器来开启硬件加速。

虽然我们可能不想对元素应用3D变换,可我们一样可以开启3D引擎。例如我们可以用transform: translateZ(0)来开启硬件加速 。

.cube {

   -webkit-transform: translateZ(0)

   -moz-transform: translateZ(0)

   -ms-transform: translateZ(0)

   -o-transform: translateZ(0)

   transform: translateZ(0)

   /* Other transform properties here */

}

在 Chrome and Safari中,当我们使用CSS transforms 或者 animations时可能会有页面闪烁的效果,下面的代码可以修复此情况:

.cube {

   -webkit-backface-visibility: hidden

   -moz-backface-visibility: hidden

   -ms-backface-visibility: hidden

   backface-visibility: hidden

 

   -webkit-perspective: 1000

   -moz-perspective: 1000

   -ms-perspective: 1000

   perspective: 1000

   /* Other transform properties here */

}

在webkit内核的浏览器中,另一个行之有效的方法是

.cube {

   -webkit-transform: translate3d(0, 0, 0)

   -moz-transform: translate3d(0, 0, 0)

   -ms-transform: translate3d(0, 0, 0)

   transform: translate3d(0, 0, 0)

  /* Other transform properties here */

}

原生的移动端应用(Native mobile applications)总是可以很好的运用GPU,这是为什么它比网页应用(Web apps)表现更好的原因。硬件加速在移动端尤其有用,因为它可以有效的减少资源的利用(麦时注:移动端本身资源有限)。

对于他们的攻击,主要是通过使用正则表达式来做输入检测:

检测SQL meta-characters的正则表达式 :/(\%27)|(’)|(--)|(\%23)|(#)/ix

解释:我 们首先检查单引号等值的hex,单引号本身或者双重扩折号。

修正检测SQL meta-characters的正则表达式: /((\%3D)|(=))[^ ]*((\%27)|(’)|(--)|(\%3B)|(:))/i

解释: 这个规则首先留意 = 号或它的hex值(%3D),然后考虑零个或多个除换行符以外的任意字符,最后检测单引号,双重破折号或分号。

典型的 SQL 注入攻击的正则表达式: /w*((\%27)|(’))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix

解释:

w* - 零个或多个字符或者下划线。

(\%27)|’ - 单引号或它的hex等值。

(\%6 F)|o|(\%4 F))((\%72)|r|-(\%52) -‘or’的大小写以及它的hex等值

检测SQL注入,UNION查询关键字的正则表达式: /((\%27)|(’))union/ix

(\%27)|(’) - 单引号和它的hex等值

union - union关键字

可以同样为其他SQL查询定制表达式,如 >select, insert, update, delete, drop, 等等.

检测MS SQL Server SQL注入攻击的正则表达式: /exec(s|+)+(s|x)pw+/ix

exec - 请求执行储存或扩展储存过程的关键字

(s|+)+ - 一个或多个的空白或它们的http等值编码

(s|x) p- ‘sp’或‘xp’字母用来辨认储存或扩展储存过程

w+ - 一个或多个字符或下划线来匹配过程的名称

CSS的检测也主要是正则表达式:

一般 CSS 攻击的正则表达式: /((\%3C)|<)((\%2F)|/)*[a-z0-9\%]+((\%3E)|>)/ix

解释:

((\%3C)|<) -检查<和它hex等值

((\%2F)|/)*-结束标签/或它的 hex等值

[a-z0-9\%]+ -检查标签里的字母或它hex等值

((\%3E)|>) -检查>或它的hex等值

"<img src" CSS 攻击正则表达式: /((\%3C)|<)((\%69)|i|(\%49))((\%6D)|m|(\%4D))((\%67)|g|(\%47))[^ ]+((\%3E)|>)/I

解释:

(\%3 C)|<) -<或它的hex等值

(\%69)|i|(\%49))((\%6D)|m|(\%4D))((\%67)|g|(\%47) -’img’字母或它的大小写hex等值的变化组合

[^ ]+ -除了换行符以外的任何跟随<img的字符

(\%3E)|>) ->或它的hex等值

CSS 攻击的极端的正则表达式 : /((\%3C)|<)[^ ]+((\%3E)|>)/I

解释:

这个规则简单寻找<+除换行符外的任何字符+>。由于你的web服务器和web应用程序的构架,这个规则可能产生一些错误。但它能保证捉住任何CCS或者类似CSS的攻击。