javascript - 在某个容器内禁用 Bootstrap CSS,停止覆盖 css

标签 javascript html css twitter-bootstrap knockout.js

我目前正在使用 bootstrap 和 knockoutjs 来显示具有某些数据实时预览的网页。例如,用户在左侧的文本框中输入标题。然后,页面的右侧更新以根据其他一些设置设置该文本的格式。所以它可能类似于

{title}

或者它可能是 {title}。然而,此时用户所要求的只是纯文本标题。

问题在于,预览实际上是用户创建的 HTML 文档。因此,一些 Bootstrap CSS 会覆盖用户指定的 CSS。所以上面的

将继承 bootstraps h1 CSS 类,而不是使用用户 HTML 模板中的任何内容。这意味着在使用创建的文档时,预览可能与实际发生的情况不同。

JSFiddle 示例:http://jsfiddle.net/Piercy/4fcmk/

HTML:

<div class="content">
<h1>Header 1</h1>

    <div id="Preview">
        <!-- Start Html Template -->
        <style>
            .header
            {
                color: red;
            }
        </style>
        <h1 class="header">Header Class</h1>
        <!-- End Html Template -->
    </div>
</div>

CSS:

.content h1
{
    color: blue;
}

用户会期望“Header Class”为红色,因为他们对内容 css 一无所知。在我的代码中,我使用的是 Bootstrap ,但这显示了该问题的简化版本。通常,您只会使 CSS 更具体,但由于用户不了解 bootstrap(或 jsFiddle 示例内容),我们真的不能指望他们修改 CSS。

我需要尝试想办法停止某个容器(在 jsFiddle 中预览 div),使用它的父级正在使用的样式表,或者想办法修改 bootstrap CSS,以便不太可能出现覆盖问题。

当然,将其粘贴在 iframe 中可以实现此目的,但我在尝试访问和修改预览时会遇到问题。

我对所有想法都持开放态度,只是想尝试找到最合适的方法来处理这种情况。我发现这很难写在纸上,所以如果难以理解,我深表歉意。

最佳答案

据我了解,没有办法告诉 CSS 不继承样式。但是,这里有一个有趣的解决方法。

获取 bootstrap.css 文件并将其放入您选择的 CSS 预处理器中(我使用的是 LESS)。

接下来,用一个 ID 或 bootstrap 类包装所有样式,如下所示:

#bootstrap { ...all the bootstrap styles go here. }

然后,将其保存为.less 文件并进行编译。您的结果将是所有从 #bootstrap 或 .bootstrap 继承的 Bootstrap 样式(取决于您是使用 ID 还是类来包装 Bootstrap 的样式)。

最后,将您的模板中您的用户不会编辑的任何标记包装在一个 div 中,并为该 div 指定 #bootstrap 的 ID 或 .bootstrap 的类,并且仅包含我们刚刚使用 LESS 处理的 Bootstrap 文件。

这会处理用户的 CSS,而不是从 bootstrap 继承。但是,您的用户仍然可以编写 Bootstrap 将继承的样式。为了解决这个问题,将用户的内容包装在一个 id 或类似#user 或 .user 的类中,并要求他们以 .user 开始他们的所有样式 > 喜欢这样:

.user > h1 {color: red;}
.user > p {font-size: 18px;} 

这应该将您的 HTML 模板的样式与您的用户的样式分开 - 它只是需要您的用户做更多的工作。

这是一个 jsfiddle演示:

关于javascript - 在某个容器内禁用 Bootstrap CSS,停止覆盖 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20974453/

相关文章:

html - 如何防止连接波斯语字符?

javascript - jqWidgets 选项卡内的 jQuery Chosen 下拉列表未正确呈现

css - 如何更改模态

javascript - 使用 "placeholder"模仿 "value"attr

php - 这个循环的模数逻辑是否正确?

jquery - 向后运行的 CSS 过渡

css - CKEDITOR - 防止将图像尺寸添加为 css 样式

javascript - Materialise css 视差图像在导航到不同的路线然后返回后消失

Javascript 日期验证 - 年份和句号

javascript - 通过单击外部叠加层关闭叠加层,在叠加层处于事件状态时突出显示叠加层按钮