No.440

だいぶ前からサイトに「文字サイズ変更ボタン」を付けたいと思いつつ難儀していたのですが、Ogawa::memorandaの小川宏高さんが、既存Ajaxライブラリを活用した簡単な導入方法を公開されていました。
お陰で導入に成功。有難いことです(-人-)

Ogawa::memoranda:prototype.jsを用いたフォントサイズ変更スクリプト

私は大抵紹介されている技術を自分用に修正して利用しています。
どのような修正をしたか、参考に残しておきます。

「最初の一回は表示できても、二回目以降表示できない」場合
2008年2月4日に、追加補足を書きました。当記事と合わせてご参照ください。
文字サイズ変更ボタンに関する補足

More

HTMLソースの変更

せっかくなので、文字サイズ変更ボタンもCSSでデザイン変更できるようにしたいと思い、小川さんのコードの一部を以下のように修正しました。
JavaScriptで書き出される文章にこんなことをする必要は全くないのですが(笑)

拡縮率の変更

結論: でかフォントは人を健康にします。

と仰っているだけに、小川さんのブログはフォントサイズが大きめの「100%」です。しかし、一般のブログは基本文字サイズがもっと小さくなっていることが多いです。
例えば、基本文字サイズが「90%」のこのブログにFontchangerをそのまま使うと、「小」ボタンを押したときの文字サイズがかなりの豆字になってしまいます。

そこで、fontchanger.jsの拡縮率の設定をWebbingStudio用に変更しました。

cookieの保存期間

フォントサイズの保管には、cookiemanager.jsというライブラリが使われています。
このライブラリは「指定した名前と値を365日間保存するcookieを発行する」というものだそうです。

ですが「サイトの文字サイズを変更した」という記録だけを閲覧者のPCに365日=丸一年も保管させるというのは、ちょっと長すぎるような気がします。
数ヶ月ごとに定期的に訪問する可能性があるECサイトで個人情報を記録する、などであれば適切かもしれませんが、この場合、同様のcookieを発行している別ドメインのサイトが膨大にあり、一度しか使用されない可能性も高いからです。
そこで、cookieの保存期限を90日=三ヶ月に縮めてみました。

小川さんの方でバージョンアップ時に上記機能を追加してくださいました。
小川さんの記事後半の「2007-01-23追記:」以下をご参照ください。


InternetExplorer7は、基本の拡縮機能が「文字サイズ変更」から「ページ全体のズーム」に変わります。
ページが崩れないという点では便利なのですが、画像も拡大されてしまうため、写真等を綺麗に見せたいサイトにはネックとなります。
サイト内に簡単に文字サイズを変えられるボタンを付けておくことで、IE7や、同様にズーム機能がメインのOperaの閲覧者にも選択肢を与えられると思います。

おまけですが、WebbingStudioに使った文字サイズ変更ボタンの画像を置いておきますので、ご自由にお持ち帰りください。
※CSSレイアウト用なので、6個のボタンが一枚絵になっています。img要素で貼り付けたい方は、任意で切り分けてください。

文字サイズ変更ボタン・ブルー

文字サイズ変更ボタン・ピンク

Tag
WEBデザイン アクセシビリティ カスタマイズ Javascript 

Comment

Re:文字サイズ変更ボタンを付けよう

cookieの保存期間を変更するなら、cookiemanager.jsを直接編集せずに、fontchanger.jsの
this.cookieManager = new CookieManager();
の行を
this.cookieManager = new CookieManager({shelfLife: 90});
と書き換えた方がよいですよ。

