【发布时间】:2014-01-25 07:15:18
【问题描述】:
我目前正在使用 bootstrap 和 knockoutjs 来显示一个可以实时预览某些数据的网页。例如,用户在左侧的文本框中输入标题。然后,页面右侧会更新以根据其他一些设置格式化该文本。所以它可能类似于
{title}
或者它可能是 {title}。但是,此时用户请求的只是纯文本标题。问题在于,预览实际上是用户创建的 HTML 文档。因此,一些引导 CSS 会覆盖用户指定的 CSS。所以上面的
将继承引导 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;
}
用户会期望“标题类”是红色的,因为他们对内容 css 一无所知。在我的代码中,我使用的是引导程序,但这显示了问题的简化版本。通常,您只会使 CSS 更具体,但由于用户不了解引导程序(或在 jsFiddle 示例内容中),我们不能真正期望他们修改 CSS。
我需要尝试找出一种方法来停止某个容器(在 jsFiddle 中预览 div),使用它的父级正在使用的样式表,或者找出一种我可以修改引导 CSS 的方法,以便不太可能出现覆盖问题。
当然,将它粘贴在 iframe 中可以实现这一点,但我会在尝试访问和修改预览时遇到问题。
我对所有想法持开放态度,只是想尝试找到最合适的方法来处理这种情况。我发现这很难写在纸上,所以如果难以理解,我深表歉意。
【问题讨论】:
-
您可以将样式作为 HTML 属性放在您想要红色的
<h1>标记上:<h1 class="header" style="color: red;">Header Class</h1>Fiddle:jsfiddle.net/Pfzw3 -
是的,这也是可行的,但我们试图做的是尽量减少用户的工作。所以我们真的不希望他们不得不修改他们的旧模板或改变他们的开发风格。有些很草率,有些则非常好,提供了很棒的 CSS。我们基本上只是试图简化内容编写者的流程,这样他们就不必干扰设计来输入他们的内容。
-
这可能会有所帮助:stackoverflow.com/questions/958170/…
标签: javascript html css twitter-bootstrap knockout.js