Vue.js Vuetife覆盖组件范围的样式
我使用Vuetify创建了一个应用程序。一个组件应显示使用dxhtmlScheduler创建的明细表。但全局Vuetify样式将覆盖本地dxhtmlScheduler样式,因此无法正确显示明细表。如何使dxhtmlScheduler样式成为比样式Vuetify具有更高优先级的特定组件Vue.js Vuetife覆盖组件范围的样式,vue.js,vue-component,vuetify.js,dhtmlx-scheduler,Vue.js,Vue Component,Vuetify.js,Dhtmlx Scheduler,我使用Vuetify创建了一个应用程序。一个组件应显示使用dxhtmlScheduler创建的明细表。但全局Vuetify样式将覆盖本地dxhtmlScheduler样式,因此无法正确显示明细表。如何使dxhtmlScheduler样式成为比样式Vuetify具有更高优先级的特定组件 <template > <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'&g
<template >
<div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'>
<div class="dhx_cal_navline">
<div class="dhx_cal_prev_button"> </div>
<div class="dhx_cal_next_button"> </div>
<div class="dhx_cal_today_button"></div>
<div class="dhx_cal_date"></div>
<div class="dhx_cal_tab" name="day_tab"></div>
<div class="dhx_cal_tab" name="week_tab"></div>
<div class="dhx_cal_tab" name="month_tab"></div>
</div>
<div class="dhx_cal_header"></div>
<div class="dhx_cal_data"></div>
导入“dhtmlx调度程序”
导出默认值{
名称:“调度程序”,
安装的(){
init(“scheduler_here”);
}
}
@导入“../../node_modules/dhtmlx scheduler/codebase/dhtmlx scheduler_material.css”;
dhtmlxScheduler生成的标记位于vue组件范围之外,因此我认为范围样式无法与之配合使用
尝试从样式声明中删除范围属性
<style>
@import "../../node_modules/dhtmlx-scheduler/codebase/dhtmlxscheduler_material.css";
</style>
@导入“../../node_modules/dhtmlx scheduler/codebase/dhtmlx scheduler_material.css”;
下面是一个相关的github问题
说明:
Vue向组件创建的html元素添加一个特殊的data-v-xxxxxxx
属性
Vue css加载器依次修改作用域css中的选择器,以便显式匹配组件内部的元素,而不匹配组件外部的元素
因此,当加载到页面时,dhtmlscheduler.css中的.dhx_-cal_-event_-line{backtrond:blue;}
变为.dhx_-cal_-event_-line[data-v-xxxxxxx]{backtrond:blue;}
。这种样式应该只影响匹配值为data-v
属性的组件
问题是,dhtmlxscheduler的DOM元素是由vue组件知识之外的库代码创建的,它们没有vuedata-v-xxxxxxx
属性,因此作用域css选择器不再匹配它们
因此,您必须将调度器css作为全局样式加载
也许有更好的解决办法,但不幸的是,我不知道
<style>
@import "../../node_modules/dhtmlx-scheduler/codebase/dhtmlxscheduler_material.css";
</style>