JavaScriptなしでPHPでフォントサイズを変える「大・中・小」ボタンを実装する方法を考える(未完成)
先日のエントリーで、『フォントサイズを変える「大・中・小」ボタンを実装する方法』というのをエントリーしたのですが、沢山の方に見てもらえたようで、かなりびびってる自分です。。。
もっとちゃんと汎用的なのを書けばよかったです。
そして、JavaScriptだけで実装した場合、JavaScript OFF環境だと当然のごとく動作しません。cookieもPHPを使えばOFF環境でも動作します。
ということで、PHPの知識は殆どないですが、PHPを使って実装できないかを考えてみます!
PHPでフォントサイズを変える「大・中・小」ボタン実装を考える
基本的にはJavaScriptが使える環境では、前回と同じようにJavaScriptでフォントサイズが変更されるようにしておきます。OFFの時に動作するようにするので・・・どうしたらいいんだ?
PHPってクリックイベントとかあったっけ?と思って調べたのですが、ちょっとそのへんがわからない。。。
悩む・・・とGETとPOSTがどうとかを思い出したので、GETっぽく作ればいいじゃまいか?と思ったので、GETっぽくしてみる。JavaScriptが使えないのが前提なので、ボタンをリンクにして、hrefにGETっぽい値を埋め込んでみた。
HTML
<ul id="fontChange" class="clearfix"> <li id="fontS"><a href="?fontsize=fontS">小</a></li> <li id="fontM"><a href="?fontsize=fontM">中</a></li> <li id="fontL"><a href="?fontsize=fontL">大</a></li> </ul>
クリックすると、ページが同じページで遷移してしまうが、とりあえずはしかたない。。。
あとはこの値をPHPで取得して、cookieに保存とclassのをセットする。
PHP
class="<?php $cookie=$_COOKIE["fontSize"]; $fontSize=$_GET["fontsize"]; if($fontSize){ echo("$fontSize"); setcookie("fontSize", $fontSize); }else{ echo("$cookie"); }; ?>">
でも、これだけだと、setcookieのところでエラーがでる。ページ読み込み完了前での動作じゃだめだってことか!?
.htaccessに「php_flag output_buffering On」と入れると解決するらしいので、とりあえずそれを入れておく。
これで、上記のPHPを文字サイズを変更させたいところにセットすると、classが自動で変わってくれる・・・はず?
検証継続中
ローカルのテスト環境では、これで動作したのですが、PHPのセキュリティーとか自分は勉強中なので、とりあえずデモはまだ用意していないです。まだ調べ足りない気がするので、とりあえず自分用のメモとして残しておきます。
もっといいアイディア・方法がありましたら是否、ご教授いただきたいです>< もっと勉強しないと〜(PHPも)。
パフォーマンス的にも………。
如何でしょうか?
PHPでというのは強引すぎましたね(;´Д`)
この方法よりは、おっしゃる方法の法がよさそうです。
ただ、PHPで出力を変えるというのは、結局CSSのリクエストが増えるので、パフォーマンスで考えたら、良い方法ではなさそうなので、以前エントリーしたJSとcookieでというのがよさそうです。