La interfaz de usuario del elemento Vue implementa el cambio de color del tema.
selector de color ltel
: predefine="predefineColors "
v-model="themeVal "
size= " mini "
style = " padding-top: 18px;"
class = "selector de temas"
popper-class = " selector de temas- menú desplegable "/ gt;
lt/template gt;
ltscriptgt
const? ¿Versión? =?require(' elemento-ui/paquete . JSON '). ¿Versión? //elemento-ui? versión
const? ¿Tema_original? =?#409EFF? //Color predeterminado
¿Exportar? ¿Incumplimiento de contrato? {
Nombre:? color superior',
datos()? {
¿Volver? {
Tema:? Tema_original,
Tiza:? '',
Colores predefinidos:? [//Colores preseleccionados
#ff4500',
#ff8c00',
#700franc',
#90ee90 ' ,
#00ced1 ',
#1e90ff ',
#c71585 '
]
}
},
Ver:? {//Monitoriza el color seleccionado.
¿Val(val,Valantiguo)? {
this.updateTheme(val, Oldval)
}
},
Método:? {
//Llamar a la función de actualización
updateTheme(val, oldVal)? {
¿Y si? (tipo de?val.
! ==?cadena')? Retorno
//¿Declarar constante? ¿Const
cabeza? ¿cabeza? =?documento . getelementsbytagname('head')[0]
const? temaClúster? =?this . getthemecluster(val . replace(' # ',?''))
const? ¿Clúster original? =?this . getthemecluster(antiguo val . reemplazar(' # ',?''))
const? obtenerHandler? =?(variable,?id)? =gt? {
¿Volver? ()?=gt? {
¿constante? ¿Clúster original? =?this.getThemeCluster(
ORIGINAL_THEME.replace('# ',?'')
)
const? ¿Nuevo estilo? =?this.updateStyle(
Esta [variable],
Clúster original,
Clúster de temas
)
¿Dejar? etiqueta de estilo? =?document.getElementById(id)
¿Si? (!etiqueta de estilo)? {
¿Etiqueta de estilo? =?document . createelement("estilo")
styleTag.setAttribute('id ',?id)
head.appendChild(styleTag)
}
styleTag.innerText? =?Nuevo estilo
}
}
const? ¿Manejador de tiza? =?getHandler('Tiza',?Estilo de tiza')
¿Si? (!Esta. Tiza)? {
¿constante? URL? =?`/element-ui @ $ { versión }/lib/theme-chalk/index . CSS '
this.getCSSString(url,chalkHandler?chalk')
}? ¿De lo contrario? {
ChalkProcessor()
}
constante? ¿Enlace? =?[].slice.call(
document . getelementsbytagname(' head ')[0].
getElementsByTagName('link ')
)
¿Para qué? (let?i?=?0;?i?lt?link.length;?i)? {
¿constante? ¿estilo? =?Enlace[i]
¿Si? (style.href.includes('css ')?{
this.getCSSString(style.href,?innerText?=gt?{
const?grupo original?=?this .getThemeCluster(
ORIGINAL_THEME.replace('# ',?'')
)
const? =?this.updateStyle(
p >Texto interno,
Clúster original,
Clúster de temas
)
¿Deje que styleTag?=?document. (i)
Si (!styleTag)? {
styleTag? =?document.createelement("estilo")
styleTag.id? /p>
styleTag.innerText? =?nuevo estilo
head.appendChild(styleTag)
}
})
}
}
Const? =?[]. segmento call(document . selector de consulta todo(' estilo '))
styles.forEach( ¿estilo?= gt?{
const?{
texto interior
}?=?estilo
si?(tipode?textointerior ?!==?string')? return
style.innerText? =?this.updateStyle(
texto interno,
Clúster original,
Clúster de temas
)
})
},
updateStyle(style, oldCluster? newCluster)?{
¿Nuevo estilo? =?estilo
oldCluster.forEach((color,? index)?= gt?{
¿Nuevo estilo? =?newStyle.replace( new?RegExp(color,ig'),?new cluster[index])
¿Regresar?
},
getCSSString(url, callback,? variable)? {
¿constante? xhr? =?¿Nuevo? XMLHttpRequest()
xhr.onreadystatechange? =?()?= gt? {
¿Y si? (xhr.readyState?===?4? amp amp?xhr.status?===?200)?{
¿Si? (variable)? {
¿Esta [variable]? =?xhr.responsetext.replace(/@font-face{[^}] }/?'')
}
Devolución de llamada(xhr.responseText)
p>
}
}
xhr.open('GET ',? URL)
xhr.send()
},
getThemeCluster(tema)? {
¿constante? tinteColor? =?(color,?tinte)? =gt? {
¿Dejar? ¿rojo? =?parseInt(color.slice(0, 2),?16)
¿Dejar? ¿verde? =?parseInt(color.slice(2, 4),? 16)
¿Dejar? ¿azul? =?parseInt(color.slice(4, 6),? 16)
Si? (¿tinte? ===?0)?{
¿Volver? 【rojo,? ¿verde? azul】. Unirse(',')
} ¿De lo contrario? {
¿Rojo? =?Math.round(Tono?*?(255?-?Rojo))
¿Verde? =?Math.round(¿Tono?*?(255?-?Verde))
¿Azul? =?Math.round(¿Tono?*?(255?-?Azul))
¿Rojo? =?red.toString(16)
¿Verde? =?Verde. toString(16)
¿Azul? =?blue.toString(16)
¿Regresión? `# ${rojo} ${verde} ${azul} `
}
}
const? ¿Color de sombra? =?(color,?sombra)? =gt? {
¿Dejar? ¿rojo? =?parseInt(color.slice(0, 2),?16)
¿Dejar? ¿verde? =?parseInt(color.slice(2, 4),? 16)
¿Dejar? ¿azul? =?parseInt(color.slice(4,6),?16)
¿Rojo? =?Math.round((1?-?sombra)?*?Rojo)
¿Verde? =?Math.round((1?-?sombra)?*?Verde)
¿Azul? =?Math.round((1?-?sombra)?*?azul)
¿Rojo? =?red.toString(16)
¿Verde? =?Verde. toString(16)
¿Azul? =?blue.toString(16)
¿Regresión? `# ${rojo} ${verde} ${azul} `
}
const? ¿Grupo? =?[Tema]
¿Para qué? (let?i?=?0;?i?lt=?9;?i)? {
clusters.push(tintColor(theme, number((我?/?10).toFixed(2))))
}
clusters. push(shadeColor(theme, 0.1))
¿Regresión? clúster
}
}
}
lt/script gt
ltstyle gt
. ¿Selector de temas? . elcolorpicker_ _trigger? {
Alineación vertical:? Medio;
}
. ¿Menú desplegable del selector de temas? .
el-color-dropdown__link-btn? {
Pantalla:? Ninguno;
}
lt/style gt;