【问题标题】:Pass a variable to sass from programming language (coldfusion or PHP)将变量从编程语言(coldfusion 或 PHP)传递给 sass
【发布时间】:2012-01-24 10:18:07
【问题描述】:

我想将一个变量从 Coldfusion 或 php 传递给我的 sass。

在上面我声明了一个 var,我需要将它传递给 sass 以在我的 _base.sass 中设置容器大小。

有办法吗?

【问题讨论】:

  • 这个的用例是什么?用户访问您的站点,您捕获他们的浏览器窗口大小,将其传递给 Sass,编译给定该值的 CSS,然后渲染页面?听起来效率很低。

标签: haml sass


【解决方案1】:

使用变量中的 !default 标志来执行此操作。这就是我的意思

// SCSS file
@import "php-variables"; // have php write this file first before compiling
@import "variables"; // custom colors, font-sizes, etc.

// contents of php-variables

$myvar: #f00; // the value you're setting with php

// contents of variables

$myvar: #0f0 !default; // the value to use if php DOESN't override it.

这样,如果您的 php 代码不需要覆盖 var,您仍然可以有一个备用方案。您在 php 文件中写入的任何内容都将首先声明。那么只要您的变量文件在所有变量上使用 !default 标志,它就不会覆盖 php 设置的标志。

更多信息在这里:

http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#variable_defaults_

我已经在http://www.phpsass.com/ 使用 php 编译器对此进行了测试,它可以工作。

【讨论】:

  • 我知道你回答这个问题已经有几年了,但我面临同样的问题,我认为你的解决方案会奏效,我唯一的问题是我的颜色需要改变,比如获取它根据域从我的数据库中。我怎样才能做到这一点?
【解决方案2】:

我认为您应该通过 php/coldfusion 直接写入 sass 文件。我怀疑还有其他方法可以做到这一点。

一个简单的方法就是将变量放在 sass 文件或其他文件的第一行,然后使用 PHP 覆盖该值。

【讨论】:

    【解决方案3】:

    我找到的最干净的解决方案是执行以下操作。在你的 html 文件中(我的是一个 Blade 模板)你可以注入你的变量($bodyBgColour):

    <style>
        :root {
            --main-bg-color: {{ $bodyBgColour }}
    </style>
    

    然后在你的 scss 文件中你可以使用它:

    $background-colour: var(--main-bg-color);
    

    您随后可以在您的类中使用该 sass 变量:

    body {
        background-color: $background-colour;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多