JQuery插件Style定制化方法的分析与比较

1前言
最近因为项目的需要,使用了一个JQuery插件。把插件下下来后,很快我就发现,很多默认的插件Style不符合项目要求,必须要被修改。
在这个过程中,我发现自己先后使用了多种不同的方法实现插件Style的定制化。很高兴最后找到了我认为最好的方法,对CSS的认识也加深了不少,感触颇多。这篇文章就是对这些新的CSS的认识的一个梳理。
2JQuery 插件Style 定制化方法
2.1 初始化插件时输入定制化对象
做的比较好的插件会在初始化时允许输入定制化对象。
如果输入定制化对象,插件会使用定制化对象中的值,例如,


代码如下:

var adgallerySetting = {
width: 600, // Width of the image, set to false and it will read the CSS width
height: 400, // Height of the image, set to false and it will read the CSS height
}
var galleries = $('.ad-gallery').adGallery(adgallerySetting);

如果不输入定制化对象,插件会使用它自己的默认值,例如,
var galleries = $('.ad-gallery').adGallery();
2.2 修改插件的CSS
如果插件没有提供定制化对象或你想要修改的Style不在定制化对象定义里,一个比较直观的方法是修改插件的CSS文件。这不是一种值得提倡的方法,因为这会Corrupt插件的本身的源代码,且不利于以后插件版本的更新。
2.3 注册Callback函数
大部分插件还在定制化对象里定义Callback函数。如果Callback函数在插件完成style enhance后调用,你可以写这个Callback并注册,在Callback里修改DOM模型,从而完成插件style的定制化。这种方法比较繁琐,需要你花比较多的时间去理解插件内部的实现。例如,


代码如下:

var adgallerySetting = {
// All callbacks has the AdGallery objects as 'this' reference
callbacks: {
// This gets fired right before old_image is about to go away, and new_image
// is about to come in
beforeImageVisible: function(new_image, old_image) {
// Do something wild!
var thing = "this is it";
//Change the plugin enhanced page
$(".ad-gallery .ad-image-wrapper .ad-image").removeAttr("style");
$(".ad-gallery .ad-image-wrapper .ad-image").css("width", "100%");
var width = $(".ad-gallery .ad-image-wrapper .ad-image img").attr("width");
$(".ad-gallery .ad-image-wrapper .ad-image img").attr("width", "100%");
$(".ad-gallery .ad-image-wrapper .ad-image .img").attr("width", 100%);
$(".ad-gallery .ad-image-wrapper .ad-image").attr("height", 100%);
}
}
};

2.4 增加一个新的CSS文件,重载插件的部分style
CSS是cascading style sheet 的缩写,固名思义,它有一个Cascading 标准。当多个CSS 文件对同一个HTML element的style定义有冲突时,它会根据以下规则决定apply哪个CSS style.
1) ! Important 标识。
2) 来源。 Author (HTMl链入的CSS文件), Reader(Web surfer), User agent(Browser)
3) 相关性。
具体可以查看参考部分的链接网页。
这种方法,在我看来是除1.1 外最好的方法,下面是些代码示例。


代码如下:

#descriptions .ad-image-description {
position: absolute;
}
#descriptions .ad-image-description .ad-description-title {
display: block;
}
.ad-gallery .ad-image-wrapper .ad-image {
width: 100% ! important;
left: 0px ! important;
}

3总结
根据这次的经验,我觉得定制插件Style的最好方法输入定制化对象(如果插件支持的话)或CSS重载。有些插件会以在HTML element中加入style="...."的方式定义style。在这种情况下,你就会发现,“! important”标识的出现是相当的令人舒心。J
4参考
http://www.w3.org/TR/CSS21/cascade.html
http://stackoverflow.com/questions/7022344/css-newbie-questions-on-authors-style-readers-style-agents-style
http://htmlhelp.com/reference/css/structure.html
http://css-tricks.com/override-inline-styles-with-css/

(0)

