
最近、アクセシビリティを考慮して、ブラウザの機能上だけでなく、
javascriptを使用した、文字を拡大・縮小するボタンがついているHPを良く拝見します。そこで、作成してみたのですが、どうもうまく機能してくれません。
下記のようにテキストのみの簡単なソースなら
OKなのですが、表の中の文字なども同じように拡大・縮小
させたりするにはどうしたらよいでしょうか?
お詳しい方がいらっしゃいましたらどうぞ宜しくご指導お願いします。
<style type="text/css">
<!--
.btn {
width:100px;
}
-->
</style>
<script type="text/javascript"><!--
fsize = 100;
function sizech(val) {
fsize = fsize + eval(val);
if(fsize < 40 ) { alert("これ以上小さくできません"); fsize = 40; return false; }
if(fsize > 200) { alert("これ以上大きくできません"); fsize = 200; return false; }
if(val == "0") fsize = 100;
document.body.style.fontSize = fsize + "%";
}
//-->
</script><LINK rel="stylesheet" href="table.css" type="text/css" id="_HPB_TABLE_CSS_ID_">
</HEAD>
<body id="bd">
<div><form>
<input type="button" class="btn" value="縮小" onclick="sizech('-20')">
<input type="button" class="btn" value="default" onclick="sizech('0')">
<input type="button" class="btn" value="拡大" onclick="sizech('+20')">
</form></div>
<P align="center">aaaa<BR>
</P>
No.3ベストアンサー
- 回答日時:
・ 元のソースコードとyambejpさまのご指摘をまとめてみました。
・ sizech(val)の引数valは、数値を渡すように変更しました。
------------------------------------------------------------
<html>
<head>
<title>sizech.html</title>
<style type="text/css">
<!--
.btn {
width: 100px;
}
-->
</style>
<script type="text/javascript"><!--
fsize = 100;
function sizech(val) {
fsize = fsize + val;
if(fsize < 40 ) { alert("これ以上小さくできません"); fsize = 40; return false; }
if(fsize > 200) { alert("これ以上大きくできません"); fsize = 200; return false; }
if(val == "0") fsize = 100;
document.body.style.fontSize = fsize + "%";
var tds=document.getElementsByTagName("td");
for(var i=0;i<tds.length;i++){
tds[i].style.fontSize = fsize + "%";
}
}
//-->
</script>
</head>
<body id="bd">
<div>
<form action="">
<input type="button" class="btn" value="縮小" onclick="sizech(-20)">
<input type="button" class="btn" value="default" onclick="sizech(0)">
<input type="button" class="btn" value="拡大" onclick="sizech(+20)">
</form>
</div>
<div style="top: 50px; left: 50px; position: absolute; z-index: 1;" id="Layer1">
AAAAAAAAAAA
<div>
<table border="1" cellspacing="0" cellpadding="2" id="_HPB_TABLE_1_B_080520130845" class="hpb-cnt-tb2" width="443" height="160">
<tbody>
<tr>
<td class="hpb-cnt-tb-cell3">AAAAA</td>
<td class="hpb-cnt-tb-cell4"></td>
<td class="hpb-cnt-tb-cell4"></td>
<td class="hpb-cnt-tb-cell4"></td>
</tr>
<tr>
<td class="hpb-cnt-tb-cell3">BBBBB</td>
<td class="hpb-cnt-tb-cell4"></td>
<td class="hpb-cnt-tb-cell4"></td>
<td class="hpb-cnt-tb-cell4"></td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>
ご丁寧にありがとうございました。
おはずかしながら、ボタンの大きさや文字、
はたまたボタン文字の中央表示ができません・・・(涙)
ボタンはこれ以上の大きさにはならないのでしょうか?
No.6
- 回答日時:
>>> ボタン自体の最初の大きさや、ボタンに表示される文字を
>>> 今よりも大きくしたいのですが・・・
これには、window.onload または style="font-size:20pt" を使います。
function setButton() {
var bsize = 200; // 微調整
var inputs = document.getElementsByTagName("input");
for(var i=0;i<inputs.length;i++){
inputs[i].style.fontSize = bsize + "%";
}
}
window.onload = setButton;
または
<input type="button" style="font-size:20pt" class="btn" value="縮小" onclick="sizech(-20)">
以下のコードを参考にしてみてください。
------------------------------------------------------------
<html>
<head>
<title>sizech.html</title>
<style type="text/css">
<!--
.btn {
width: 100px;
}
-->
</style>
<script type="text/javascript"><!--
fsize = 100;
function sizech(val) {
fsize = fsize + val;
if(fsize < 40 ) { alert("これ以上小さくできません"); fsize = 40; return false; }
if(fsize > 200) { alert("これ以上大きくできません"); fsize = 200; return false; }
if(val == "0") fsize = 100;
document.body.style.fontSize = fsize + "%";
}
function setButton() {
var bsize = 200; // 微調整
var inputs = document.getElementsByTagName("input");
for(var i=0;i<inputs.length;i++){
inputs[i].style.fontSize = bsize + "%";
}
}
// window.onload = setButton;
//-->
</script>
</head>
<body id="bd">
<div>
<form action="">
<input type="button" style="font-size:20pt" class="btn" value="縮小" onclick="sizech(-20)">
<input type="button" style="font-size:20pt" class="btn" value="default" onclick="sizech(0)">
<input type="button" style="font-size:20pt" class="btn" value="拡大" onclick="sizech(+20)">
</form>
</div>
<div id="Layer1">
AAAAAAAAAAA
<div>
<table border="1" cellspacing="0" cellpadding="2" id="_HPB_TABLE_1_B_080520130845" class="hpb-cnt-tb2" width="443" height="160">
<tbody>
<tr>
<td class="hpb-cnt-tb-cell3">AAAAA</td>
<td class="hpb-cnt-tb-cell4"></td>
<td class="hpb-cnt-tb-cell4"></td>
<td class="hpb-cnt-tb-cell4"></td>
</tr>
<tr>
<td class="hpb-cnt-tb-cell3">BBBBB</td>
<td class="hpb-cnt-tb-cell4"></td>
<td class="hpb-cnt-tb-cell4"></td>
<td class="hpb-cnt-tb-cell4"></td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>
何度も丁寧にご回答いただき本当にありがとうございました。
おかげさまで、思ったとおりのページに仕上げることができました。
図々しくも何度も質問させていただきましたが、皆様にご丁寧に
教えていただき大変感謝しております。本当にありがとうございました。
No.5
- 回答日時:
・ フォントサイズだけ変えればよいようです。
var inputs = document.getElementsByTagName("input");
for(var i=0;i<inputs.length;i++){
//inputs[i].style.width = inputs[i].offsetWidth * fsize / old_fsize + "px";
inputs[i].style.fontSize = fsize + "%";
}
度々ご回答ありがとうございます。
ボタンを押したときにサイズが変わるのではなく、
ボタン自体の最初の大きさや、ボタンに表示される文字を
今よりも大きくしたいのですが・・・
わがままばかり言ってしまって大変申し訳ないのですが、
もしお時間がありましたら宜しくお願いします。
No.4
- 回答日時:
>ご丁寧にありがとうございました。
>おはずかしながら、ボタンの大きさや文字、
>はたまたボタン文字の中央表示ができません・・・(涙)
>ボタンはこれ以上の大きさにはならないのでしょうか?
ボタンサイズも拡大縮小して欲しいってことですか?
もしそうなら、>ANo.3さんのを改良して、
function sizech(val) {
var old_fsize = fsize;
fsize = fsize + val;
if(fsize < 40 ) { alert("これ以上小さくできません"); fsize = 40; return false; }
if(fsize > 200) { alert("これ以上大きくできません"); fsize = 200; return false; }
if(val == "0") fsize = 100;
document.body.style.fontSize = fsize + "%";
var tds=document.getElementsByTagName("td");
for(var i=0;i<tds.length;i++){
tds[i].style.fontSize = fsize + "%";
}
var inputs = document.getElementsByTagName("input");
for(var i=0;i<inputs.length;i++){
inputs[i].style.width = inputs[i].offsetWidth * fsize / old_fsize + "px";
inputs[i].style.fontSize = fsize + "%";
}
}
みたいな感じです。
ちなみに、こういった拡大縮小を使用する場合、positionを使うとデザインが崩れる原因になりますので、気をつけたほうがいいですよ。
ご指導ありがとうございます。早速やってみましたが、
確かにデザインが崩れてしまうのでちょっと考えてからにします。
ありがとうございました。
No.2
- 回答日時:
あら申し訳ない
document.body.style.fontSize = fsize + "%";
とご自身がかいている後ろの行に
var tds=document.getElementsByTagName("td");
for(var i=0;i<tds.length;i++){
tds[i].style.fontSize = fsize + "%";
}
を追記してください
この回答への補足
なんだかぼけた質問ばかりで何度も申し訳ありません。
試してみましたが、ちょっとうまくいきませんでした。
ちなみに、
<BODY>
<DIV style="top : 50px;left : 50px;
position : absolute;
z-index : 1;
" id="Layer1">
<DIV>
<TABLE border="1" cellspacing="0" cellpadding="2" id="_HPB_TABLE_1_B_080520130845" class="hpb-cnt-tb2" width="443" height="160">
<TBODY>
<TR>
<TD class="hpb-cnt-tb-cell3">AAAAA</TD>
<TD class="hpb-cnt-tb-cell4"></TD>
<TD class="hpb-cnt-tb-cell4"></TD>
<TD class="hpb-cnt-tb-cell4"></TD>
</TR>
<TR>
<TD class="hpb-cnt-tb-cell3">BBBBB</TD>
<TD class="hpb-cnt-tb-cell4"></TD>
<TD class="hpb-cnt-tb-cell4"></TD>
<TD class="hpb-cnt-tb-cell4"></TD>
</TR>
<TR>
<TD class="hpb-cnt-tb-cell3"></TD>
<TD class="hpb-cnt-tb-cell4"></TD>
<TD class="hpb-cnt-tb-cell4"></TD>
<TD class="hpb-cnt-tb-cell4"></TD>
</TR>
<TR>
<TD class="hpb-cnt-tb-cell3"></TD>
<TD class="hpb-cnt-tb-cell4"></TD>
<TD class="hpb-cnt-tb-cell4"></TD>
<TD class="hpb-cnt-tb-cell4"></TD>
</TR>
</TBODY>
</TABLE>
</DIV>
</DIV>
</BODY>
具体的にご相談すると、このような表があったとき、
その中の文字を拡大縮小をボタンでできるようにするにはどうしたらよいですか?
図々しく質問攻めにしてしまって本当に恐縮ですが、お時間ございましたら宜しくご教授ください(^-^;)
No.1
- 回答日時:
テーブルは独自のルールでスタイルが設定されるようですね。
tdを拾ってfontSizeを変更してやればよいでしょう。
document.body.style.fontSize = fsize + "%";
var tds=document.getElementsByTagName("td");
for(var i=0;i<tds.length;i++){
tds[i].style.fontSize = fsize + "%";
}
この回答への補足
早速のご回答ありがとうございます。
それなのに大変申し訳ないのですが、
javaにあまり詳しくないもので・・・
上記のソースをどの部分に挿入したら良いでしょうか?
詳しく教えていただけると大変助かります!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<JavaScript>tableタグを入力不...
-
Javascriptでテーブルタグの座...
-
クリックするとそのセル一行(...
-
セレクトメニューの値の取得
-
HTMLのフォーム名とJavaScript...
-
追加ボタンを押した際に ok ボ...
-
Java Scriptで・・・
-
プルダウンメニューの項目で1つ...
-
tableの任意行にfocusをあてる
-
JavaScriptで次のような動作を...
-
特定<table>内の<td>の色を変える
-
チェックボックス付きのテーブ...
-
大文字か小文字かを判断する方法
-
Visual Studioのデザインでの非...
-
イベント発生時に入力待ち状態...
-
slickのレスポンシブ > center...
-
フォームの送信ボタンを画像に...
-
別ウィンドウへのsubmitの挙動...
-
return trueとreturn falseの用...
-
3つ以上の数値の中から、最も...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<JavaScript>tableタグを入力不...
-
selectのonChangeが動作しません
-
javascriptで文字を拡大・縮小...
-
tbody要素のinnerHTMLが書き換...
-
テキストエリアに入力した改行...
-
idの振り直しについて
-
【jQuery】tableループ内のIDの...
-
javascriptで<table>背景色の取得
-
テーブルの行数を可変長にした...
-
javascriptで画像をテーブルに...
-
テーブルのセルのクリック時、...
-
Javascriptでテーブルタグの座...
-
Table内TDの子要素を移動させた...
-
javascriptでクリックするごと...
-
別窓で画像を表示する場合に余...
-
外部のデータファイルの読み込...
-
クリックごとに文字色が交互に...
-
DIVで同一ページ内にポップアッ...
-
innerHTMLでのテーブル作成
-
javascriptで画像の移動
おすすめ情報