js修改滚动条样式,vue中引入public中变量,public,assets文件夹的区别,echarts源码中未给容器绝对定位,默认给相对定位

109 阅读2分钟

1.通过js动态修改容器滚动条的样式 1.创建style标签

const styleDom = document.createElement('style')
styleDom.type = 'text/css'
styleDom.lang = 'scss'
styleDom.id = dom.id

2.设置innerHTML

  styleDom.innerHTML = `
/* 定义滚动条样式 */
   .${想要出现滚动条容器的类名}::-webkit-scrollbar {
     width: 100% !important;
     height: ${scrollBarSize}px !important;
     background-color: rgba(31, 65, 99, 0) !important;
   }
     /*定义滚动条轨道 内阴影+圆角*/
   .${想要出现滚动条容器的类名}::-webkit-scrollbar-track {
     box-shadow: inset 0 0 0 rgba(240, 240, 240, .5);
     border-radius: 0.1rem;
     background-color: ${getHexOpacityColor({ color: scrollBarTrackColor, opacity: (scrollBarTrackOpacity || 0) / 100 })};
   }
     /*定义滑块 内阴影+圆角*/
   .${想要出现滚动条容器的类名}::-webkit-scrollbar-thumb {
     box-shadow: inset 0 0 0 rgba(240, 240, 240, .5);
     background-color: ${this.getHexOpacityColor({ color: scrollBarSliderColor, opacity: (scrollBarSliderOpacity || 0) / 100 })};
   }

3.将标签添加进body中,给想要出现滚动条的元素添加对应类名

document.querySelector('body').appendChild(styleDom)
// 给dom添加滚动条
dom.classList.add('想要出现滚动条容器的类名')

2.vue中引入public中的变量

1.在public中新建js文件

js中可以使用变量,也可以使用window来挂载

5873ba9041db4ad1ba924dc06adb44fb.png 注意:

index.html在引入js时,js前面一定要加上/ ,否则子路由菜单刷新会报错,提示找不到js文件 如果引入js后,在template模板中使用config对象发现报错,那么可以在mounted中打印一下(应该可以打印出来),并赋值给data中的某个属性

3.vue项目中图片资源放在public还是assets中

要回答这些问题,首先,我们来了解一下public和assets文件夹:

public

public 目录下存放项目需要使用的静态资源,有更新动态显示的需求。

任何放置在 public 文件夹的静态资源都会被简单的复制,而不经过 webpack,需要通过绝对路径来引用它们。

路径设置时无需添加 public/,默认加载 public 文件夹下的图片。

不需要使用 require,否则就变成在 src/assets 文件夹寻找。

系统编译后,可替换图片;

assets

assets 目录下存放适合存放项目中所必须的图标,属于代码的一部分,只支持相对路径形式。

会通过 webpack 处理的脚本和样式表会被压缩且打包在一起,可以避免额外的网络请求。

需要使用 require,运行时就加载;

系统编译后,不能替换,因为被内部编译管理;

了解完public和assets文件夹,这些问题其实都有了答案。

public和assets文件夹的区别?

public文件夹下的图片等静态资源,不经过 webpack,通过绝对路径来引用,系统编译后,可替换;

assets文件夹下的图片等静态资源,经过 webpack,通过绝相对路径引用,系统编译后,不能替换;

3.如何克隆echarts图表

1.通过cloneNode 将对应的echarts图表节点克隆下来

2.修改克隆的节点的id和_echarts_instance_属性

3.重新调用 setOption

copyDom = echartsDom.cloneNode(true) // 克隆节点
copyDom.removeAttribute('_echarts_instance_')
copyDom.id = 'xxx'
var obj = echarts.init(copyDom) // 重新初始化容器
obj.setOption(options) // 重新绘制

4.echarts源码中如果未给容器绝对定位,则会默认给其一个position: relative

1678794015565.jpg