首頁  >  文章  >  web前端  >  javascript動態新增樣式(行內式/內嵌/外鍊式等規則)_javascript技巧

javascript動態新增樣式(行內式/內嵌/外鍊式等規則)_javascript技巧

WBOY
WBOY原創
2016-05-16 17:31:312471瀏覽

新增CSS的方式有行內式、內嵌式、外鍊式、導入式
a)動態引入樣式表檔:

複製程式碼

程式碼如下:


function loadLink(url){
var link = document.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href = url;
var head = document.getElmentsByTagName("head")[0];
head.appendChild(link);
}
b)嵌入式: 複製代碼

代碼如下:


function insertStyles(){
var doc,cssCode=[],cssText;
var len = arguments.length;
var head,style,firstStyle;
if(len == 1){
doc = document;
cssCode.push(arguments[0])
}else if(len == 2){
doc = arguments[0];
cssCode. push(arguments[1]);
}else{
alert("函數接收最多兩個參數!");
}
head = doc.getElementsByTagName("head")[0] ;
styles= head.getElementsByTagName("style");
if(styles.length == 0){
if(doc.createStyleSheet){//ie
doc.createStyleSheet();
}else{//FF
var tempStyle = doc.createElement("style");
tempStyle.setAttibute("type","text/css");
head.appendChild(tempStyle );
}
}
firstStyle = styles[0];
cssText=cssCode.join("n");
if(! "v1"){//opacity相容
var str = cssText.match(/opacity:(d?.d );/);
if(str!=null){
cssText = cssText.replace(str[0],"filter: alpha(opacity=" pareFloat(str[1])*100 ")");
}
}
if(firstStyle.styleSheet){
firstStyle.styleSheee.cssText = cssText;
firstStyle.styleSheee.cssText = cssText;
}else if(doc.getBoxObjectFor){
firstStyle.innerHTML = cssText;
}else{
firstStyle.appendChild(doc.createTextNode(cssText));
}
}
} } } } } } }
}

c)行內式:




複製程式碼



var addStyle=function (ele,str){
var s = ele.getAttribute("style"),styles;
if(str && typeof str === "string"){
if(! s){
ele.style.cssText = str;
}else{
if(s == '[object]'){//IE6/7 e.getAttribute("style")回傳[ object]
s=ele.style.cssText;
}
styles= trim(s).split(";");
for (var i=0,len=styles.length; ivar style_i=trim(styles[i]);
var attr=style_i.split(":")[0];
if(str.indexOf(attr) >-1){
styles[i]="";
}else{
styles[i]=style_i;
}
}
ele.style.cssText= styles .join("") ";" str;
} } } d) 導入式: import "index.css";
操作CSS 類別相關的方法:




複製程式碼


程式碼如下:


var hasClass=ftionvar. ele,value){
var rclass = /[ntr]/g,
value=" " value " ";
return (ele.nodeType==1)&&(" " ele.className " " ).replace(rclass," ").indexOf(value)>-1;
}
var trim=function (val){
return val.replace(/(^s )|(s $ )/g,"");
}
var addClass=function(ele,value){
var rspace = /s /,classNames,getClass;
if(value&&typeof value === " string"){
classNames = value.split(rspace);
if(ele.nodeType === 1){
if(!ele.className && classNames.length == 1){
ele.className = value;
}else{
getClass = " " ele.className " ";
for(var i=0,len=classNames.length; ivar cname=classNames[i];
if(!hasClass(ele,cname)){
getClass = cname " ";
}
}
ele.className = trim( getClass);
}
}
}
}
var removeClass=function(ele,value){
var rclass = /[ntr]/g,classNames,getClass;
var rclass = /[ntr]/g,classNames,getClass;
if((value&&typeof value === "string")||value === undefined){
classNames = (value||"").split(rspace);
if(ele.nodeType = == 1 && ele.className){
if(value){//存在尋找要移除的類別
getClass = " " ele.className " ".replace(rclass," ");//左右空格,為了讓類別中各類間均等,方便後面替換
for(var i=0,len=classNames.length; igetClass = getClass.replace(" " classNames[ i] " "," ")
}
ele.className=trim(getClass);
}else{//不存在移除所有類別
ele.className = "";
}
}
}
}
var toggleClass=function(ele,value){ if(typeof value === "string"){ if(hasClass(ele ,value)){ removeClass(ele,value); }else{ addClass(ele,value); } } }
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn