2013-07-04 60 views
0

我需要創建一個可下載的CSS文件,具體取決於前端更改的變量。使用php創建css文件

注意:這是縮短的示例。

CSS:

.color: red; width: incrementvalue();

在HTML中的id具有INOUT字段來調整寬度,例如:

HTML

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

編號然後有一個功能,將運行在將執行以下操作的輸入更改上:

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

是上述函數是jQuery的,但我真的不知道PHP和IM告訴這應該在PHP來完成。

任何想法?

+0

爲什麼你需要在PHP?如果需要將值保存到某處(例如數據庫),我會在PHP中執行此操作,否則Jquery是最佳解決方案。 – zurfyx

+0

它需要創建一個可下載的CSS文件,我怎麼能用javascript/jQuery來做到這一點? @Rov –

回答

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"); 
+0

這將如何創建像他們的下載鏈接雖然?所以,如果我有一個按鈕,說下載CSS,我會實現這一點或怎麼coukd? –

+0

我剛更新了下載鏈接。 –

+0

所以這會創建一個download.css文件?我不希望他們下載一個PHP文件,對不起,如果IM混淆 –

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/

+0

但是,這將是一個PHP文件,他們貴方覺得下載有權不CSS? –

0

我可以看到你有約束力的改變事件。這可能意味着你想要動態改變寬度。你不能使用PHP在客戶端編寫腳本。 PHP是服務器語言,在這種情況下是無用的。如果你想動態改變某些東西,你必須使用客戶端腳本。 jQuery(或Knockour.JS)可能是最簡單的解決方案。

+0

對不起,我寫的是一個有點怪異,jQuery將更新頁面上的用戶界面,有點像什麼,他們會下載一個演示,但會有一個按鈕,將使用該信息爲他們下載時生成一個文件點擊說按鈕 –

0
  1. 你最好用javascript來增加輸入框的寬度。使用PHP肯定會增加網絡負載 - 網絡瀏覽器應該發送每個輸入框更改的請求。
  2. 如果你真的需要刷新樣式表,<link id='dynamic_stylesheet' rel='stylesheet' type='text/css' href='style.php?length=3' />$('#dynamic_stylesheet')後來改變HREF的。在這種情況下,您最好只加載不同選擇器的樣式,並稍後更改輸入標籤的類別。
  3. jQuery的事件回調函數返回表示是否將覆蓋預先定義的行爲的布爾值。
+0

我確實希望它成爲一個CSS文件,但不是他們下載的CSS文件? –

+0

@ShannonHochkins啊,我誤解了。 –