わわっ(゜Д゜;

小川さん、こんばんは。
とても役立つスクリプトを紹介してくださってありがとうございます。

わっ、CookieManagerに値を送るんですね!失礼しました。
ライブラリをいじるのは良くないですよね。すぐ記事を修正します〜

Re:文字サイズ変更ボタンを付けよう

いつも拝見させていただいてます。
フォント拡大はこのパターンとクリックするとどんどん大きくなっていくパターンもありますが、あれはどうやっているのでしょうか?わかります?
こんな感じかな?

文字の大きさ:標準に戻す|拡大


Re:文字サイズ変更ボタンを付けよう

こんにちはtakaさん。拙記事をご覧いただきありがとうございます。

ご質問の件ですが、「標準に戻す」処理に関しては難しくないです。
「fontchanger.js」の、以下の文字列を
onClickMedium: function(e) { this.change('100%'); },
このように修正すると、
onClickMedium: function(e) { this.reset(); },
文字サイズがどれだけ大きくなっていても、一旦リセットしcookieも消去するようになります。

以降はややこしい話になってしまいますが…
ボタンを押すたびに拡大していくようにするには
「fontchanger.js」を以下のように編集する必要があるのでは、と考えました。

◆現在の処理
1. ボタンを押したときに「○○%」という文字列が送られる
2. 文字列をそのままbody要素の文字サイズに反映する
3. 文字列をcookieに保存する

◆どんどん拡大される処理
1. ボタンを押したときに「○○」という数値が送られる
2. 変数hoge(名前なんでもいいです)を定義
3. hogeに現在のbody要素の文字サイズを取得
3. 「○○%」と指定されていれば、最後の一文字(%)をカット
4. それ以外、または指定されていなければ「100」とする
5. hogeにボタンを押したときに送った数値を足す
6. 再び「%」を付けてbodyの文字サイズに反映する
7. hogeをcookieに保存する
※主にスクリプト中盤の「change: function(fontSize)」を編集します
※修正範囲が増えますが、cookieに数値だけ保存するようにしてもいいかもしれません

実際にいじって検証してみたいのですが、現在多忙につき、ちょっと難しいです…
すみません(´Д`;

もしJavaScriptの知識がございましたら、チャレンジしてみてください。

Re:文字サイズ変更ボタンを付けよう

すごい参考になりました。
ありがとうござますm(_ _)m

Re:文字サイズ変更ボタンを付けよう

いえいえ、お礼は小川さんに仰ってくださいまし(-人-)
私、小川さんの知識に乗っかってるだけですから〜

Re:文字サイズ変更ボタンを付けよう

初めましてです^^文字サイズ変更で検索していたらサイトにたどり着きました。
変更は問題なくできたのですが1つ疑問があります。
例えば<div id="aaa">なんとか</div>のように
idがaaa内だけ文字の大きさを変更するということはできるのでしょうか?
自分なりに試してみたのですが手探り状態なもので・・・
もしおわかりであれば是非教えて頂きたいのですが宜しくお願い致します。
  • やまー
  • URL
  • 2007-10-13(Sat) 03:39
  • Edit

IDを指定した文字サイズ変更

やまーさん、いらっしゃいませ。

getElementByIdを使用すれば、特定の場所だけ変更できますよ。

スクリプト前半にある以下の一行を、
if (fontSize) document.body.style.fontSize = fontSize;

このように書き換えてみてください。
if (fontSize) document.getElementById("ID名").style.fontSize = fontSize;

追記:間違えました…orz 以降のコメントもご参照ください 凹

Re:文字サイズ変更ボタンを付けよう

お返事ありがとうございます^^文字サイズ変更したい箇所が
id="main_center"なのでfontchanger.jsの
if (fontSize) document.body.style.fontSize = fontSize;を
if (fontSize) document.getElementById("main_center").style.fontSize = fontSize;
としてみましたが変わらずで全ての箇所の文字サイズが変わってしまいました。。。^^;

他にも変更箇所があるのでしょうか?
  • やまー
  • URL
  • 2007-10-14(Sun) 13:12
  • Edit

やまーさんごめんなさいorz

>やまーさん
ま、間違えました |||orz

先日指摘した箇所だけでは動作しません。
スクリプト中盤の、以下の箇所もそれぞれ変更が必要です。

change: function(fontSize) {
document.body.style.fontSize = fontSize;
this.cookieManager.setCookie(this.cookieName, fontSize);
},
reset: function() {
document.body.style.fontSize = '';
this.cookieManager.clearCookie(this.cookieName);
},

それぞれ、
document.getElementById("ID名").style.fontSize
に変更してください。

すみませんすみません。

Re:文字サイズ変更ボタンを付けよう

はじめまして。クリスマスなこの日に文字サイズ変更スクリプトを探してまして、このサイトに辿り着きました。本来は小川さんに聞くべきだと思うのですが、あちらはログインが必要なので、こちらで質問させていただきたいと思います。

選択されている文字サイズがわかるようにできないでしょうか?
具体的には選択中のボタンだけ色が変わるような形で、
ユナイテッドアローズのサイト
http://www.united-arrows.co.jp/
の右上のボタンのようなイメージです。

ご存知でしたら教えてください。よろしくお願いします。
  • まこと
  • URL
  • 2007-12-24(Mon) 22:17
  • Edit

Re:文字サイズ変更ボタンを付けよう

すみません、ロクに自分で確かめずに投稿してしまいました。
私の投稿は無視してください。
自分で設置してから疑問点があれば再度質問させていただきます。
申し訳ありませんでした。
  • まこと
  • URL
  • 2007-12-24(Mon) 22:41
  • Edit

まことさん遅レスですが

こんばんは。反応が遅くなりましたが…(汗
ご質問の件は上手くいきましたでしょうか?

文字サイズ変更ボタンのa要素にはそれぞれ
「fontchangerを呼び出す時に指定したID」+「small」
「fontchangerを呼び出す時に指定したID」+「medium」
「fontchangerを呼び出す時に指定したID」+「large」
というidが付きます。

なので、選択したときの状態をボタンに反映させるには
「ページにアクセスしたとき」と
「ボタンを押したとき」に
「指定したidの要素の背景画像を変える」スクリプトを追加する必要が出てきます。

背景画像の変更については、このページが参考になります。
http://javascriptist.net/ref/element.style.backgroundimage.html

IDを指定した文字サイズ変更について

はじめまして。文字サイズ変更スクリプトを探していて辿り着きました。
上のやまーさんではないのですが、私もページ全体ではなく、
特定のIDの部分だけ変更したいと思っていましたところ、
ちょうど洵さんの回答があったので、試してみました。

文字サイズ変更まではうまくいったのですが、文字サイズを変更し、
クッキーに情報が書き込まれてからページをリロードすると、
文字サイズ変更ボタンが表示されなくなってしまいました。
クッキーを削除すると、また表示されます。

カスタマイズする前はリロードしても問題ありません。
なにかやりかたが間違っているのでしょうか?

私の場合変更箇所3つのうち、一番上の行の所をかえると不具合がでます。
なにかわかりましたら教えてください。
よろしくお願いします。
  • ゴンザレス
  • URL
  • 2008-01-10(Thu) 19:13
  • Edit

Re:文字サイズ変更ボタンを付けよう

こんばんはゴンザレスさん。

カスタマイズしたURLを提示していただかないと何とも言えないのですが、cookieを保存してから不具合が出るということは、functionの最初のブロックである
「cookieが保存されていれば指定したidに保存された文字サイズを反映する」
という箇所に間違いがあることが考えられます。
fontchangerの表示・非表示はこの処理とは直接関係がありません。

また、ゴンザレスさんの不具合とは関係ないかもしれませんが
テンプレートの指定したidの部分に、すでに「font-sitze」が指定されていると
(上の例では#main_centerにfont-size:75%;が指定されていたとか)
85%・120%という倍率のままでは文字サイズが想定した結果と食い違ってしまいます。

今の段階で言えるのはこのくらいなのですが、よろしくお願いします。

Re:文字サイズ変更ボタンを付けよう

初めてお伺いします。まったくの初心者です。ですがなんとか文字変更ボタンをつけたくて、なんとかここまでやってはみたのですが、記事内容だけをサイズ変更したいのと、ボタンの位置を右端にもっていきたいのですが、いろいろとやってはみたのですが、まったくです。一度みていただいてうまくいく方法を教えていただけないでしょうか。
お願いします。

Re:又佐さんこんばんは

前田利家なHNですね(^^)

ブログを拝見したところ、自己解決ができたようで何よりです。
個別にサイトへお伺いしてサポートということはできませんので、宜しくお願いします。

文字サイズ変更のスクリプトは、もともとのHTML構造やスタイルシートの書き方にかなりの影響を受けます。
特にHTMLタグの閉じ忘れ、スタイルシートの「font-size」を何度も重複して書いている、などの状況だと、実装は難しくなります。

どうしても上手くいかないときは、書いているHTML、スタイルシート全体を見直すようにしてみてくださいね。

Re:文字サイズ変更ボタンを付けよう

はじめまして。

私もゴンザレスさんと同じ状況です。
試行錯誤してみるのですが、うまくいきません。
次のコメントにURLをいれますので、お忙しい中恐縮ですが
一度見ていただけますでしょうか?
 
よろしくお願いいたします。m(__)m

Re:文字サイズ変更ボタンを付けよう

洵 さんへ
どうもありがとうございます。全くはじめてなのですが、いろんな方の手助けをかりながらです。実は、老人ホームのサイトを作るにあたって、MT4で作成ということで前途多難ですが、いろいろやっていこうかと思っています。
ほんとは、タイトルと同じ行に文字変更ボタンを設置したいのですが、今のところうまく行きません。CSSは、こうかなぁと思って記したらうまく動作したようです。
ひとまず、ありがろうございました。こちらは関東の鎌倉ですが、昨日の大雪にまいりました。

あーーーー、原因わかったorz

>pocoさん

不具合の原因が分かりました。
私の説明不足と、小川さんの元スクリプトのバージョンアップが絡んでいたようです。

新しく記事を書きますので、そちらをご参照ください。

Re:文字サイズ変更ボタンを付けよう

ありがとうございます。

上のentry-507ですね。
まだリンクされてないようですが、楽しみにしております。




Post comment

管理者のみ読めるようにする

Trackback

trackback URL
http://webbingstudio.blog10.fc2.com/tb.php/440-8b0249d2
引用して記事を書く(FC2ブログ用)

文字サイズ変更ボタン設置

今日の腹ごなしは文字サイズの変更ボタン設置。 「小さく」「標準」「大きく」をそれぞれクリックすると文字サイズが変わります(ただしブラウザの「JavaScript」とかいうのを有効にしておく必要があるとのこと)。 もちろんブラウザの「表示」→「文字のサイズ」→「○○」

Read More >>

  • 求道blog
  • 2007-04-03(Tue) 22:21

文字サイズ変更ボタンに関する補足

ちょうど一年前、小川宏高さんが考えられた「フォントサイズ変更ボタンを簡単に追加する方法」について記事を書きました。 prototype.jsを用い...

Read More >>

  • ウェビンブログ
  • 2008-02-04(Mon) 23:38