webページに画像を二つ、横並びで表示し、その二つを合わせて全画面(100%)になるように設定しています。
ただし左右の画像はトリミングされ、画面上に見えているのはそれぞれの画像の横半分のみです。
左の画像をクリックしたら、トリミングされた部分も含めて画像がスライドし、左画像だけで画面が埋まり、同じように、右の画像をクリックしたら、トリミングされた部分も含めて画像がスライドし、右画像だけで画面が埋まる仕組みを作りたいのですが、
どこかに参考になりそうなサイト、または詳しい方は居ないでしょうか?
クリックしてから画像を動かしたい(スクロールやページ読み込みでの自動切り替えでも、ボタン式のスライダーでも無い)のと、トリミング解除(元々の画像を横幅縮めて表示し、クリックで広がるようなモノではなく)で難儀している次第です。
お手数おかけしますが、よろしくお願いします
No.1ベストアンサー
- 回答日時:
こんばんは
方法はいろいろ考えられると思います。
ブラウザの全画面表示と言っても、縦長だったり横長だったりしますので、画像のプロポーションとの関係をどのようにしておくのかが一番問題になりそうな気がしますけれど、そのあたりに関しては何も記載が無いので・・・
>どこかに参考になりそうなサイト、~
どこかで見た記憶はありますが、残念ながらどこだか覚えていません。
簡単なものなら、作成してもさほどではないので、以下はごく簡単な一例です。
画像の変化は、CSSアニメーション(transition)を利用しています。
スクリプトでは「クリック時にクラス設定を行う」ことだけを行っています。
具体的には、二つのDIVをflexで横並びにして、width:50%で同じサイズにしてあります。
画像は背景画像として表示し、ともにサイズは高さを100%にして幅は成り行き。
左側の画像は左端合わせ、右側の画像は右端合わせに固定してあります。
親要素(=#wrap)にクラス(left, right)を設定すると、そちら側のdivの幅を100%まで、もう一方の幅を0にアニメーションするという仕組みにしてあります。
クラスを外すと元に戻ります。
ご参考までに。
(決して、これが唯一の方法というわけではなく、一例にすぎません)
※ 画像のプロポーションが画面サイズより小さい場合は、余白となって表示されます。
(画像の表示サイズや位置を変えることで、初期状態・拡幅時の表示の状態を調整できると思います)
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
html, body, #wrap {
width: 100%; height: 100%;
margin: 0; padding: 0;
}
#wrap { display: flex; }
#wrap .left, #wrap .right {
width: 50%; height: 100%;
background-repeat: no-repeat;
background-size: auto 100%;
transition: width 3s;
}
#wrap .left {
background-image: url('./photo01.jpg');
background-position: left;
}
#wrap .right {
background-image: url('./photo02.jpg');
background-position: right;
}
/* アニメーション設定 */
#wrap.left .left { width: 100%; }
#wrap.left .right { width: 0; }
#wrap.right .left { width: 0; }
#wrap.right .right { width: 100%; }
</style>
</head>
<body>
<div id="wrap">
<div class="left"></div>
<div class="right"></div>
</div>
<script>
document.getElementById('wrap').addEventListener('click', e=>{
const c = e.target.classList.item(0), cls = e.currentTarget.classList;
cls.toggle(c, !cls.contains(c));
});
</script>
</body>
</html>
No.3
- 回答日時:
No2です。
説明文が飛んでしまいました。すみません。
No2の補足説明です。
別法で、もう少し画像の位置・サイズが調整しやすそうな方法を考えてみました。
ついでに、スクリプトを用いない方法にしてあります。
label要素を二つ重ねておいて、上側のものをトリミング(=clip)で、右半分だけを表示しておくという考え方です。
変化させるのは、こちらの要素のみで、クリックによって表示幅を変えれば、下にある要素(=常に全体分の表示)が見えてくる(or隠れる)という考えです。
label要素にしているのは、inputと関連付けて、クリックを感知するためです。
label要素は全体表示(width:100%; height:100%;)にしてありますので、その中で画像を好きな位置・サイズで表示するように指定しておけば済みます。
(例示では、width:100%; height:100%;にしてあります。)
No.2
- 回答日時:
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
html, body, #wrap {
width: 100%; height: 100%;
margin: 0; padding: 0;
}
#wrap input { display: none; }
#wrap label {
position: absolute;
top: 0; left: 0;
width: 100%; height:100%;
overflow: hidden;
}
#wrap label:last-child {
clip-path: inset(0 0 0 50%);
transition: clip-path 3s;
}
#right:checked ~ label { clip-path: inset(0 0 0 0); }
#left:checked ~ label { clip-path: inset(0 0 0 100%); }
/* 画像表示サイズ等を以下で調節 */
#wrap label img { width: 100%; height:100%; }
</style>
</head>
<body>
<div id="wrap">
<label for="left"><img src="./img/photo01.jpg"></label>
<input type="checkbox" id="left">
<input type="checkbox" id="right">
<label for="right"><img src="./img/photo02.jpg"></label>
</div>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- フリーソフト 倍率自動調整して全画面表示できるフリーの画像ビューアー 1 2023/08/24 10:55
- HTML・CSS 画像が分割されて切り替わる、ループアニメーションが作りたい 7 2023/05/27 17:12
- ノートパソコン windows11フォトビューア 4 2023/07/07 18:35
- 写真・ビデオ LINEの動画送信でインカメラの場合、左右逆転になるのは避けられないですか? 1 2022/08/29 12:58
- PowerPoint(パワーポイント) パワーポイント アニメーション効果で、テキストと同時に画像を表示させる方法を教えてください 2 2022/09/12 21:06
- Windows 10 フォルダ内の全ての画像を矢印キーでスライドできるようにしたい 1 2022/10/21 12:53
- Illustrator(イラストレーター) 「頂点で線分を伸ばす」作業がうまく行かない。 1 2022/09/09 10:19
- その他(ソフトウェア) IrfanView で画像のスクロール?できますか 1 2022/08/31 13:57
- PDF Windowsでパソコンの画面全部をスクリーンショットし長い画像になりました。 この画像をPDFにし 2 2022/10/21 12:12
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【WPF】画像の切り替え
-
「using Windows」でエラーが出る
-
uwscの画像認識に失敗します。
-
vb.net 画像の透過について
-
uwcs のマクロで画像認識をして...
-
jqueryスライダーを2段でスライ...
-
HTMLで画像をポップアップで表...
-
UWSC 画像判定と条件分岐について
-
UWSCでループ処理がうまくいき...
-
画像のピクセルデータの取得
-
UWCSでのランダムクリック入力...
-
Excel ユーザーフォームで表示...
-
EXCEL VBA 複数のImageコントロ...
-
UWSCの画像認識と条件分岐につ...
-
HTMLでこの画像を表示したいで...
-
画像が分割されて切り替わる、...
-
【EXCEL VBA】ダブルクリックで...
-
HTMLです。画像をHTMLで表した...
-
C#のForm内に複数画像を繰り返...
-
colorbox.js 画像クリックで閉じる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
背景画像の繰り返しについて
-
Excel ユーザーフォームで表示...
-
EXCEL VBA 複数のImageコントロ...
-
VBAのユーザーフォームのイメー...
-
uwcs のマクロで画像認識をして...
-
UWSC 画像判定と条件分岐について
-
【WPF】画像の切り替え
-
「using Windows」でエラーが出る
-
gif 画像上の ボタンに リン...
-
jqueryスライダーを2段でスライ...
-
同じ画像を複数回表示させる
-
UWSC「画像が無い場合」
-
UWSCの色判定
-
【EXCEL VBA】ダブルクリックで...
-
UWSCでループ処理がうまくいき...
-
画像のビット数を変更する方法
-
VBA シート毎に画像挿入
-
vb.net 画像の透過について
-
uwscの画像認識に失敗します。
-
C#で画像を他の画像に貼り付け...
おすすめ情報