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

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

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

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

HTML5

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

Q&A

3回答

6814閲覧

表示画面幅の変更に対応する位置固定ができません。

Ryu_433

総合スコア8

CSS3

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

HTML5

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

0グッド

0クリップ

投稿2016/08/10 07:41

編集2016/08/10 09:30

###前提・実現したいこと
画像の上に入力ボックスを配置したいのですが、画像に合わせた位置に固定できません...。
現状の切り抜きです。「『●▲■』=」までが画像で、その右側に入力ボックスを入力ボックスを配置したいです。

私がデザインしたいページの全体図です。
イメージ説明
灰色の四角形がフォームを想定している部分です。

水色と灰色の四角形以外は画像で入れる予定です。
黒の四角形の部分は固定ですが、その下の白く縦に細長いカード状の部分の縦横比率は問題によって異なります。

スマホ・タブレットでの閲覧を想定しているので、画面の幅が変わっても「『●▲■』=」の右側に続くようにボックスを配置するための相対値での指定方法を教えていただきたいです。

また、ボックスの高さの相対値での指定方法も教えていただきたいです。
絶対値指定だとどうしても画面幅が小さい場合に違和感があります。

縦方向の相対値指定はできないのでしょうか...?

###発生している問題・エラーメッセージ

入力ボックスの位置を固定できません。 あと、ボックスの高さを相対値で指定できません。

###該当のソースコード
html

<html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>knowledge.ikkyoquest</title> <meta name="description" content=""> <link rel="stylesheet" href="main.css"> <!--レスポンシブにしたいねん--> <meta name="viewport" content="width=device-width,user-scalable=no,maximum-scale=1" /> <!-- ※デフォルトのスタイル(style.css) --> <link rel="stylesheet" media="all" type="text/css" href="main.css" /> <!-- ※タブレット用のスタイル(tablet.css) --> <link rel="stylesheet" media="all" type="text/css" href="tablet.css" /> <!-- ※スマートフォン用のスタイル(smart.css) --> <link rel="stylesheet" media="all" type="text/css" href="smart_portrait.css" /> <link rel="stylesheet" media="all" type="text/css" href="smart_landscape.css" /> </head> <body> <div class="iframe-content"> <iframe src="http://ikkyosai.com/2_renshu/" frameborder="0" scrolling="no" ></iframe> </div> <div class="deta"> <img src="image/1_question.png" class="page"> <a href="#" ><img id="linkbutton_1" src="image/linkbutton_on_1.png"></a> <a href="#" ><img class="button_hatena" id="button_2" src="image/linkbutton_hatena.png"></a> <a href="#" ><img class="button_hatena" id="button_3" src="image/linkbutton_hatena.png"></a> <a href="#"><img class="button_hatena" id="button_4" src="image/linkbutton_hatena.png"></a> <a href="#"><img class="button_hatena" id="button_5" src="image/linkbutton_hatena.png"></a> <a href="#"><img class="button_hatena" id="button_6" src="image/linkbutton_hatena.png"></a> <form method="post" action="example.cgi" class="form"> <p><input type="text" name="answer_1" placeholder="●▲■" class="form_input"></p> <p><input type="submit" value="OK!"></p> </form> </div> </body> </html>

css

