JQuery插件Style定制化方法的分析与比较_jquery
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/

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

element.style修改元素的方法:1、修改元素的背景顏色;2、修改元素的字體大小;3、修改元素的邊框樣式;4、修改元素的字體樣式;5、修改元素的水平對齊方式。詳細介紹:1、修改元素的背景顏色,其語法為「document.getElementById("myElement").style.backgroundColor = "red";」;2、修改元素的字體大小等等。

react動態修改style的方法:1、在需要修改樣式的元素上新增ref,其語法如「<div className='scroll-title clear-fix' ref={ this.manage }>」;2、透過動態控制狀態的變化修改元素的樣式;3、透過在DOM中使用JS程式碼實現不同DOM的展示與隱藏轉換。

style新特性Vue3.2版本對單一檔案元件的style樣式進行了許多升級,例如局部樣式、css變數以及樣式暴露給模板使用等。 (學習影片分享:vue影片教學)一、局部樣式當標籤有scopedattribute的時候,它的CSS只會應用到目前元件的元素:hi.example{color:red;}二、深度選擇器在scoped樣式中的選擇器如果想要做更「深度」的選擇,也即:影響到子元件,可以使用:deep()這個偽類:.a:deep(.b){/*...*/ }透過v-html創建的DOM內容不會被

Vue報錯:無法正確使用v-bind綁定class和style,怎麼解決?在Vue開發中,我們常常會用到v-bind指令來動態綁定class和style,但是有時候我們可能會遇到一些問題,如無法正確使用v-bind綁定class和style。在本篇文章中,我將為你解釋這個問題的原因,並提供解決方案。首先,讓我們先來了解v-bind指令。 v-bind用於將V

如何使用MySQL建立一個可自訂的會計系統表結構以滿足不同行業和企業的特定需求?引言:在現代商業環境中,會計系統發揮了至關重要的作用,幫助企業記錄和分析財務數據。然而,不同行業和企業對於會計系統的需求各不相同。為了滿足不同企業的特定需求,我們可以使用MySQL資料庫來建立一個可自訂的會計系統表結構。本文將介紹如何使用MySQL建立靈活的會計系統表結構,並提供

客製化Java框架可以滿足多樣化的業務需求。原則包括模組化設計、擴展點、可配置性、反射和動態代理。本文以SpringBoot應用程式為例展示如何自訂登入機制,支援額外的身份驗證方法,實現了在不更改框架程式碼的情況下自訂框架行為的目的。

因為文章長度有限,所以只有簡短的程式碼範例。以下是一個例子:假設我們有以下HTML結構:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewpo

在Web開發領域中,CMS(內容管理系統)逐漸成為了各類網站必備的組件之一。作為通用解決方案,CMS不僅具有良好的擴充性和可維護性,還能幫助使用者快速地建置、管理和更新網站內容。而在實際應用中,許多網站管理員或開發者需要對CMS進行個人化客製化或二次開發,以滿足自身的業務需求和使用者體驗。本文將以PHP語言為例,介紹如何使用其進行CMS客製化與二
