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

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

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

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

HTML5

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

325閲覧

borderの適応範囲について

toll_tree

総合スコア199

CSS3

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

HTML5

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/06/30 08:58

編集2019/07/01 06:57

borderの範囲について、お聞きしたいことがございます。

<div class="infomation_box"> <p class="left_info_box">来院目的</p> <p class="right_info_box">初めての来院(初めて〇〇〇動物病院に来院さ…</p> <p class="left_info_box">希望日時</p> <p id="preffered_date" class="right_info_box">2019年06月15日(土)10時30分</p> </div>
.infomation_box{ text-align:center; border: 1px solid orange; height:40px; } .left_info_box{ display: inline-block; background-color: #ffce75; border-right: 1px solid orange; width: 165px; padding: 3px 10px; border-bottom: orange; font-weight: bold; font-size: 14px; line-height: 2.5; text-align: right; height:34px; } .right_info_box{ display: inline-block; font-size: 14px; margin-left: 7px; margin-right: 21px; margin-left: 7px; margin-top: 10px; margin-bottom: 9px; } #preffered_date{ width:300px; } body{ margin:0; } p{ margin:0; } ul{ list-style:none; }

コードの実行結果は、以下の画像になります。
イメージ説明
お聞きしたい点なのですが、borderが「infomation_box」内の上から2つのpタグの回りにしかついておらず、下2つのpタグが無視されてしまっているような状態になっています。
最終的には、下記画像のようにしたいと考えております。
イメージ説明
真ん中のborderに関しては、「infomation_box」内上2つに対して、「border-bottom」を設定することで対処しようと考えていますが、大枠の全体を囲うborderは、「infomation_box」に対して設定した、borderを適応させたいと考えています。
解決法につきまして、ご助言頂ければ幸いです。
よろしくお願いします。

追記です

イメージ説明

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

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

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

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

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

guest

回答2

0

そもそもtableで組んでも良さそうな内容ですが使用したくない何かしらの理由があるのでしょうか。

コード修正しました

html

1<table class="orangetable"> 2 <tr><th>来院目的</th><td>初めての来院(初めて〇〇〇動物病院に来院さ…</td></tr> 3 <tr><th>希望日時</th><td>2019年06月15日(土)10時30分</td></tr> 4</table>

css

1table.orangetable { 2 border-collapse: collapse; 3 border-spacing: 0; 4} 5 6.orangetable th, .orangetable td { 7 border: 1px solid orange; 8 padding: 3px 10px; 9 font-size: 14px; 10 height: 34px; 11} 12 13.orangetable th { 14 background-color: #ffce75; 15 width: 165px; 16 text-align: right; 17}

以下編集前のコード

html

1<table class="orangetable"> 2 <tr><th>来院目的</th><td>初めての来院(初めて〇〇〇動物病院に来院さ…</td></tr> 3 <tr><th>希望日時</th><td>2019年06月15日(土)10時30分</td></tr> 4</table>

css

1table.orangetable { 2 border-collapse: collapse; 3 border-spacing: 0; 4} 5 6.orangetable th, .orangetable td { 7 border: 1px solid orange; 8 padding: 3px 10px; 9 font-size: 14px; 10 height: 34px; 11} 12 13.orangetable th { 14 border: 1px solid orange; 15 padding: 3px 10px; 16 background-color: #ffce75; 17 width: 165px; 18 text-align: right; 19} 20 21.orangetable td { 22 margin: 10px 21px 9px 7px; 23}

投稿2019/07/01 07:37

編集2019/07/01 23:57
dit.

総合スコア3235

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

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

toll_tree

2019/07/01 10:11

ご回答ありがとうございます。 やはりtableの方が良いですよね... 自分も作りかけてた際にそう思ったのですが、途中からだし、今更...と思ってこのままいってしまおうかなと思ったんですよね...
dit.

2019/07/01 23:43

途中まで作ったし頑張って調整したからこのままやりたい と思う気持ちはわかります。 が、その先の調整でさらに難航する可能性があるので組みなおした方が早い場合もあります。 (と、書いていて質問履歴を見てみたらtableで組んだ場合の質問されてますね。)
dit.

2019/07/01 23:53

あと、質問に提示のコードに合わせてしまったので.right_info_boxの余白設定がmarginになってますが、tdに指定するならpaddingの方が適切ですね。 thと同じ余白でいいなら`.orangetable td {`以降すべて消して良さそうです。 padding: 3px 10px;もth、td両方で指定したのにthでさらに指定してしまいました。 ちょっと回答のコードなおします。
toll_tree

2019/07/02 01:02 編集

あ、dit.さんどうもです!w あちらの方でもご回答くださり感謝です! 最初は、このままdivでいこうかなと思ったのですが、自分も先のことを考えた場合を考えてtableで組むことにしましたんですよね。
toll_tree

2019/07/02 01:09

編集頂きありがとうございます。 あれから、多少コードを改変しましたので、自分のコードと照らし合わせてみたいと思います。
toll_tree

2019/07/02 01:15

>thと同じ余白でいいなら`.orangetable td {`以降すべて消して良さそうです。 こちらなのですが、tdに関しましては、thよりかは幅自体は広く取ろうと考えておりましたので、取り敢えずはtdの指定はそのままで行こうかとおもいます!
dit.

2019/07/02 01:20

余白と幅は違うものなので注意してください。 もう一つの質問の回答に書きましたがクラス分けをしていないtdにwidth: 66px;がついてます。 これのせいでtdが短いので、width: 66px;を付けたいtableにクラスでもつけて区別してください。 これを直すだけでもtdは長くなると思います。 「余白を変えたい」ならmarginではなくpaddingにしてくださいね。 padding: 10px 21px 9px 7px; 思わぬところが影響したりするので、完全に同じ指定にしたいとき以外はtable、tr、th、tdなどへの直接的な指定ではなくidやclassを付けて区別するようにした方がいいです。
toll_tree

2019/07/02 01:40

ご返信ありがとうございます。 クラス分けをしていない「td」部分には、クラスを付けてみてもう一つの質問の問題が解決するか、試してみたいと思います。 承知しました。余白を変える場合はpaddingの設定を変えると肝に銘じたいと思います。
toll_tree

2019/07/02 02:10

クラス名をつけてみましたら、なんと改善しました... dit.さんのおっしゃる通りクラス名をつけて、今後はきちんと区別していこうと思います!
dit.

2019/07/02 02:30

解決されたようで何よりです。 tdなどに直接スタイルを付ける場合は他のすべてのtdにも影響を与えます。 別途指定しない限りすべてのtdのフォントサイズを同じにしたい というような場合以外は控えた方がいいですね。
guest

0

ベストアンサー

まずHTMLとCSSは現象が再現できるコードを提示しましょう。
提示されたコードだと現象が再現できません。何か足りてない気がします。

再現できないので憶測での回答になりますが
borderをclassではなくclass配下のp要素につけてみてはいかがですか

CSS

1.infomation_box{ 2 text-align:center; 3 height:40px; 4} 5.infomation_box p{ 6 border: 1px solid orange; 7}

実際はどうなってるか分かりませんがtext-align:center;も効いてないような気がするので
こっちもp要素に入れるといいかもしれません。

追記やその他回答を受けて

dit.さんが仰るようにtableで組めるのであればそれに越したことはありません。
どうしてもdivで組みたい場合の回答をします。

まず、提示されたコードではdisplay:inline-blockのため
要素が横並びとなり、縦積みにならないので再現しません。
そして、div要素widthが設定されていないが、
text-align:centerが効いているため、要素は画面いっぱいなのに(borderも画面いっぱいになる)
テキスト要素のみが中央に寄った状態になり、画面が崩れています。
これは、ブロック要素を動かすのにtext-alignは使えないってやつです。

上記を踏まえて、修正したコードです。

HTML

1 <div class="infomation_box"> 2 <p class="left_info_box">来院目的</p> 3 <p class="right_info_box">初めての来院(初めて〇〇〇動物病院に来院さ…</p> 4</div> 5<div class="infomation_box top_border_none"> 6 <p class="left_info_box">希望日時</p> 7 <p id="preffered_date" class="right_info_box">2019年06月15日(土)10時30分</p> 8</div>

CSS

1.infomation_box{ 2 /*text-align:center;*/ 3 border: 1px solid orange; 4 height:40px; 5 width:30%; /*要素の幅を指定する*/ 6 margin-left:auto; 7 margin-right:auto; 8} 9.top_border_none { 10 border-top-style: none; 11} 12.left_info_box{ 13 display: inline-block; 14 background-color: #ffce75; 15 border-right: 1px solid orange; 16 width: 165px; 17 padding: 3px 10px; 18 border-bottom: orange; 19 font-weight: bold; 20 font-size: 14px; 21 line-height: 2.5; 22 text-align: right; 23 height:34px; 24} 25.right_info_box{ 26 display: inline-block; 27 font-size: 14px; 28 margin-left: 7px; 29 margin-right: 21px; 30 margin-left: 7px; 31 margin-top: 10px; 32 margin-bottom: 9px; 33}

変更点は、div要素を2個に分ける事で縦積みにしてます。
縦積みにすることで中央のborderが被って濃くなってしまうため
下段div要素に対しborder-top-style: none;を設定することで
borderの被りを無くしています。

div要素を画面中央に配置するために、widthを設定し(ここはあとで調整してください)
marginをautoにすることで要素を画面中央にもってくるようにしました。

Codepenサンプル
[上記コードのサンプルです]

投稿2019/06/30 09:13

編集2019/07/01 16:40
mepon

総合スコア480

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

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

toll_tree

2019/06/30 09:22

ご回答ありがとうございます。 リセットCSSを適応させていたCSSの方も追記いたしました。
toll_tree

2019/06/30 09:32

「text-align:center;」の方はデベロッパーツールの方で確認しましたが、適応されていました。 提示頂いたコードですと、自分が試した限りでは、うまくいきませんでした...
mepon

2019/06/30 10:02

.infomation_boxに対してtext-align:center;をかけると来院目的と希望日時も 中央揃えになる認識なのですが提示の画像だとなっていないように見えます これで問題ないのであればそれで大丈夫です。 p要素に対して、cssを追加した結果について追加していただいてもいいですか?
toll_tree

2019/07/01 06:39

すみません。 ちょっとバグが発生してしまい、該当のページを表示することができなくなってしまいました... こちらのバグが解決し次第CSSの追加結果の方、追記させて頂きます。
toll_tree

2019/07/01 06:58

お待たせして申し訳ないです。 p要素に対して、CSSを追加した結果を追記しました。
mepon

2019/07/01 16:40

回答編集しました。
toll_tree

2019/07/01 16:55

ご丁寧に、追記頂きありがとうございます。 実は、結構時間かけて色々調整したのもあり、またいちから、tableで調整しなければならないと思うと少し、憂鬱な気分がしてしまいまして... かなり、迷っています...divで組めるならここまできたらご回答頂いたことを踏まえ、divで組んでも良いかなと思ってはいますね...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問