当前位置:   article > 正文

解决elementuiplus的button组件点击之后仍然是hover的问题以及修改主题颜色之后button的颜色问题_element-plus 按钮点击后hover样式

element-plus 按钮点击后hover样式

最近遇到了elementui的button组件的问题,到目前位置官网也是这样的。自己摸索着修复这个问题。

1、解决hover的问题

1、在文件见中定义一个scss文件(css文件好像不行,必须是sacc),在里面写以下内容。

  1. .el-button.el-button--primary:not(.is-disabled):focus {
  2. background-color: var(--el-color-primary);
  3. }
  4. .el-button.is-link:not(.is-disabled):focus {
  5. color: var(--el-button-text-color) !important;
  6. background-color: none !important;
  7. }
  8. .el-button.el-button--small:not(.is-disabled, .el-button--primary):focus {
  9. background-color: none !important;
  10. }

2、在main.ts引入它就行了

3、效果

4、存在的问题:只要点击一次之后 就不会有hover效果了。但是点击其他区域之后又有了。由于项目中对hover效果不是很敏感 所有就没有深入了。

2、解决修改主题之后颜色没有正确的问题

问题复现:

修改问题:

 在您的修改主题色的地方加上以上代码就行了

  1. import { useChangeColor } from '@/utils/theme'
  2. const { getLightColor, getDarkColor } = useChangeColor()
  3. /**
  4. * 切换主题颜色
  5. * @param color 选择的主题颜色
  6. */
  7. function changeThemeColor(color: string) {
  8. document.documentElement.style.setProperty("--el-color-primary", color);
  9. document.documentElement.style.setProperty('--el-color-primary-dark-2', `${getDarkColor(color, 0.1)}`)
  10. for (let i = 1; i <= 9; i++) {
  11. document.documentElement.style.setProperty(`--el-color-primary-light-${i}`, `${getLightColor(color, i / 10)}`)
  12. }
  13. // 将选中的颜色存到pinia中
  14. settingsStore.changeSetting({ key: "themeColor", value: color });
  15. }

theme.ts

  1. import { ElMessage } from 'element-plus'
  2. /**
  3. * 颜色转换函数
  4. * @method hexToRgb hex 颜色转 rgb 颜色
  5. * @method rgbToHex rgb 颜色转 Hex 颜色
  6. * @method getDarkColor 加深颜色值
  7. * @method getLightColor 变浅颜色值
  8. */
  9. export function useChangeColor() {
  10. // str 颜色值字符串
  11. const hexToRgb = (str: string): any => {
  12. let hexs: any = ''
  13. let reg = /^#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$/
  14. if (!reg.test(str)) {
  15. ElMessage.warning('输入错误的hex')
  16. return ''
  17. }
  18. str = str.replace('#', '')
  19. hexs = str.match(/../g)
  20. for (let i = 0; i < 3; i++) hexs[i] = parseInt(hexs[i], 16)
  21. return hexs
  22. }
  23. // r 代表红色 | g 代表绿色 | b 代表蓝色
  24. const rgbToHex = (r: any, g: any, b: any): string => {
  25. let reg = /^\d{1,3}$/
  26. if (!reg.test(r) || !reg.test(g) || !reg.test(b)) {
  27. ElMessage.warning('输入错误的rgb颜色值')
  28. return ''
  29. }
  30. let hexs = [r.toString(16), g.toString(16), b.toString(16)]
  31. for (let i = 0; i < 3; i++) if (hexs[i].length == 1) hexs[i] = `0${hexs[i]}`
  32. return `#${hexs.join('')}`
  33. }
  34. // color 颜色值字符串 | level 变浅的程度,限0-1之间
  35. const getDarkColor = (color: string, level: number): string => {
  36. let reg = /^#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$/
  37. if (!reg.test(color)) {
  38. ElMessage.warning('输入错误的hex颜色值')
  39. return ''
  40. }
  41. let rgb = useChangeColor().hexToRgb(color)
  42. for (let i = 0; i < 3; i++) rgb[i] = Math.floor(rgb[i] * (1 - level))
  43. return useChangeColor().rgbToHex(rgb[0], rgb[1], rgb[2])
  44. }
  45. // color 颜色值字符串 | level 加深的程度,限0-1之间
  46. const getLightColor = (color: string, level: number): string => {
  47. let reg = /^#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$/
  48. if (!reg.test(color)) {
  49. ElMessage.warning('输入错误的hex颜色值')
  50. return ''
  51. }
  52. let rgb = useChangeColor().hexToRgb(color)
  53. for (let i = 0; i < 3; i++) rgb[i] = Math.floor((255 - rgb[i]) * level + rgb[i])
  54. return useChangeColor().rgbToHex(rgb[0], rgb[1], rgb[2])
  55. }
  56. return {
  57. hexToRgb,
  58. rgbToHex,
  59. getDarkColor,
  60. getLightColor
  61. }
  62. }

效果 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/106186
推荐阅读
相关标签
  

闽ICP备14008679号