【问题标题】:Django dynamic css implementationdjango动态css实现
【发布时间】:2011-05-16 10:05:05
【问题描述】:

我有我的小博客应用程序,我希望能够从管理页面更改样式(不一定是全部)。在 django 项目中实现动态样式加载的“正确”方法是什么? 我自己的想法:

  • 通过 Python 文件 I/O 编辑 css 文件
  • 从数据库构造 css 文件
  • 虽然这两种实现都有严重的缺陷。 提前感谢您的解决方案。

    编辑:我更喜欢创意而不是 django 应用 :)

    【问题讨论】:

    • 像渲染模板一样渲染 CSS 并非不可能。您可以设置一个 url,该 url 将在参数中接收您想要的配置,并为这种情况生成 css。您将拥有 css 模板,并用您需要的内容对其进行补充。 less.js 库也可能有用,一定要检查一下!

    标签: python django dynamic-css


    【解决方案1】:

    执行此操作的“正确”方法是在顶级 div(甚至是 body)中定义一个类,它决定了该页面的主样式。该页面中的所有可样式化元素然后通过级联的魔力继承此样式:

    .master-default {
        color: black;
    }
    .master-default .bordered {
        border: green;
    }
    .master-blue {
        color: blue;
    }
    .master-blue .bordered
        border: yellow;
    }
    

    等等。现在您的管理界面只允许用户确定顶级主样式,然后您可以在基本模板中使用它:

    <div id="master" class="{{ userprofile.master_style }}">
        <div class="bordered">Border colour will vary according to master style</a>
    </div>
    

    等等

    【讨论】:

    • 不一定——你实际上可以这样做,这样默认类也在那里,并且只覆盖你真正想要的类,更具体。
    • 但是说我有 20 种不同的颜色,并想将它与 20 种不同的边框混合。最后,如果我想从整个色谱中进行选择怎么办?
    • 因此为颜色创建 20 种 css 样式,为边框创建 20 种不同样式。你可以有多个班级,每个班级一个。 这样做的好处是增加了缓存样式的机会并减少了对服务器的点击次数。压缩或缩小这 40 种样式不会增加您的页面加载量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    相关资源
    最近更新 更多