首页 > 其他分享 >如何给shadow DOM下的元素添加样式

如何给shadow DOM下的元素添加样式

时间:2022-08-28 00:44:16浏览次数:46  
标签:style DOM 样式 作用域 组件 shadow CSS

一、问题描述

项目中在dom结构里遇到了shadow-DOM(open),如下

是一个表格组件,主要感觉滚动条有点low,需要自定义

但发现自己写的样式渗透不进去╮(╯▽╰)╭

Shadow DOM

Shadow DOM 这款工具旨在构建基于组件的应用。因此,可为网络开发中的常见问题提供解决方案:

  • 隔离 DOM:组件的 DOM 是独立的(例如,document.querySelector() 不会返回组件 shadow DOM 中的节点)。

  • 作用域 CSS:shadow DOM 内部定义的 CSS 在其作用域内。样式规则不会泄漏,页面样式也不会渗入。

  • 组合:为组件设计一个声明性、基于标记的 API。

  • 简化 CSS - 作用域 DOM 意味着您可以使用简单的 CSS 选择器,更通用的 id/类名称,而无需担心命名冲突。

  • 效率 - 将应用看成是多个 DOM 块,而不是一个大的(全局性)页面。

Shadow DOM 与普通 DOM 相同,但有两点区别:

  • 创建/使用的方式;

  • 与页面其他部分有关的行为方式。

通常,您创建 DOM 节点并将其附加至其他元素作为子项。 借助于 shadow DOM,您可以创建作用域 DOM 树,该 DOM 树附加至该元素上,但与其自身真正的子项分离开来。这一作用域子树称为影子树。被附着的元素称为影子宿主。

二、解决方法

先获取shadow-root的父级节点,然后用shadowRoot取得这个父级节点的shadow块,然后就可以进行操作了

let gtx = document.querySelector('.esri-grid__grid');
let style = document.createElement("style");
style.innerHTML =
  "#table::-webkit-scrollbar-track {background-color: #fff;}#table::-webkit-scrollbar {width: 8px;height:8px;opacity: 0.9;}#table::-webkit-scrollbar-thumb {border-radius: 8px;background-color: #dddee0;}";
gtx.shadowRoot.appendChild(style);

有时候可能由于页面还未渲染,获取的节点为空,我们可以在外出套个setTimeout(()=>{...},200)

是不是好看多了O(∩_∩)O哈哈~

标签:style,DOM,样式,作用域,组件,shadow,CSS
From: https://www.cnblogs.com/echohye/p/16631876.html

相关文章

  • CSS 设置滚动条样式 ::-webkit-scrollbar
    ::-webkit-scrollbar仅仅在支持WebKit的浏览器(例如,谷歌Chrome,苹果Safari)可以使用.::-webkit-scrollbar—整个滚动条.::-webkit-scrollbar-button—滚动条上......
  • vue3 基础-样式绑定语法
    本篇讲vue通过数据去进行dom样式的绑定操作,主要分为字符串,数组,对象等方式,这个非常好理解,凭着我们朴素的情感就能一步领悟到位的,就还是演示一段吧.字符&......
  • HTML DOM setTimeout() 方法
    HTMLDOMsetTimeout()方法 https://www.w3school.com.cn/jsref/met_win_settimeout.asp定义和用法setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式。语......
  • js删除css样式
    js删除css样式_百度知道 https://zhidao.baidu.com/question/680409425108037292.html 1、如果使用class加的样式的话,可以使用document.getElementById("objid......
  • 论文笔记 - ToAlign: Task-oriented Alignment for Unsupervised Domain Adaptation
    摘要文章提出了一个任务导向的无监督域自适应。认为不是所有的特征都需要对齐,而是根据任务的先验知识,将源域特征分解为与任务相关的要对齐的,和与任务无关的可忽略的。......
  • JavaScript DOM高级程序设计 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1qalRsOEuBZT1rJ8NyCaE2A点击这里获取提取码《JavaScriptDOM高级程序设计》是JeffreySambells和AaronGustafson合作编著......
  • 论文笔记 - Unsupervised Domain Adaptation by Backpropagation
    摘要提出了一个新的深度架构的域自适应方法,可在有大量标记数据的源数据和大量未标记数据的目标域上进行训练该方法促进“深度特征”的出现(深度特征)对于学习任务有主......
  • 大家都能看得懂的源码 - ahooks 是怎么处理 DOM 的?
    本文是深入浅出ahooks源码系列文章的第十三篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。本篇文章探讨一下ahooks对DOM类Hooks使用规范,以......
  • 【WPF】二、样式基础
    <Windowx:Class="WpfApp1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/wi......
  • css样式
    white-space:nowrap;/*强制span不换行*/display:inline-block;/*将span当做块级元素对待*/width:260px;/*限制宽度*/overflow:hidden;/*超出宽度部......