Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。8,269件1リストのaタグを親要素いっぱいにして、さらにテキストを上下中央にしたいのですが、うまくいきません。レスポンシブサイトなので下記のように特殊なやり方で上下左右中央にテキストをもってきています。上記のような場合はどのようにすれば実現できますか?height:100%;にすると親いっぱいにはできますが、今度はテキストが上にずれてしまいます。その後下記のようにしたところだいたい真ん中に来たのですが原理がよくわかりません。translateY(-50%)が要素の高さの半分だけ上に移動するということですよね。aの高さを100%にすると上記のままだと親要素の高さ割る2分aが上に移動するので、aの高さが大きくなった分上にずれすぎるのが原因ということですね。*/にしたらだいたい真ん中に来ました。translateY(-20%);・>>>また、ブロックボックス内のテキストなどの縦方向の配置を制御することはできません。これはとっても大事な情報ですね。テキストならブロック要素内でも効くと思っていました。インライン要素内のテキストしか上下中央にできないのですね。・インライン要素に適用した場合には、行ボックスの高さの範囲内での縦方向の位置を指定します。プロパティを適用できるのは、インライン要素とテーブルセルのみ。ブロック要素自体やその中にあるテキストやインライン要素には効かない。・下記をulにつけてaにheight:100%;を付けたのですが、それでもうまくいきません。票4下記のように特殊なやり方で上下左右中央にテキストをもってきています本当に特殊なやり方ですね。どこから引っ張ってこられたコードか知りませんが、何が起こっているのかをちゃんと理解せずに使うとご質問に記載のような状況が発生してしまいます。+------------------------------------------+この状況で子側のheightが100%になったらどうなるか、想像できると思うのですが...。++----------------------------------------++つまりあなたが使っておられるu-centaring-all-item-height-flexibleのスタイル指定は、子側の高さがちょうどコンテンツの高さになっていることが大前提なので、子側のheightを100%に指定して、親側と同じ高さになってしまっては、コンテンツを上下中央に配置することはできません。80%;でほぼ中央とのことですが、この調整方法では結局、親側のheightと現在のfont-size等に依存することになり、ピクセル単位で微調整をかけているのと同じことで、とてもレスポンシブとは言えないことになってしまいます。してもu-centaring-all-item-height-flexibleを使いたいのであれば、a要素を親にしてその子要素を中央に表示すると言った形にする必要があるでしょう。したらだいたい真ん中に来ました。こんな状態だということですね。+----------------------------------------+補正しないといけない量は親BOXの高さ(=子BOXの高さ)ではなく、「子BOXのコンテンツの高さ」から求めないといけません。言うのも現在の「親BOXの高さ」「子BOXのコンテンツの高さ」の場合、たまたまその値で大体真ん中にきている、と言うだけで、両者の比率が大きく異なってくるとその値ではダメなはずです。試しにaタグ内のフォントサイズを倍くらいに増やしてみてください。つけてもなぜ上下中央にならないのでしょうか?vertical-alignの仕様に関しては、Webデザインに関わるものは戸惑うところが多いのですが、その分、日本語でしっかり解説してくれているサイトも多いのでよく探してみてください。HTMLクイックリファレンス上の記事で言うと、肝心なのはこの辺りでしょうか。プロパティは、ブロックレベル要素には適用できません。プロパティでブロックボックス全体の縦方向の配置を制御することはできません。ブロックボックス内のテキストなどの縦方向の配置を制御することはできません。インライン要素に適用した場合には、行ボックスの高さの範囲内での縦方向の位置を指定します。縦方向の位置が指定されているだけ、と言う形になります。プロパティを適用できるのは、インライン要素とテーブルセルです。最後の部分↓につながるわけです。追記これはおそらく親要素をはみ出るような指定はできないということですかね?と言うよりは、インライン要素同志の縦位置合わせだけができると思った方がいいですね。色々なフォントサイズのインライン要素を横に並べて、vertical-alignの指定を変えていくと雰囲気がわかると思います。下記をulにつけてaにheight:100%;を付けたのですが、それでもうまくいきません。center;の効果も、その内部のコンテンツを縦方向で中央に揃えるものではありません。flexbox絡みのわかりやすい解説記事も増えてきましたから、図でわかりやすく示してくれているサイトを見つけてください。【CSS】Flexboxのプロパティ(justify-content、align-items、align-self、align-content)を紹介しますあなたが期待されているのとは異なる図だと思います。middle;で並べたときのイメージに近いですね。dislpey:table;出ないとだめなのでしょうか?私の知識の範囲では「絶対ダメ」かどうかはわかりませんが、簡単かつ確実とは言えると思います。(もっともtable-cellなんかを指定した要素は特殊なレイアウトになるので、通常のCSSで期待したのと結果が異なるなんてことが別に出てくるかもしれません。table-cell;なんかを使った方が確実でわかりやすいと思うのですが...を実際にコードにしてみました。middle;の指定をお忘れなくと言ったところでしょうか。インライン要素同志の縦位置合わせだけができると思った方がいいですね。色々なフォントサイズのインライン要素を横に並べて、vertical-alignの指定を変えていくと雰囲気がわかると思います。横の位置はそろえられませよという意味なのですね。はみ出ることができないわけではないのですね。見ると下記でも上下中央になっていそうですが、なぜならないんですかね。見ると下記をブロック要素につければよいようですが、aにblockをつけている私の場合はcellがblockと被ってしまいます。さん、1つ目のリンクでdiv要素内のpタグたちが「上下中央になって」いるように見えるのは、pタグ独自の上下マージンのせいです。上下に固定長のマージンを取って良いなら(つまりレスポンシブにこだわらないなら)そりゃ上下中央も、それほど苦労せずにできますね。(pタグが親要素の高さに追従して上下中央に並んでいるのではなく、等間隔に並べたpタグに応じて親要素の高さが決定されている状態。)2つめについてですが、aタグのblockをtable-cellに付け替えれば良いのでそれほどの大改造にはならないと思いますよ。さん、コメント中のリンクは404になってしまうので、ご質問中のリンクを見させてもらいました。(本当は同じはず?)言い忘れたところも含めて、table-cellのコード例を追記しましたのでご覧おきください。回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。5%分、liの中のテキスト情報などのインライン要素がずれて真ん中になりません。0ブラウザのサイズに依らずに画像を縦いっぱいに表示するには2テキストエリアの右下にある//を消したい(リサイズを禁止したい)0csscombの設定について。思ったように整形してくれません。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。