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

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

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

XHTMLは、eXtensible HyperText Markup Languageの略であり、SGMLベースであるHTMLとは違って、有効なXMLドキュメントにもなるHTMLアプリケーションです。XMLベースのツールを用いて生成されるHTMLページのためによく使われるマークアップ言語です。

CSS

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

Q&A

解決済

2回答

437閲覧

table-cellを使い、二つの要素を縦横真ん中ん置く方法

nikuatsu

総合スコア177

XHTML

XHTMLは、eXtensible HyperText Markup Languageの略であり、SGMLベースであるHTMLとは違って、有効なXMLドキュメントにもなるHTMLアプリケーションです。XMLベースのツールを用いて生成されるHTMLページのためによく使われるマークアップ言語です。

CSS

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

0グッド

0クリップ

投稿2022/07/15 22:16

編集2022/07/15 22:17

実現したいこと

<table>のセルの中で、「文字a」のすぐ横に「要素.triangle」を置きたいです。

発生している問題

「要素.triangle」が「文字a」のすぐ横でなく、セルの右端にいってしまいます。

該当のソースコード

よろしければお試しください。
https://jsfiddle.net/9u1rqt74/

このリンクのコードは次の通りです。

html

1<table> 2 <thead> 3 <tr> 4 <th class="a">a<div class="triangle"></div></th> 5 <th class="b">b</th> 6 </tr> 7 </thead> 8 <tbody> 9 <tr> 10 <td></td> 11 <td></td> 12 </tr> 13 <tr> 14 <td></td> 15 <td></td> 16 </tr> 17 </tbody> 18</table>

css

1/*ソートの三角*/ 2.triangle { 3 clip-path: polygon(0 0, 100% 0%, 50% 100%); 4 width: 13px; 5 height: 9px; 6 right: 3px; 7 position: absolute; 8 background: red; 9 top: calc(50% - 4px); 10} 11 12/*テーブル*/ 13table { 14 border-collapse: collapse; 15 width: 100%; 16} 17 18/*ソートの三角のための調整*/ 19th { 20 padding-right: 20px !important; 21 cursor: pointer; 22} 23 24/*ボーダー*/ 25th, 26td { 27 position: relative; 28} 29th:after, 30td:after { 31 border-right: 1px dotted #888; 32 position: absolute; 33 inset: 0 0 0 0; 34 content: ''; 35 pointer-events: none; 36} 37 38/*文字を真ん中*/ 39th { 40 text-align: center; 41} 42 43/*行の色*/ 44thead th { 45 background: #DDDDDD; 46} 47tbody tr:nth-child(odd) > * { 48 background: #F0F0F1; 49}

試したこと

position: absolute;を解除し、flot: rightにしてみましたが、.triangleの高さが真ん中にきてくれません。

css

1.triangle { 2 /* position: absolute; */ 3 float: right; 4}

position: absolute;を解除し、th.adisplay: flexにすればできましたが、やはりdisplay: table-cell;は解除したくありません。

css

1.triangle { 2 /* position: absolute; */ 3} 4th.a { 5 display: flex; 6 align-items: center; 7 justify-content: center; 8}

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

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

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

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

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

guest

回答2

0

ベストアンサー

下記でどうでしょう。

css

1/*ソートの三角*/ 2.triangle { 3 clip-path: polygon(0 0, 100% 0%, 50% 100%); 4 width: 13px; 5 height: 9px; 6 /*right: 3px; 7 position: absolute; */ 8 background: red; 9 /*top: calc(50% - 4px);*/ 10 display: inline-block; /* 追加 */ 11}

投稿2022/07/16 00:08

hatena19

総合スコア33715

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

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

nikuatsu

2022/07/16 01:30 編集

ありがとうございます。 そちらかなり惜しいのですが、画面幅が狭いときに三角が下に行ってしまう問題が生じてしまいました。 次のリンクで、画面幅を最大限狭くして頂くと、その問題がお分かりいただけるかと思います。 https://jsfiddle.net/jytp9cgk/ このリンクは問題が分かりやすいよう一部変更を加えています。(コメントアウトした「変更1~4」が変更部分ですが、この変更がなくても同様です。)
hatena19

2022/07/16 02:59

th に white-space: nowrap; を追加すればどうでしょう。
nikuatsu

2022/07/16 06:11

完璧です。うるさい注文にお答えいただきまして誠にありがとうございます。
guest

0

right: 3px;

right: calc(50% - 1em);あたりに調整するとか

投稿2022/07/15 23:37

recal

総合スコア1126

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

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

nikuatsu

2022/07/16 01:25

ありがとうございます。微調整もありかもしれませんね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問