想问下我原本项目是electron13版本,今天把他升到最新了。升级到最新以后elementui样式错误,比如这样:


我试了各种版本,19以下样式正常,19以上样式错误。但是我项目中用到屏幕共享功能,需要electron22以上的版本中的配置,22以下会报错。
elementui原来是2.12版本,现在升到最新2.15了
想问下我原本项目是electron13版本,今天把他升到最新了。升级到最新以后elementui样式错误,比如这样:


我试了各种版本,19以下样式正常,19以上样式错误。但是我项目中用到屏幕共享功能,需要electron22以上的版本中的配置,22以下会报错。
elementui原来是2.12版本,现在升到最新2.15了
下午好🌅🌅🌅
本答案参考通义千问
根据你的描述,问题的核心在于 Electron 从 19 版本开始引入了一些 CSS 样式相关的更改(例如 Shadow DOM 的启用),这导致了 Element UI 的样式出现了混乱。而你需要同时满足 Electron 22+ 和 Element UI 的兼容性。
以下是详细的解决方案:
Electron 19+ 的变化
Element UI 的版本问题
需求冲突
如果你不需要 Shadow DOM 的特性,可以通过禁用它来解决样式问题。
修改 main.js 文件
在主进程中设置 webPreferences,禁用 Shadow DOM:
const { app, BrowserWindow } = require('electron');
let mainWindow;
app.whenReady().then(() => {
mainWindow = new BrowserWindow({
webPreferences: {
webviewTag: true, // 确保启用 webview
enableRemoteModule: false, // 如果不需要远程模块,可以禁用
contextIsolation: false, // 如果不需要隔离上下文,可以禁用
nativeWindowOpen: true,
preload: __dirname + '/preload.js',
disableBlinkFeatures: 'ShadowDOM', // 禁用 Shadow DOM
},
});
mainWindow.loadURL('http://localhost:8080'); // 替换为你的应用地址
});
重启应用 修改完成后重新启动应用,检查样式是否恢复正常。
如果你必须使用 Shadow DOM,可以尝试升级 Element UI 到最新版本(如 2.16 或更高),看看是否修复了相关问题。
升级 Element UI 在项目根目录运行以下命令:
npm install element-ui@latest --save
检查文档 查看 Element UI 官方文档,确认是否有针对 Shadow DOM 的适配说明。
如果上述方法都无法解决问题,可以尝试手动调整样式。
定位问题样式 使用浏览器开发者工具检查哪些样式被覆盖或丢失。
添加自定义样式 在应用中添加自定义的 CSS 文件,覆盖 Element UI 的样式。例如:
/* custom.css */
.el-button {
padding: 10px 20px !important;
font-size: 14px !important;
}
引入自定义样式 在应用入口文件中引入自定义样式:
import './custom.css';
如果你的项目对 Electron 的某些功能没有强制要求,可以考虑降级到 Electron 19-21 版本,这样可以避免 Shadow DOM 的问题。
修改 package.json
将 Electron 的版本降级到 19-21:
"dependencies": {
"electron": "^19.0.0"
}
重新安装依赖 运行以下命令:
npm install
根据你的需求和项目情况,推荐优先尝试以下步骤:
希望这些方案能帮助你解决问题!如果还有疑问,请进一步补充信息。