html - 如何摆脱内部元素小部件中的 CSS 级联

标签 html css

我有一个包含大量页面的网络应用程序。每个页面都有一些模态窗口。

这种带有模态的页面结构如下:

<div class='page1'>
     <p>Page 1 content here</p>
     <div class='modal'><p>Modal window</p>
</div>

问题是如何分离模态和页面的css样式,即让页面样式不影响模态样式。

例如,样式 p { font-weight: 900 } 将同时影响页面和模态段落。

澄清一下:问题不在于如何编写通过 div.page + p 缩小选择器的 css 选择器, 它的问题是如何将小部件的 HTML 组织为模式,这些模式在上下文中绑定(bind)到某些元素/页面/组件。

最简单的解决方案是将所有这些模态框放在页面组件之外,但这会降低可读性,因为不清楚模态框属于哪个上下文模态框。

最佳答案

虽然您可以定义一堆样式来删除页面中可能已设置的所有可能样式,以便为您的小部件准备好清除它,但如果您可以控制此代码结构,这不是一个很好的方法。

更好的方法是在语义上使用 CSS 并定义一组适用于您的页面样式的类名,而不使用通用标签选择器,除非您确实希望标记中的 every 标签使用那种风格。

p { somestyles: here; }

应该意味着每个 p 都必须遵守这一点,无论它来自哪里,小部件等等。如果你想让我的内容中的 p 遵循我的风格,那么写

.mycontent > p { somestyles: here; }

并让标记成为

<div class="page1 mycontent">
     <p>Page 1 content here</p>
     <div class="modal"><p>Modal window</p>
</div>

说出你真正的意思,CSS 会更自然地流动。

编辑

iframe 将停止级联,但您随后要从标记中完全删除小部件(到另一个文件),这听起来像是您不想要的。

对我来说,模态与调用它们的标记是分开的,可以放在其他地方,如果开发人员需要知道该信息,您可以在打开它的地方添加注释。一种模式可以合法地被页面上的许多元素重复使用。

至于停止容器影响它们的内容,这就是它们在 CSS 领域的作用,但如果你真的想解决它,那么你可以创建一个“重置”类,将所有样式属性设置回它们在应用样式之前的样子。不过,没有办法只关闭级联。

关于html - 如何摆脱内部元素小部件中的 CSS 级联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25177807/

相关文章:

javascript - 使用 Flask 在 html 中引用 .js 文件的静态资源问题

html - 在 Joomla 中添加 CSS 容器

html - CSS网格中 `span 1/span 1`是什么意思?

php - 是否可以将 html 类添加到 phpMyEdit 生成的表中?

javascript - 如何使用 Bootstrap 多选根据第一个菜单显示(阻止/无)第二个菜单

html - 如何使用 html-inline 将在我的 css 中添加的自定义字体添加到我的 reveal.js 演示文稿中?

javascript - 如何遍历 div 中的 ul 元素并在提交时单独隐藏它们?

android - 如何在 Amazon FireTV HTML5 网络应用程序中防止白日梦模式?

html - 我怎样才能在底部制作 100 及以下?

html - 如何通过绝对div调整div的大小