飞道的博客

解决element ui DateTimePicker + vue 弹出框只显示小时

256人阅读  评论(0)

此文谨献给奋斗在一线的程序员朋友们,若能为你们解决问题是我的荣耀!

三个知识点:

1.css 后代选择器

https://www.w3school.com.cn/css/css_selector_descendant.asp

2.vue深度选择器

https://vue-loader.vuejs.org/zh/guide/scoped-css.html

3.element ui DateTimePicker 指定下拉框类名 popper-class

https://element.eleme.cn/#/zh-CN/component/datetime-picker

在搞清楚上述三个知识点的前提下,在vue页面的全局样式中(即不带有scoped标记的style标签中),利用css 后代选择器+vue深度选择器可以锁定要控制的element ui组件中的样式,用外层的样式类名约束了要控制的element ui组件内部的样式,所以不会造成全局所有element ui组件被污染的情况。

但是DateTimePicker比较特殊,弹出框的dom不隶属于当前的vue文件内的任何标签,所以无法在当前页用css 后代选择器+vue深度选择器锁定要自定义样式的DateTimePicker的弹出框部分。通过查阅DateTimePicker的官方文档发现可以使用popper-class来指定下拉框类名。这样就可以使用这个指定的类名+css 后代选择器在全局样式中唯一重写某个需要自定的DateTimePicker的弹出框部分。


  
  1. <template>
  2. <div class="app-container ">
  3. <el-date-picker
  4. v-model= "..."
  5. type= "datetimerange"
  6. align= "right"
  7. range-separator= "至"
  8. start-placeholder= "开始时间"
  9. end-placeholder= "结束时间"
  10. format= "yyyy-MM-dd HH"
  11. value-format= "yyyy-MM-dd HH"
  12. popper-class= "tpc"
  13. > </el-date-picker>
  14. </div>
  15. </template>
  16. <style lang="scss" scoped>
  17. ...
  18. </style>
  19. <style>
  20. .tpc .el-time-spinner__wrapper {
  21. width: 100% !important;
  22. }
  23. .tpc .el-scrollbar :nth-of-type(2) {
  24. display: none !important;
  25. }
  26. </style>

此文谨献给奋斗在一线的程序员朋友们,,若能为你们解决问题是我的荣耀!


转载:https://blog.csdn.net/tianshi527/article/details/114766526
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场