質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

Q&A

1回答

15814閲覧

伸縮する画像の上に位置がずれないよう伸縮するボタンを置きたい

Katsunory

総合スコア12

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

0グッド

1クリップ

投稿2015/11/01 12:59

###前提・実現したいこと
レスポンシブのコーディングを実現する上で、伸縮する画像の上に位置がずれないよう伸縮するボタンを置きたいです。

###発生している問題・エラーメッセージ
上に乗せるボタンが背景画像とズレてしまいます。
使用している画像は下の画像です。
下のソースコードを展開すれば、なんとなくボタンが画像の真ん中に来るようになりレスポンシブにも対応できているのですが、
例えばウィンドウを伸び縮みさせるとボタンが雲にかかったりかからなかったりするのがわかると思います。
このような背景画像とのズレが許されない場合はどのように実装すればよいでしょうか。
お知恵を貸していただければ幸いです。

イメージ説明

###ソースコード

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>test</title> <style type="text/css" media="screen"> html, body{ width: 100%; height: 100%; margin: 0; } div{ display: block; width: 100%; height: 100%; background-image: url(a.jpg); background-repeat: no-repeat; background-size: contain; padding-top: 30%; } a{ background-color: #ddd; background-size: 100% auto; width: 60%; display: block; /*line-height: 300%;*/ text-decoration: none; text-align: center; margin: 0 auto; padding: 2%; box-sizing: border-box; } </style> </head> <body> <div> <a href="#">ボタンです</a> </div> </body> </html>

###補足情報(言語/FW/ツール等のバージョンなど)
全く別の実装方法なのですが、クリッカブルマップをベースにjQueryのライブラリを駆使してかなりいいところまで、つまり下の画像とのズレなく実装できたことがありました。
しかし、その方法はPCでは全く問題ないのですが、モバイルでリンクをタップした際にハイライトが効かず断念しました。おそらくこちらもハイライトを有効にする方法はなにかあったと思うのですがクリッカブルマップの場合どのようにすればよいかわかりませんでした。
使用したライブラリは下記です。
http://www.outsharked.com/imagemapster/default.aspx?docs.html
https://github.com/stowball/jQuery-rwdImageMaps
http://davidlynch.org/projects/maphilight/docs/

タップ時に別画像に切り替える方法は画像が伸縮するレスポンシブは自分の調べた限りうまくいきませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yunn

2015/11/02 08:14

試しましたが、よほど小さくしない限りは特に問題ないように思えるし…問題が生じるサイズとか、こうなって欲しくない図(簡単なもので十分かと。)とか、ブラウザ(Ver.)、OSなどを挙げると回答を得やすいかも知れません。
guest

回答1

0

ボタンの上下中央寄せをpadding-top:30%で実現しているからでしょう。
position:absolutemargin:autoで上下中央寄せさせてください。

また、divの高さとbackground-imageの高さが合っていないので、background-size:coverに修正する必要があるように見えます。

DEMO

css

1html, body{ 2 width: 100%; 3 height: 100%; 4 margin: 0; 5} 6div{ 7 width: 100%; 8 9 display: block; 10 height: 100%; 11 12 background-image: url(https://teratail.com/uploads/contributed_images/be16d86c665d81b3e39283b19a0a6b80.jpeg); 13 background-repeat: no-repeat; 14 background-size: cover; 15} 16a{ 17 position: absolute; 18 top: 0; 19 left: 0; 20 right: 0; 21 bottom: 0; 22 margin: auto; 23 24 width: 60%; 25 height: 2em; 26 padding: .25em; 27 28 background-color: #ddd; 29 background-size: 100% auto; 30 width: 60%; 31 margin: auto; 32 box-sizing: border-box; 33 display: block; 34 /*line-height: 300%;*/ 35 text-decoration: none; 36 text-align: center; 37}

参考

CSSでblock要素を上下左右中央寄せにする、イマドキの方法。 | バシャログ。 | 横浜でWeb制作を行うシーブレインスタッフによる技術情報ブログ

投稿2015/11/02 23:11

編集2015/11/02 23:11
horse_n_deer

総合スコア452

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問