@charset "UTF-8"; html{ height: 100%; } .iframe-content { position: relative; width: 90%; padding: 55.7% 0 0 0; margin-left: 5%; } .iframe-content iframe { position: absolute; top: 0; left: 0; width: 100%; height:100%; } .deta{ position: relative; top: 10px; width: 100%; } .page{ position: absolute; width: 100%; } /*以下、スマホ横画面仕様*/ @media screen and (max-width:740px){ /*ページ選択ボタン*/ #linkbutton_1{ position: absolute; top: 50px; left: 12.4%; width: 21.9%; } .button_hatena{ position: absolute; width: 21.9%; } #button_2{ top: 50px; left: 38.8%; } #button_3{ top: 50px; left: 65.2%; } #button_4{ top: 125px; left: 12.4%; } #button_5{ top: 125px; left: 38.8%; } #button_6{ top: 125px; left: 65.2%; } }

###試したこと
親要素のpositionをstatic以外のabsoluteに、formのpositionをabsoluteにして、右側からの相対値指定はできましたが、上(もしくは下)からの指定はできませんでした。
親要素のdetaの高さから見て〇〇%になるかなと思ってtop:60%;などと指定しましたが、変化なく,,,。
それはボックス自身の高さを指定しようとした時も同じでした。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

kei344

2016/08/10 07:50

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
kei344

2016/08/10 09:21

どこからどこまでが画像ですか?また、その縦横比率は固定ですか?問題によって変わりますか?
guest

回答3

0

位置を固定したいというのが画面に対してなのか画像に対してなのかちょっとよくわからなくて
求めているものとあっているかわかりませんが、画像と入力フォームを並べたいんですよね?
こういうのではだめですか?
サンプル

【追記】
すみません、「ボックスの高さの相対値での指定方法」これ見逃していました。
CSSのみでということであれば、最新のブラウザなどであれば「vw」「vh」という、画面の幅や高さを基準とした単位の指定ができます。

対応していないブラウザのことを考えると、JavaScriptなどで幅や高さを取得して計算して指定する必要がでてきますね。

投稿2016/08/10 08:56

編集2016/08/10 09:04
NatsumiOki

総合スコア1298

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

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

Ryu_433

2016/08/10 09:06

ご回答ありがとうございます。 わかりづらい質問で申し訳ありません。 「画像に対して」です。 大きな画像の上にフォームを置きたいのですが、その画像の中でのフォームの位置を固定したいという意味でした。 ですので、「画像とフォームを並べる」のではないです...。 せっかく回答していただいたのに申し訳ないです。 よろしければもう一度ご教授願いたいです!
Ryu_433

2016/08/10 09:08

【追記に関して】 ご丁寧にありがとうございます! 対応しているブラウザについてはまた自分で調べておきます! ありがとうございます。
Ryu_433

2016/08/10 09:34

ありがとうございます! .form_inputを二ヶ所で指定しているのは何か意味があるのですか?
NatsumiOki

2016/08/10 16:39

.pageと同じプロパティがあるのでまとめて書いただけで、.pageとは分けて同じ指定を.form_inputの方に書いても問題ないですよ。
guest

0

画像とフォームダグを1つの要素に入れ、画像とフォームの親要素を基準に配置するといいです。

css

1position: absolute; //親要素を基準とした絶対的な配置

次にz-indexで画像とフォームのレイヤー(重なり順)を変える事で実現出来ると思いますよ。

参考 :

http://www.tagindex.com/stylesheet/box/position.html
http://www.tagindex.com/stylesheet/box/z_index.html

投稿2016/08/13 15:27

fukumi822

総合スコア228

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

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

0

いろいろ方法はあるかと思いますが、こういう感じでどうでしょう。

CSS

1.deta { 2 overflow: hidden; 3 position: relative; 4} 5 6.page, 7.form { 8 box-sizing: border-box; 9 display: block; 10 float: left; 11 width: 50%; 12} 13.form { 14 padding: 0 0 0 2vw; 15} 16.form > p { 17 margin: 0 0 .5em; 18} 19 20.form_input { 21 box-sizing: border-box; 22 height: 50px; 23 width: 100%; 24} 25```**動くサンプル:**[https://jsfiddle.net/50jk2vdd/](https://jsfiddle.net/50jk2vdd/) 26 27--- 28 29**追記:** 30 31画像の切り方がわからないですが、IE9以降であれば下記のようにすれば比率を保ったまま高さを指定することが出来ます。 32 33```CSS 34.deta { 35 position: relative; 36} 37.page { 38 display: block; 39 width: 100%; 40} 41input { 42 position: absolute; 43} 44.form_input { 45 bottom: calc(32vw / 3); /* 画像比率が横3:縦1だから。IE9+くらいのはず */ 46 box-sizing: border-box; 47 height: calc(33vw / 3); /* bottomと値が近いのはたまたま。文字の高さと文字から外枠の高さが同じくらいだから。 */ 48 position: absolute; 49 right: 5vw; 50 width: 31vw; 51} 52```**動くサンプル:**[https://jsfiddle.net/50jk2vdd/3/](https://jsfiddle.net/50jk2vdd/3/) 53 54【CSSで計算式を可能にするcalc()ファンクション】 55[https://w3g.jp/blog/css3_calc_function](https://w3g.jp/blog/css3_calc_function) 56 57【[CSS3] px や % はもう古い? Viewport unitsという新たな単位『vw』,『vh』の使い方 | phiary】 58[http://phiary.me/css-viewport-units-vw-vh/](http://phiary.me/css-viewport-units-vw-vh/) 59

投稿2016/08/10 08:26

編集2016/08/10 09:56
kei344

総合スコア69400

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

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

Ryu_433

2016/08/10 08:53

ご回答ありがとうございます。 しかし、うまくいきませんでした...。 お恥ずかしながら何がどうダメなのかもわかりません...。 overflow: hidden; box-sizing: border-box; display: block; float: left; padding: 0 0 0 2vw; margin: 0 0 .5em; について、今急いで調べたのですがどういう意図で書き込まれているのかわかりません。 あと、.form_input で height: 50px;となっているということはやはり高さを相対値で指定することはできないのでしょうか?
kei344

2016/08/10 09:00

サンプルは御覧になりましたか?その状態にしたいのでなければ、完成形を画像で作って質問文に追記してください。 「うまくいきません」というのはどういう状況かがこちらにはわかりません。スクリーンショットを取ったり、HTML/CSSを全て提示したり、作成中のページへのリンクを質問文に貼るなどしてみてください。 >あと、.form_input で height: 50px;となっているということはやはり高さを相対値で指定することはできないのでしょうか? ああ、すいません見落としてました。画像がどういう比率で、幅に対してどういう高さかがわかれば出来ますよ。
Ryu_433

2016/08/10 09:10

失礼いたしました。 急いで載せます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問