2016-06-24 9 views
1

私が作った棒グラフの情報を配列から取り出します。ここ はCSSです:ここではcssでコンテンツプロパティを作るにはPHPを使う

<style> 
.outer, 
.inner, 
.target { 
    height: 14px; 
    margin-bottom: 5px; 
} 
.outer { 
    background-color: #cccccc; 
    width: 80%; 
    margin: 20px auto; 
    position: relative; 
    font-size: 10px; 
    line-height: 14px; 
    font-family: sans-serif; 
} 
.inner { 
    background-color: green; 
    position: absolute; 
    z-index: 1; 
    text-align: right; 
    border-right: 2px solid black; 
} 
.inner:after { 
    content: '$avg_width'; 
    display: inline-block; 
    left: 10px; 
    position: relative; 
    height: 100%; 
    top: -14px; 
} 
.target { 
    background-color: transparent; 
    width: 19px; 
    position: absolute; 
    z-index: 2; 
    color: black; 
    text-align: right; 
    border-right: 2px dotted black; 
} 
.target:after { 
    content: 'Target: $target_width'; 
    display: inline-block; 
    left: 28px; 
    position: relative; 
    height: 100%; 
    top: 14px; 
} 
.solid_line { 
    color: black; 
    float: right; 
    width: 3px; 
    border-right: 3px solid black; 
    height: 16px; 

} 
</style> 

はPHPです:

<?php 

    $target = number_format((float)$data->data[2][32][3], 2, '.', ''); 
    $array = []; 
    $sum = 0; 
    $path = $data->data[2]; 
    $bar_width = '200px'; 
    foreach($path as $key => $item){ 
     if($key > 1 && isset($item[5])){ 
      $array[] = (int)$item[5]; 
      $sum += (int)$item[5]; 
     } 
    } 
    $avg = ($sum/count($array)); 
    $base = max($target, $avg); 
    $target_width = $bar_width/100 * ($target/$base * 100); 
    $avg_width = $bar_width/100 * ($avg/$base * 100); 
    $percent = $avg/$target;      
?> 

そして、ここではHTMLです:

<div class="outer"> 
    <div class="target"> 
    </div>     
    <div class="inner"> 
    </div> 
</div> 

あなたは、私がコンテンツを利用するようにしようと見ることができるようにプロパティを使用して、その中でPHPを使用することができますが、何らかの理由で結果を表示しません。

+0

CSSで変数を使用することはできません。 – makshh

+0

PHPコードでcssをエコーし​​ない限り、期待どおりに動作しません。 – Phiter

答えて

1

これは、CSSでPHP変数に直接アクセスしているためです。 HTML/CSSはクライアント側で実行され、PHPはクライアント側で実行されます。

PHP変数をページ上のCSSにエコーする必要があります。このように:

.inner:after { 
    content: '<?php echo $avg_width ?>'; 

echo上記のコードは、サーバー側で実行し、適切に要素をレンダリングするために、クライアント側のCSSに値を与えます。

ページ/インラインCSS ON でそれを使用していることを確認し、これは外部の.CSSファイルに を動作しません。

+0

Btw、外部ファイルに対してもうまく動作しますが、ファイル名が.php( 'style.css.php'など)で終わるようにして、サーバがそれらをPHPとして解釈することを知っていれば' header( ' Content-Type:text/css '); 'ブラウザに正しいコンテンツタイプが提供されていることを確認します。 –

+0

それは正しいです、私は '.css'ファイルについて言及するのを忘れました。 –

関連する問題