html - 封装页面CSS中的元素

标签 html css

我正在尝试通过以下方式封装页面样式的 View :

<style type="text/css">
  
    *:not(.component) > button, *:not(.component) > span, *:not(.component) > p{
    		background: green;
    	}
    
    </style>
     
    <div class="component">
    	<button>Button</button>
    
    	<span>Span</span>
    
    	<p>Paragraph</p>
    </div> 

我想将上面的 css 简化为:

*:not(.component) > button, span, p{
            background: green;
        }

这仅适用于 button 的条件。

另外我想知道这种“封装”是否会影响性能?

任何帮助将不胜感激!

最佳答案

如果你对一点 JS 持开放态度,你可以利用 Shadow DOM它会自动确定标记的范围。您可能需要使用 webcomponent polyfill取决于您的目标受众,直到它具有更好的浏览器支持。

var shadow = document.querySelector('.component')
  .attachShadow({
    mode: 'open'
  })
shadow.innerHTML = `
    <button>Button</button>
    <span>Span</span>
    <p>Paragraph</p>
`
p {
    background: green;
  }
<div class="component">
</div>

<div>
  <button>Button</button>
  <span>Span</span>
  <p>Paragraph</p>
</div>

关于html - 封装页面CSS中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43006166/

相关文章:

html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?

javascript - 让一个固定的div通过点击增长到宽度100%

javascript - 在没有 Jquery 的情况下,在 mouseEnter 和 mouseLeave 上 react 停止/开始淡出

javascript - 在母版页上有选择地调用 css

html - 我将如何使这个 div 响应

html - 为什么这张图片加载不出来? (这实际上是一个 hello world 程序,具有简单的本地相对图像路径。)

HTML + CSS - 将图像发送到后台

javascript - 禁用 :hover during Css animation

javascript - 防止在 iPad Safari 中的网页之间滑动

javascript - 如何在 CSS 中同时淡入淡出