1.根据id或class或tag修改样式,样式名是-连接格式的。

function setStyleById(elem, styles){
if(!(elem = $(elem)) return false; for(prop in styles){
if(!styles.hasOwnProperty(prop)) continue; if(elem.style.setProperty){
elem.style.setProperty(prop, styles[prop]);
}else{
elem.style[camelize(prop)] = styles[prop];
}
}
return true;
}
Lily['setStyleById'] = setStyleById; function setStyleByClass(parent, tag, className, styles){
var elements = getElementsByClassName(className, tag, parent);
for(var i = 0; i < elements.length; i++){
setStyleById(elements[i], styles);
}
return true;
}
Lily['setStyleByClass'] = setStyleByClass; function setStyleByTag(tag, styles, parent){
parent = $(parent) || document;
var elements = parent.getElementsByTagName(tag); for(var i = 0; i < elements.length; i++){
setStyleById(elements[i], styles);
}
return true;
}
Lily['setStyleByTag'] = setStyleByTag;

2.获取class数组

function getClassNames(elem){
if(!(elem = $(elem))) return false;
return elem.className.split(/\s+/);
}
Lily['getClassNames'] = getClassNames;

3.判断是否有class

function hasClassName(elem, className){
if(!(elem = $(elem))) return false;
var classNames = getClassNames(elem); for (var i = 0; i < classNames.length; i++) {
if(classNames[i] === className) return true;
} return false;
}
Lily['hasClassName'] = hasClassName;

4.添加一个class

function addClass(elem, className){
if(!(elem = $(elem))) return false;
elem.className += (elem.className? ' ' : '') + className;
return true;
}
Lily['addClass'] = addClass;

5.删除一个class

function removeClassName(elem, className){
if(!(elem = $(elem))) return false;
var classNames = getClassNames(elem);
var length = classNames.length; for (var i = length - 1; i >= 0; i--) {
if(classNames[i] === className) delete classNames[i];
}; elem.className = classNames.join(' ');
return (length == classNames.length) ? false : true;
}
Lily['removeClassName'] = removeClassName;

6.取得一个元素的计算样式

function getComputedStyle(elem, property){
if(!(elem = $(elem)) || !property) return false;
var value = elem.style[camelize(property)]; if(!value){
if(document.defaultView && document.defaultView.getComputedStyle){
var css = document.defaultView.getComputedStyle(elem, null);
value = css ? css.getPropertyValue(property) : null;
}else if(elem.currentStyle){
value = elem.currentStyle[camelize(property)];
}
} return value == "auto" ? '' : value;
}
Lily['getComputedStyle'] = getComputedStyle;

7.渐变动画

function fadeColor(from, to, callback, duration, framesPerSecond){
function doTimeout(color, frame){
setTimeout(function (){
callback(color);
}, (duration * 1000 / framesPerSecond) * frame);
} duration = duration || 1;
framesPerSecond = framesPerSecond || 15 * duration; var frame = 1;
var r, g, b; doTimeout('rgb(' + from.r + ',' + from.g + ',' + from.b + ')', 0); while(frame < framesPerSecond + 1){
r = Math.ceil(from.r * (framesPerSecond - frame)/framesPerSecond + to.r * frame/framesPerSecond);
g = Math.ceil(from.g * (framesPerSecond - frame)/framesPerSecond + to.g * frame/framesPerSecond);
b = Math.ceil(from.b * (framesPerSecond - frame)/framesPerSecond + to.b * frame/framesPerSecond); doTimeout('rgb(' + r + ',' + g + ',' + b + ')', frame++);
}
}

例子

Lily.addEvent(window, "load", function (){
fadeColor({'r': 255, 'g': 255, 'b': 255}, {'r': 0, 'g': 0, 'b': 0}, function (color){
document.body.style.backgroundColor = color;
}, 10, 50);
});

【写一个自己的js库】 5.添加修改样式的方法的更多相关文章

  1. 总结:js中4类修改样式的方法

    前言 最近在写一个扩展右键菜单的插件,既然是插件,想着一步到位,把相关的style样式设置都丢进js文件中,直接加载一个js文件便可以使用该插件,所以今天就研究了下js批量的插入样式的方法,即addS ...

  2. 【写一个自己的js库】 3.添加几个处理字符串的方法

    1.生成重复的字符串 if(!String.repeat){ String.prototype.repeat = function (count){ return new Array(count + ...

  3. 【写一个自己的js库】 2.实现自己的调试日志

    还是本着学习的目的,实现一个自己的调试日志,界面很简单,就是将调试信息显示在页面的正中央,用一个ul包裹,每条信息就是一个li. 1.新建一个myLogger.js文件,将需要的方法声明一下.其中va ...

  4. 【写一个自己的js库】 1.搭个架子先

    最近在看<javascript dom 高级程序设计>,想着跟着里面的代码敲一遍吧,也算是做一下学习笔记吧,所以这不是重新发明轮子,只是个学习的过程. 1.先确定自己的命名空间,并且加入几 ...

  5. 【写一个自己的js库】 4.完善跨浏览器事件操作

    1.阻止冒泡. function stopPropagation(event){ event = event || getEvent(event); if(event.stopPropagation) ...

  6. 仿照jquery封装一个自己的js库(一)

    所谓造轮子的好处就是复习知识点,加深对原版jquery的理解. 本文系笔者学习jquery的笔记,记述一个名为"dQuery"的初级版和缩水版jquery库的实现.主要涉及知识点包 ...

  7. 仿照jquery封装一个自己的js库

    所谓造轮子的好处就是复习知识点,加深对原版jquery的理解.本文系笔者学习jquery的笔记,记述一个名为"dQuery"的初级版和缩水版jquery库的实现.主要涉及知识点包括 ...

  8. Java基础-接口.编写2个接口:InterfaceA和InterfaceB;在接口InterfaceA中有个方法void printCapitalLetter();在接口InterfaceB中有个方法void printLowercaseLetter();然 后写一个类Print实现接口InterfaceA和InterfaceB,要求 方法 实现输出大写英文字母表的功能,printLowerca

    #34.编写2个接口:InterfaceA和InterfaceB:在接口InterfaceA中有个方法void printCapitalLetter():在接口InterfaceB中有个方法void ...

  9. MySql表、字段、库的字符集修改及查看方法

    这篇文章主要介绍了MySql表.字段.库的字符集修改及查看方法,本文分别给们它的修改及查看语句,需要的朋友可以参考下 修改数据库字符集: 代码如下: ALTER DATABASE db_name DE ...

随机推荐

  1. BNUOJ flower (搜索)

    春天到了,师大的园丁们又开始忙碌起来了. 京师广场上有一块空地,边界围成了一个多边形,内部被划分成一格一格的.园丁们想在这个多边形内的每一格内种植一些花. 现在请你帮忙计算一下一共最多可以种多少花. ...

  2. 关于STM32工程的错误,狗血错误。。。..\CMSIS\core_cm3.h(1087): error: #20: identifier "IRQn_Type" is undefined

    这件事还是要写一篇博客了,为了后来的人不换致命性的错误 辛辛苦苦写的一个四个不同的引脚不同时钟不同寄存器分别产生四种不同占空比不同周期的信号方波程序超级经典  PS:页尾上传PWM波形产生工程附件供大 ...

  3. jsp执行数据库查询并分页

    需求: 有一批企业的基本信息需要展示出来,要求一级页以列表形式展示企业清单,点击公司名称后进入二级页面,二级页面展示企业简介和几张图片. 实现效果: 开发环境: Win7,Eclipse,Mysql ...

  4. error: ‘shared_ptr’ in namespace ‘std’ does not name a type

    用G++编译项目的时候发生标题上的错误,原因是,这是c++ 11标准的.在给g++传递命令行的时候加上-std=c++0x就行了. 还需要在源码中#include<memory> 我的cm ...

  5. JAVA的类加载器,详细解释

    JVM规范定义了两种类型的类装载器:启动内装载器(bootstrap)和用户自定义装载器(user-defined class loader). 一. ClassLoader基本概念 1.ClassL ...

  6. linux下mysql数据库的操作

    本文主要针对linux下mysql数据库的安装,以及数据库的创建和简单的数据库操作进行说明. ①.Mysql数据库的安装: 数据库的安装分为源码安装和rpm安装. 当然对于老手来说需要进行一些自定义的 ...

  7. html5 laboratory - drawing in the canvas

    html5 laboratory - drawing in the canvas Creating a bar chart with canvas 21st February 2010 The exp ...

  8. 使用jquery获取网页中图片的高度——解惑

    jQuery获取网页中图片的高度 使用jquery获取网页中图片的高度其实很简单,有两种常用的方法都可以打到我们的目的 $("img").whith();(返回纯数字) $(&qu ...

  9. CSS3初步

    一.CSS与CSS3的区别 非常简单,CSS代表"Casading Style Sheets",就是样式表,是一种替代并为网站添加样式的标记性语言.现在所使用的CSS基本是在199 ...

  10. Struts2(五)——核心拦截器

    Struts框架一共为我们提供了35个拦截器,其中默认的拦截器有18个,框架访问action的异常处理,配置信息处理,转发重定向选择,上传等等等等,都是这18个拦截器中设置的,起着非比寻常的作用.而这 ...