在Vue项目中动态修改Element-UI的el-input输入框选中状态(聚焦状态)的背景色,可以通过以下几种方法实现:
/* 全局样式或在组件中加上scoped */
.el-input__inner:focus {
background-color: your-color !important;
}
动态修改可以通过绑定class或style:
<template>
<el-input
:class="{'custom-focus': isActive}"
:style="{'--focus-bg-color': dynamicColor}"
></el-input>
</template>
<style>
.custom-focus .el-input__inner:focus {
background-color: var(--focus-bg-color) !important;
}
</style>
<script>
export default {
data() {
return {
isActive: true,
dynamicColor: '#ffebee'
}
}
}
</script>
如果使用了scoped样式,需要使用深度选择器:
<style scoped>
/deep/ .el-input__inner:focus {
background-color: #ffebee;
}
</style>
或者使用新的::v-deep
语法:
<style scoped>
::v-deep .el-input__inner:focus {
background-color: #ffebee;
}
</style>
<template>
<div class="input-container">
<el-input v-model="input" placeholder="请输入内容"></el-input>
</div>
</template>
<script>
export default {
data() {
return {
input: '',
focusColor: '#ffebee'
}
},
mounted() {
document.documentElement.style.setProperty('--focus-bg-color', this.focusColor);
},
methods: {
changeFocusColor(color) {
this.focusColor = color;
document.documentElement.style.setProperty('--focus-bg-color', color);
}
}
}
</script>
<style>
.input-container {
--focus-bg-color: #ffebee;
}
.el-input__inner:focus {
background-color: var(--focus-bg-color) !important;
}
</style>
// 全局指令
Vue.directive('focus-bg', {
bind(el, binding) {
const input = el.querySelector('.el-input__inner');
input.addEventListener('focus', () => {
input.style.backgroundColor = binding.value;
});
input.addEventListener('blur', () => {
input.style.backgroundColor = '';
});
}
});
// 使用
<el-input v-focus-bg="'#ffebee'"></el-input>
!important
是为了覆盖Element-UI的默认样式选择哪种方法取决于你的具体需求和项目结构。对于简单的静态修改,方法一就足够了;如果需要动态切换颜色,方法三或方法四更为合适。