【问题标题】:Is it possible to edit or modify css file at run time?是否可以在运行时编辑或修改 css 文件?
【发布时间】:2009-10-28 15:17:05
【问题描述】:

我有一个类名为“changebackgroundcolor”的样式表,我想在运行时更改 css 类的颜色会改变。

.changebackgroundcolor{
background-color: #21606E;}

如果我更改了我的颜色选择器中的背景代码,那么它将在这里永久更改。

此代码或任何 asp.net 代码是否有任何 jquery。

我为此做什么?

【问题讨论】:

  • 当您说“永久”时,您的意思是 1) 直到用户离开此页面,2) 对于此用户,永远,还是 3) 对于所有用户,永远?
  • 永远为这个用户实际上我想为这个用户同时编辑css
  • 如果你只是想为这个用户做这件事,你可能想跟踪你的 css 更改,当用户完成自定义时,通过 AJAX 或其他方法将它们提交到服务器,将所述更改存储在你的数据库,然后根据登录的用户动态生成每个页面加载的 CSS。有点工作,但相当简单。

标签: asp.net jquery


【解决方案1】:

是否可以编辑或修改css 运行时的文件?

这是可能的,但不建议这样做。您的建议是将您的 asp.net 应用程序变成一个文件编辑器。这将涉及提高应用程序安全上下文(运行它的用户)的权限,这会打开一大堆蠕虫。

最简单的替代方法是通过向您的页面写入一个新的<style type="text/css"> 元素来将类注入到您的asp.net 页面中,该元素包括您想要动态生成的css 类。

例如,您可以将 background-color 保存到 UserSettings 表(或任何其他每用户持久性机制),然后将其加载到您的 .aspx 页面中,如下所示:

<style type="text/css">
    .changebackgroundcolor {
        background-color: <%= user.BackgroundColor %>;
    }
</style>

或者您可以将类定义保存在 css 文件中。不是直接将 发送到页面中,而是动态编写一些 jQuery 代码来更改类的定义,遵循其他答案中的一些示例。

【讨论】:

  • 听起来他不想修改 .css 文件 - 只是浏览器在内存中为当前页面保存的版本。
  • @David - 我认为恰恰相反,基于问题名称和“永久更改此处”的愿望。如果结果不是这样,我会尽快删除它!
  • 我不想在页面中看到这个。我想更改 .css 文件。
【解决方案2】:

您可以在 jquery 中使用“changebackgroundcolor”类更改所有元素:

$(".changebackgroundcolor").css("background-color", "#21606E");

这将在您的页面刷新之前生效,但不会保存在 .css 文件中。

【讨论】:

  • 感谢您的回复,但我想保存到 .css 文件中。你有其他方法吗?
  • 您可以将背景颜色保存到 cookie 中并加载。这样每个用户都会有所不同,并在用户返回您的网站时加载正确的颜色。我建议为此使用 $.cookie() 插件。
【解决方案3】:

您对 DOM 所做的任何更改(例如,使用 jQuery)都不是永久性的。您必须在每次更改时重新编写 CSS 文件,或者在每次点击时动态地在 HTML 或 jQuery 代码中生成 CSS 文件、样式部分。

【讨论】:

  • 可以解释一下,或者你有任何类型的例子
【解决方案4】:

您可以在运行时添加、删除和修改 CSS 样式。 Here 是一个快速概览,jQuery 文档也很有帮助。

【讨论】:

  • 那篇文章是指修改分配给对象的样式,而不是修改样式本身的内容。我认为 OP 正在寻找一种方法来更改样式定义,以便继承该样式的所有对象都会受到所述更改的影响。
  • “样式的内容”是指在 CSS 中显式创建的类。
  • 其实我想根据颜色修改类,它也会对.css文件生效
【解决方案5】:

我不知道修改 CSS 定义本身的方法,但您可以根据类进行修改:

$('.changebackgroundcolor').css('background-color', '#21606e'); 

如果要返回默认值,请使用

$('.changebackgroundcolor').css('background-color', ''); 

如果不清楚 - 这两个更改对象都具有“changebackgroundcolor”类,例如

<span id="mySpan" class="changebackgroundcolor"></span>

通过添加样式属性。

更新:找到一个相关的 SO 线程,其中包含指向 jQuery plugin 的链接,这可能会起到作用: jQuery equivalent of YUI StyleSheet Utility?

【讨论】:

  • -1 是怎么回事?这是一个回答问题的明确帖子。
【解决方案6】:

您无法更改现有的 css 类。但你可以重新定义它——添加新的&lt;style&gt;&lt;/style&gt; 来带领你的新班级 像这样:

$('head').append('<style>YOUR NEW STYLE</style>');

评论家注意: 好吧,作者询问如何更改整个样式定义。不是关于如何覆盖特定元素的设置(当然可以使用 jQuery css 函数来完成)。

我的建议:创建两个具有不同背景颜色的不同类,然后使用 add/removeClass

【讨论】:

    猜你喜欢
    • 2016-08-17
    • 1970-01-01
    • 2011-07-16
    • 2011-07-17
    • 2018-12-28
    • 2017-04-26
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    相关资源
    最近更新 更多