javascritp原生CSS封装函数

标签: javascript | 发表时间:2013-01-22 21:22 | 作者:adou
出处:http://varhi.com

jQuery中css()使用起来是比较方便的,它即可以获取又可以设置选择元素的样式属性值

css("width")获得元素的属性值
css("width","100px")设置元素的属性值

今天来探讨一下原生态的js是如何封装css函数,此封装的函数可获得可设置样式属性值

function css(object,attribute,value){
   if(!value){
       if(object.currentStyle){
	 return parseInt(object.currentStyle[attribute]);
       }else{
	 return parseInt(getComputedStyle(object,false)[attribute]);
       }
    }else{
	 object.style[attribute] = value + 'px';
    }		
}

一般我们获得元素的style属性值是通过element.style.attrbute来获得的,但问题在其只能获得行间样式,而无法获得非行间样式。何谓行间样式?何谓非行间样式?看了下面的代码你会明白了,行间样式就是直接定义在标签元素里面的样式,非行间样式则是直接在css文件里面定义的,这不是我们期望的,我们不可能把所有样式都写在标签元素上面。

<div style="width:100px;"></div>//行间样式
.wrap{width:100px;}//非行间样式

可以通过currentStyle来获取元素的非行间样式属性值,但此属性仅限于IE浏览器,其它webkit内核的浏览器是无法识别的,webkit浏览器则是通过getComputedStyle(object,para).attrbute实现的。通过他们的差别我们可以实现对所有浏览器的兼容,如下代码所示:

if(object.currentStyle){//IE浏览器
    return parseInt(object.currentStyle[attr]);
 }else{//webkit浏览器
   return parseInt(getComputedStyle(object,false)[attr]);
}

有几点需要注意:
1、object.style.width仅限于单一参数,object.style['width']中的[]可以动态的传参
2、parseInt()将获得的字符串转换为数字,便于后面对于数值的操作
3、return 返回数值
4、getComputedStyle(object,false)里必须设置两个参数,object为获取样式的元素对象,后面的false参数其官网解释说是一个虚拟参数,其实将false设置成什么都可以,但必须要有此参数,否则报错。
上面的代码实现了获取元素的计算后的样式值了,如果给一个元素赋值相信你不会陌生

object.style[attribute] = value + 'px'//注意加'px'前面使用parseInt()将获得的px过滤掉了

获取与赋值代码都齐了,在什么情况下获取属性值?又在什么情况下赋属性值那?其实仔细分析就可以发现,赋值包括三个动参[object]操控的元素对象、[attribute]设置属性、[value]设置的属性值,获取包括二个[object]操控的元素对象、[attribute]设置属性
也就是赋值有3个动参,获取值有2个动参。我们可以通过参数的差别进行if条件的判断

if(arguments.length == 2){//还可以使用判断!value是否存在进行条件判断
   //返回数值
}else{
   //赋值
}

完整代码如下:

function css(object,attribute,value){
   if(!value){
       if(object.currentStyle){
	 return parseInt(object.currentStyle[attribute]);
       }else{
	 return parseInt(getComputedStyle(object,false)[attribute]);
       }
    }else{
	 object.style[attribute] = value + 'px';
    }		
}

简化代码:

function css(object,attribute,value){
   if(!value){
       if(object.currentStyle){
	   return parseInt(object.currentStyle[attribute]);
       }
	   return parseInt(getComputedStyle(object,false)[attribute]);
    }
   object.style[attribute] = value + 'px';
}

相关 [javascritp css 封装] 推荐:

javascritp原生CSS封装函数

- - 收集分享互联网资源!
jQuery中css()使用起来是比较方便的,它即可以获取又可以设置选择元素的样式属性值. css("width")获得元素的属性值 css("width","100px")设置元素的属性值. 今天来探讨一下原生态的js是如何封装css函数,此封装的函数可获得可设置样式属性值. 一般我们获得元素的style属性值是通过element.style.attrbute来获得的,但问题在其只能获得行间样式,而无法获得非行间样式.

CSS图形

- GLORY - 酷壳 - CoolShell.cn
下面的示例展示了使用纯CSS制作的各种图形,你可以自由地修改文中的CSS代码. 经测试,IE9, Chrome, FF, Safari都可以正常显示. 五角星形 via Kit MacAllister. 心形 via Nicolas Gallagher. 无穷大 via Nicolas Gallagher.

用 Compass 寫 CSS

- Jay - Blog.XDite.net
最近在開發一個新產品,整體來說應該是接近寫完了,不過越接近完工,抓 IE 系列的 bug 就越是挫折. 朋友 @evenwu 就來洗我要不要換成 Compass,說這東西超神奇,超好用,還可以把 IE bug 殺光光. 其實之前就久仰 Compass 大名了,只是文件實在看起來太他媽的眼花繚亂,因為專案進度一直在跑,不太敢貿然換掉寫 CSS 的方式.

CSS 入门

- - 博客 - 伯乐在线
级联样式表非常简单,也就是 (X)HTML 网页之上的分层设计. 使样式表 “级联”,这样您就可以跨站点应用它 — 也就是说,将样式应用到网站,它就会自行应用到每个网页的每个元素. ●XHTML:可扩展 HTML. 对于网站,将数据与设计分离是一个重要的概念:数据使用 (X)HTML 发送到 浏览器,而设计使用 CSS 应用到该数据.

css 圆角

- - CSDN博客推荐文章
作者:kangquan2008 发表于2012-2-20 22:32:24 原文链接. 阅读:6 评论:0 查看评论.

CSS架构

- - 博客 - 伯乐在线
英文原文: CSS Architecture,编译: CSDN-张红月. Philip Walton 在AppFolio担任前端工程师,他在Santa Barbara on Rails的聚会上提出了CSS架构和一些最佳实践,并且在工作中一直沿用. 擅长CSS的Web开发人员不仅可以从视觉上复制实物原型,还可以用代码进行完美的呈现.

CSS总结

- - CSDN博客Web前端推荐文章
         接触过一段CSS,为简单理解,将CSS说成两步,一步是你做个“记号”,另一步是根据记号设置样式.      网页的内容和样式是分开的. “记号”便是能标识网页中某部分内容的关键字词(选择器),而根据记号设置样式呢,就是按图索骥根据记号设置标识的那部分内容的样式.     这段时间练习的每个CSS小例子,或是用id做记号,或是用name,或是用class,只有有了这些所谓的记号,CSS设定的样式才有用,.

CSS基础

- - CSDN博客Web前端推荐文章
1、引入CSS的四种方式. 行内样式、内嵌样式、链接样式、导入样式. 基本选择器:标签选择器,ID选择器,类选择器,通用选择器. 通用选择器:*{css代码}. 通用选择器作用:对整个网页中所有HTML标签进行样式定义. 常见用法:定义*{margin:0;padding:0}通用样式,并置于CSS文件最顶端,用于对HTML内所有的标签进行重置以保证页面能兼容多种浏览器.

CSS命名规范

- - BlogJava-首页技术区
网上整理的比较好的css命名规则,为css代码的规范化做参考,增加代码的可读性. 容器: container 页头:header 内容:content/container. 页面主体:main 页尾:footer 导航:nav . 侧栏:sidebar 栏目:column 左右中:leftright center .

css基础入门

- - CSDN博客推荐文章
css是Cascading Style Sheets的缩写,是一种用于为Html文档定义布局的样式表语言. Css是一种样式表语言,用于为html定义布局. Css弥补了Html对标记属性控制的不足. Css将网页内容与样式实现分离,使得网页设计更加明了、简洁. Css可以精确控制网页布局,如行间距、字间距、段落缩进和图片定位等.