縦1000px 横1000pxの画像(test.jpg)があり、この画像は、5×5で25枚の 縦200px 横200px の画像がつながって一枚となっています。
<img id="testplace"src="test.jpg" width="200px" height="200" />
と指定し(この時には、一番左上の200pxの画像が見えている)、その下に
<a href="javascript:void(0)" onclick="testscript(0,0)">1番目</a>
<a href="javascript:void(0)" onclick="testscript(0,200)">2番目</a>
<a href="javascript:void(0)" onclick="testscript(0,400)">3番目</a>
<a href="javascript:void(0)" onclick="testscript(0,600)">4番目</a>
<a href="javascript:void(0)" onclick="testscript(0,800)">5番目</a>
<a href="javascript:void(0)" onclick="testscript(200,0)">6番目</a>
<a href="javascript:void(0)" onclick="testscript(200,200)">7番目</a>
・
・
・
<a href="javascript:void(0)" onclick="testscript(800,600)">24番目</a>
<a href="javascript:void(0)" onclick="testscript(800,800)">25番目</a>
とクリックする場所を設けて、それぞれをクリックすると、「testplace」に各々の200pxずつの画像が表示されるようにするスクリプト「testscript」を作成したいと考えています。
この方法だと画像は複数いらず1枚で済みます。CSSで背景画像を移動させる方法は使用しないで、実装できますでしょうか。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
枠となるDIV要素を200×200で、position:relative;overflow:hidden;
で用意しておいて、その中に1000×1000の画像を position:absolute; top:0px; left:0px;としてimg要素で配置しておき、
リンク(ボタンでもいいと思うけど)のクリックで、そのimg要素のstyle.topとstyle.leftを書き換えてやればよいと思う。
No.3
- 回答日時:
ご指定の方法とは違う書き方ですが、書いてみましたー。
コピペで動くと思います。
firefox3.6では動いてましたー。
position:absolute;にして、
topプロパティとleftプロパティを変えて移動させました。
----------------------------------
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/ …
<style>
a { margin:0 10px 0 0; }
</style>
</head>
<body>
<div id="target"><img id="testplace" src="test.jpg"></div>
<script>
/*
[ 1000 * 1000 ]
*/
function createBtnAndAction()
{
this.num = 25;
var img = $('#testplace');
var width = img.width();
var height = img.height();
var i;
var count = 1;
var number = 1;
var body = $('body');
var btn;
var position = [
[0,0],[-200,0],[-400,0],[-600,0],[-800,0],
[0,-200],[-200,-200],[-400,-200],[-600,-200],[-800,-200],
[0,-400],[-200,-400],[-400,-400],[-600,-400],[-800,-400],
[0,-600],[-200,-600],[-400,-600],[-600,-600],[-800,-600],
[0,-800],[-200,-800],[-400,-800],[-600,-800],[-800,-800]
];
var testplace = $('#testplace');
// 動かす下準備
testplace.css({ position : 'absolute' });
// targetを隠すためにCSS設定!
$('#target').css({ width : width / 5, height : height / 5, overflow : 'hidden', position : 'relative' });
// ボタンを25個つくる!
for( i = 0; i < this.num; i++ )
{
if( String( count ).length == 1 )number = '0' + number;
btn = $('<a href="#" rel="' + i + '">' + number + '</a>');
btn.click(function( e )
{
var Y = position[ this.rel ][1];
var X = position[ this.rel ][0];
console.debug( );
testplace.animate({ top : Y + 'px', left : X + 'px' }, 400);
e.preventDefault();
});
// 追加
body.append( btn );
if( count % 5 == 0 )
{
body.append('<br>');
}
number++;
count++;
}
};
new createBtnAndAction();
</script>
</body>
</html>
画像の位置指定は、マイナスですね。
こちらもうっかりしていました。
少し自分にはレベルが高いですが、
こんなこともできるんだと、興味深く見ています。
視野を広げてくださったことにも、
ありがとうございます。
No.2
- 回答日時:
確認ですが、
><img id="testplace"src="test.jpg" width="200px" height="200" />
↑こちらの記述だと画像が小さくなると思いますが(test.jpgは1000×1000pxですよね?)
これは小さく表示された状態が正解なのでしょうか?
小さく表示された状態が正解だとすると、画像の表示部分は、
40×40pxになると思いますが、ここまでは合ってますか?
この回答への補足
「 width="200px" height="200" 」の部分を
「 width="1000" height="1000" 」に訂正します。
ご指摘ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- HTML・CSS htmlで画面遷移させたい 1 2022/10/28 18:19
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jQueryで同じクラス名のものを...
-
アップロードファイルの種類に...
-
Javascript初心者|jQueryの.va...
-
ボタンを押すたびに交互に切り...
-
画像マウスオーバーで、checkb...
-
クリックでクリッカブルマップ...
-
デフォルト非表示にしたい。【t...
-
全部のサイコロをjavascriptで...
-
clear機能を失わずにファイルア...
-
jacascriptで作ったドロップダ...
-
jQueryでのドラッグアンドドロ...
-
MAX関数を使ってからLEFT JOIN...
-
javascriptで毎月替わる画像
-
Slick.jsのオプションrtlについて
-
jQueryで、リンクURLの一致を確...
-
フッター上部に謎の隙間
-
HTMLで条件分岐はできますか?
-
大分類・中分類・小分類
-
HTMLですCSSです 画像のように...
-
CSS <div>の入れ子が反映さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Colorboxがうまく設置できません
-
デフォルト非表示にしたい。【t...
-
「画像クリックで音声再生」を ...
-
Javascript初心者|jQueryの.va...
-
jQueryで同じクラス名のものを...
-
複数bxsliderをタブで切り替え...
-
画像の表示位置
-
embed要素のsrc属性の値を変更...
-
JQueryでオープニングアニメー...
-
jQueryでのドラッグアンドドロ...
-
全部のサイコロをjavascriptで...
-
JavaScriptでクレイアニメ。ち...
-
bxsliderで最初に縦に複数表示...
-
アップロードファイルの種類に...
-
clear機能を失わずにファイルア...
-
JavaScriptでの画像切り替えを...
-
マウスカーソルに合わせて画像...
-
交互に入れ替わる画像を複数配置
-
サイトに横スクロールのスライ...
-
サムネイルにカーソルを合わせ...
おすすめ情報