🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSS

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

Q&A

解決済

2回答

6279閲覧

position:absolute;でwidth100%指定したら真ん中に表示されたが、意味がわからない

shunsaku87

総合スコア39

CSS

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

0グッド

2クリップ

投稿2019/09/12 07:56

編集2019/09/12 08:52

前提・実現したいこと

ここに質問の内容を詳しく書いてください。

progateでhtml cssを学んでいます。
要素を重ね合わせることを学んでいたときのことです。画像にpタグのテキストを重ねるときのことです。
親要素にposition:relative;を指定して、子要素にposition:absolute;を指定しました。
そして、top:90pxとしたところまではいいのですが、そのあとleftを指定するのかと思ったら、width100%を指定しろと言われ、その通りにしたら、画像のちょうど真ん中にテキストが表示されました。
leftで左右の位置を指定するなら理解できるのですが、width100%でちょうど真ん中になる原理が理解できません。
なぜそうなるのか、教えてください。

html↓

<div class="lesson-icon"> <img src="https://prog-8.com/images/html/advanced/html.png"> <p>HTML & CSS</p> </div>

css↓
.lesson-icon {
position: relative;
}

.lesson-icon p {
position: absolute;
top: 90px;
width: 100%;
color: white;
}

さらに広い部分のコードをコピペします。
html↓

<div class="lesson-wrapper"> <div class="container"> <div class="heading"> <h2>Learn Where to Get Started!</h2> </div> <div class="lessons"> <div class="lesson"> <div class="lesson-icon"> <img src="https://prog-8.com/images/html/advanced/html.png"> <p>HTML & CSS</p> </div>

css↓
.lesson-wrapper {
height: 500px;
padding-bottom: 80px;
background-color: #f7f7f7;
text-align: center;
}

.heading {
padding-top: 60px;
padding-bottom: 30px;
color: #5f5d60;
}

.heading h2 {
font-weight: normal;
}

.lesson {
float: left;
width: 25%;
}

.lesson-icon {
position: relative;
}

.lesson-icon p {
position: absolute;
top: 90px;
width: 100%;
color: white;
}
さらに広い部分のコードをコピペしました。ひょっとして、lesson-wrapperのtext-align:center;が関係ありますか?しかし、width100%というコードを入力すると同時にプレビューでpタグのテキスト(HTML & CSS)がシュッと中央に寄りますので。。。よくわからないです。

(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

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

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

maisumakun

2019/09/12 08:00

いくつか該当する状況が考えられますので、CSS全体を書いていただけましたら幸いです。
Lhankor_Mhy

2019/09/12 08:30

ご提示のコードを試してみましたが、『画像のちょうど真ん中にテキストが表示』が再現しませんでした。 ご提示いただいていない部分に原因があるかと思います。
yoshinavi

2019/09/12 08:59

>なぜそうなるのか、教えてください。 →「progate」では、解説や根拠等を、教えてくれないのですか?
shunsaku87

2019/09/12 09:00

すみません、何も教えてくれず、幅を100%にしろとただ指示されるだけです!
yoshinavi

2019/09/12 09:07

そうなのですね。 プロゲートって、スクールですよね? それじゃ、この先にも問題が発生してもヒントも解説等も教えてくれないのであれば、何を学べば良いのでしょうね。 この先も、このスクール継続をするかどうかを考える必要がありそうな気がしますね。
shunsaku87

2019/09/12 09:09

返信ありがとうございます。 progateはスクールみたいなものです。 ほんとそうですね。解説必要なところにで、解説がないです。
guest

回答2

0

ベストアンサー

想像ですが、たぶんtext-align:center;とかが効いてたのではないでしょうか。
width:100%;とすると親要素と同じ横幅になりますから、テキストが中央揃えになってれば、当然に親要素の中央に来ます。
そういうことでは?

質問追記にあわせて追記

lesson-wrapperのtext-align:center;が関係ありますか?

だからそう回答したじゃねえか
ご推察のとおりかと思います。その理由は前述のとおりです。

投稿2019/09/12 08:24

編集2019/09/12 09:13
Lhankor_Mhy

総合スコア36930

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

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

shunsaku87

2019/09/12 09:16

ありがとうございました。
guest

0

width100% は、横幅(width)をいっぱいいっぱい(可能な限度まで(100%))使って表示するという事ですから、結果としては左右のPaddingを除いた範囲に表示されます。
左右のPaddingの幅が同じなら、中央に表示されますよね。

もちろん、left: と right: で左右のPaddingの幅を異なる値にすると、表示は中央からずれます。

投稿2019/09/12 08:16

coco_bauer

総合スコア6915

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

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

shunsaku87

2019/09/12 09:17

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問