复制 let res = []
var splitCssValue = function(CssValue,startIndex){
var cssStr = CssValue.slice(startIndex)
let bracketsIndex = 0
if (cssStr.indexOf('var(') >= 0 ){
var start = cssStr.indexOf('var(');
for(var I=start+4; I<cssStr.length; I++){
//get effective var() form selector
if(cssStr[i] == '('){
bracketsIndex++
}
if(cssStr[i] == ')'){
if(bracketsIndex == 0){
//This is a effective var()
var end = i+1
let valueString = cssStr.slice(start,end)
let ValueIndex = 0
let resSrt = ‘’
//exclude ‘var(‘ and ‘)’ form cssValueString
for(let ch = 0; ch < valueString.length; ch++){
if(valueString[ch]==‘v’ && valueString.slice(ch,ch+4) == ‘var(‘){
ValueIndex++
ch+=3;
continue;
}
if(valueString[ch] == ')' && ValueIndex>0){
ValueIndex--
continue;
}
resSrt+=valueString[ch]
}
var re = /,(?![^(]*\))/
res.push({
start: start+startIndex,
end: end+startIndex,
varString: valueString,
varValue:resSrt.split(re)
})
return splitCssValue(CssValue,startIndex+end)
}else{
bracketsIndex--
}
}
}
//brackets number discord law
return false
}
return true;
}
function doTurn(){
const varReg = /var\(.*?\)/gi
if (cssValue && varReg.test(cssValue)) {
const originalValue = cssValue.replace(/^\s+|\s+$/g, '')
let res = ''
this.cssVariableList = []
console.log('originalValue', originalValue)
if (this.analysisCssVariables(originalValue, 0)) {
console.log('cssVariableList', this.cssVariableList)
this.cssVariableList.map(CssVariable => {
if (CssVariable.valueName.length > 0) {
for (let I = 0; I < CssVariable.valueName.length; I++) {
const name = CssVariable.valueName[I].replace(/^\s+|\s+$/g, ‘’)
if (name.slice(0, 2) == ‘—‘) {
const css = getComputedStyle(node).getPropertyValue(name)
console.log('css,name', css, name)
if (css) {
res = originalValue.replace(
originalValue.substring(CssVariable.startIndex, CssVariable.endIndex),
css
)
return
}
} else {
if (name) {
res = originalValue.replace(
originalValue.substring(CssVariable.startIndex, CssVariable.endIndex),
name
)
return
}
}
}
}
})
console.log('last Res', res)
return res
} else {
return cssValue
}
}
}