相关推荐

  • jquery 设置style:display的方法

    ("#id").css('display','none'); $("#id").css('display','block'); 或 $("#id")[0].style.display = 'none'; $("#id")返回的是JQuery 它是个集合肯定有display属性 $("#id").show()表示display:block, $("#id").hide()表示display

  • 原生js和jQuery随意改变div属性style的名称和值

    一些简单的例子,用原生js和jQuery实现随意改变div属性,和重置.代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>函数传参,改变Div任意属性的值</title> <style type="text/css"> body,p{margin:0;padding:0;} body{color:#3

  • JQuery插件Style定制化方法的分析与比较

    1前言 最近因为项目的需要,使用了一个JQuery插件.把插件下下来后,很快我就发现,很多默认的插件Style不符合项目要求,必须要被修改. 在这个过程中,我发现自己先后使用了多种不同的方法实现插件Style的定制化.很高兴最后找到了我认为最好的方法,对CSS的认识也加深了不少,感触颇多.这篇文章就是对这些新的CSS的认识的一个梳理. 2JQuery 插件Style 定制化方法 2.1 初始化插件时输入定制化对象 做的比较好的插件会在初始化时允许输入定制化对象. 如果输入定制化对象,插件会使用定

  • jQuery插件制作之参数用法实例分析

    本文实例讲述了jQuery插件制作之参数用法.分享给大家供大家参考.具体分析如下: 1.无参数实现文字阴影效果 jQuery.fn.shadow =function(){ return this.each(function(){ var $originalElement = jQuery(this); for(var i = 0;i < 5;i++){ $originalElement.clone() .css({ position :"absolute", left :$ori

  • jQuery插件JWPlayer视频播放器用法实例分析

    本文实例讲述了jQuery插件JWPlayer视频播放器用法.分享给大家供大家参考,具体如下: JWPlayer 插件播放视频播放器 使用方法: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html; charset=UTF-8"%> <!DOCTYPE html> <

  • jQuery插件版本冲突的处理方法分析

    本文实例分析了jQuery插件版本冲突的处理方法.分享给大家供大家参考,具体如下: jQuery 的某个插件 当有多个版本同时可能会有冲突,导致代码错误 参考typeahead的处理方法,可以在插件中增加noconflict 方法来解决这个问题(在进入版本的时候讲老版本保存,退出的时候还原老版本) demo如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&

  • jquery 插件重新绑定的处理方法分析

    本文实例讲述了jquery 插件重新绑定的处理方法.分享给大家供大家参考,具体如下: 比如有一个slide的jquery插件,页面打开就对dom进行了绑定. <div class="expert"> <div class="expert-list"> <ul> <li class="expert-item"> <a href="#" rel="external n

  • jquery插件bxslider用法实例分析

    本文实例讲述了jquery插件bxslider用法.分享给大家供大家参考.具体用法如下: 首先调用对应js文件: <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery.bxslider.js"></script> jQuer

  • jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)

    本文实例讲述了jQuery插件之jQuery.Form.js用法.分享给大家供大家参考,具体如下: 一.jQuery.Form.js 插件的作用是实现Ajax提交表单. 方法: 1.formSerilize()  用于序列化表单中的数据,并将其自动整理成适合AJAX异步请求的URL地址格式. 2.clearForm()   清除表单中所有输入值的内容. 3.restForm    重置表单中所有的字段内容.即将所有表单中的字段恢复到页面加载时的默认值. 疑问:ajaxForm()与ajaxSub

  • jquery插件格式实例分析

    本文实例讲述了jquery插件格式.分享给大家供大家参考,具体如下: 现在打算给公司写一个公共组件,常用的工具很多都是jquery,很多时候一些插件特效也是基于jquery写的,因此工作中难免会遇到要拓展别人写的插件. 下面我简单的描述一下插件的格式: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transit

  • PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例

    平时用的比较多的JQuery图片上传插件是Uploadify这个插件,效果很不错,但是由于手机不支持flash,所以不得不再找一个文件上传插件来用了.后来发现ajaxFileUpload这个插件挺不错,所以就用这个插件来做异步上传文件的效果.网上也有很多对ajaxFileUpload插件的使用的文章,不过我发现没有PHP版,所以这次服务器那边的处理就使用PHP语言来处理. 一.详解ajaxFileUpload插件的语法参数 原理:ajaxfileupload是通过监听iframe的onload方

  • 基于Jquery插件Uploadify实现实时显示进度条上传图片

    先了解了解Uploadify,具体内容如下 Uploadify是一个简单易用的多文件上传方案.作为一个Jquery插件,Uploadify使用简单,并具有高度的定制性. Uploadify特性: Uploadify简单说来,是基于Jquery的一款文件上传插件.它的功能特色总结如下: 1).支持单文件或多文件上传,可控制并发上传的文件数 2).在服务器端支持各种语言与之配合使用,诸如PHP,.NET,Java-- 3).通过参数可配置上传文件类型及大小限制 4).通过参数可配置是否选择文件后自动

随机推荐