0

I need to create a dowloadable css file depending on variables changed on the front end.

Note: this is shortened example.

CSS:

.color: red; width: incrementvalue();

In html id have an inout field to adjust the width, example:

HTML

<input type="text" value="3">

Id then have a function that would run on change of the input that would do the following:

$('input').on ('change', function (){return $(this).val () * 2});

Yes the above function is in jquery but I dont really know php and im told this should be done in php.

Any ideas?

4

4 回答 4

2

您可以创建一个以 CSS 标头开头的常规 PHP 文件:

<?php
header('Content-type: text/css');

之后,您可以回显 CSS 内容。一种方法是使用带有模板系统的 heredoc 语法。模板将变量值放在“%%”百分比符号内作为分隔符。这是一个例子:

$css = <<<EOTAAA
* {
    margin: 0;
    padding: 0;
}
body {
    background-color: %bg_color%;
    background-image: url(images/bg.gif);
    background-repeat: repeat-x;
    font:  14px Arial, Helvetica, sans-serif;
}
div.my_div{
    color: red;
    width: %width%;
}

EOTAAA;

$search = array('%bg_color%', '%width%');
$width = width_function();//some function for determining width
$bg_color = bg_function();//some function for determining background color
$replace = array($bg_color, $width);
echo str_replace($search, $replace, $css);

下载链接:

在您的 HTML 中,使用将处理请求的文件的 URL 创建一个类似这样的链接:

<a href="HTTP://www.example.com/download.php">Get CSS</a>

然后在您的 PHP 文件中,将标头信息更改为以下内容:

header("Content-Disposition: attachment; filename=\"custom.css\"");
header('Content-type: text/css');
header("Content-Type: application/force-download");
header("Connection: close");
于 2013-07-04T08:00:29.237 回答
0
  1. 你最好用javascript增加输入框的宽度。使用 PHP 肯定会增加网络负载 - Web 浏览器应该为输入框的每次更改发送请求。
  2. 如果你真的需要刷新样式表,<link id='dynamic_stylesheet' rel='stylesheet' type='text/css' href='style.php?length=3' />然后更改 .href 的$('#dynamic_stylesheet')。在这种情况下,您最好只加载不同选择器的额外样式并稍后更改输入标签的类。
  3. jQuery 事件回调函数应该返回一个布尔值,表示它是否覆盖了预定义的行为。
于 2013-07-04T08:05:28.707 回答
0

尝试这个,

<?php
   header("Content-type: text/css; charset: UTF-8");
   $my_width= incrementvalue();
?>

.phpClass{color: red; width: <?php echo $my_width;?>}

将此文件另存为style.php

用法

<link rel='stylesheet' type='text/css' href='style.php' />

阅读http://css-tricks.com/css-variables-with-php/

于 2013-07-04T07:51:47.833 回答
0

我可以看到您正在绑定更改事件。这可能意味着您想要动态更改宽度。您不能使用 PHP 在客户端编写脚本。PHP 是服务器语言,在这种情况下是无用的。如果要动态更改某些内容,则必须使用客户端脚本。jQuery(或 Knockour.JS)可能是最简单的解决方案。

于 2013-07-04T07:56:58.013 回答