我可以在 PHP 中使用 LESS/SASS 混合颜色吗?

Posted

技术标签:

【中文标题】我可以在 PHP 中使用 LESS/SASS 混合颜色吗?【英文标题】:Can I use LESS/SASS mixin colors with PHP? 【发布时间】:2012-12-19 13:11:01 【问题描述】:

我正在开发一个 WordPress 主题,该主题在管理面板中使用颜色选择器,用户可以在其中选择自定义链接颜色。我希望链接悬停颜色与正常链接颜色相同,但变暗 10%。在 LESS 中,我可以使用链接颜色作为变量并使用@link-hover: darken(@link-color, 10%);,但是这与 php 颜色选择器无关。有没有办法让 PHP 引用 LESS 或 SASS 混合变量?或者也许其他一些解决方案可以获得我正在寻找的结果?

使用:PHP 5.4.4 / WordPress 3.5 / LESS 2.7.1

我的 WordPress“主题定制器”功能(来自 hal gatewood):

function stillcalm_customize_register( $wp_customize )

$colors = array();
  $colors[] = array( 'slug'=>'content_bg_color', 'default' => '#ffffff', 'label' => __( 'Background Color', 'stillcalm' ) );
  $colors[] = array( 'slug'=>'content_text_color', 'default' => '#000000', 'label' => __( 'Text Color', 'stillcalm' ) );

  foreach($colors as $color)
  
    // SETTINGS
    $wp_customize->add_setting( $color['slug'], array( 'default' => $color['default'], 'type' => 'option', 'capability' => 'edit_theme_options' ));

    // CONTROLS
    $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, $color['slug'], array( 'label' => $color['label'], 'section' => 'colors', 'settings' => $color['slug'] )));
  

然后在标题中:

<?php 
        $text_color = get_option('text_color'); 
        $background_color = get_option('background_color');
    ?>
    <style> 
        body  
            color:  <?php echo $text_color; ?>; 
            background-color:  <?php echo $background_color; ?>;
         
    </style>

【问题讨论】:

只是为了确定。 LESS 和 SASS 是两个不同的东西。它们通常做同样的事情,但它们是不同的项目,具有不同的语法和不同的解析器。 我使用 LESS,但如果效果更好,我愿意切换到 SASS。但实际上我想要的只是使用变量,所以 Calle 建议的仅限 PHP 的解决方案工作得很好。 【参考方案1】:

如果您使用 javascript 来解析 LESS 或 SASS,您可以这样做。这是一个描述其工作原理的线程:Parse LESS client side。您将编写生成 LESS 的 PHP 代码,然后在客户端使用 javascript 对其进行解析。

这是一个关于如何使用 PHP 进行操作的线程:How to generate lighter/darker color with PHP?

【讨论】:

使用 PHP 听起来更简单,所以我想我会使用它。我不确定如何将颜色选择器的编号合并到其中,以及如何获得它来创建一个新变量而不仅仅是更改当前变量..?我在上面粘贴了更多代码以供参考。 例如,$background_color 是一个十六进制值,所以如果你想将它变暗十“步”,你只需写成 adjustBrightness($background_color, -10) 而不是 $background_color。当然包括了adjustBrightness 之后! (阅读我给你的链接中的第二个答案) (该页面上还有一个使用百分比的解决方案,但是我认为使用步骤的方法写得更优雅。正如他所说,它还有其他优点。) 非常感谢,它运行良好。我使用步骤使用 PHP 解决方案,因为我同意它是更简洁的代码。只是为了向其他人澄清:这根本不是使用 LESS,而是使用 PHP。

以上是关于我可以在 PHP 中使用 LESS/SASS 混合颜色吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何知道在哪里使用 css、less 和 Sass? [关闭]

如何在 Visual Studio 2017+ 中编译 Less/Sass 文件

react中使用less sass

最近关于less sass的新手总结

Less/Sass编译工具,koala使用指南

less和sass的区别,你知道么?