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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

CSS3

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

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

CSS

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

Q&A

解決済

1回答

1220閲覧

nth-child(odd)またはnth-child(even)を使用した際のテーブルの列のハイライト方法を知りたい

m_miura1980

総合スコア6

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

CSS3

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

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

CSS

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

0グッド

1クリップ

投稿2021/04/14 11:38

前提・実現したいこと

cssのみでテーブルのセルにマウスがホバーした際に横・縦をハイライトにしたい
イメージ説明

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

イメージ説明

上記画像のようにnth-child(odd)またはnth-child(even)を使用した際
歯抜けのようになってしまいます。

該当のソースコード

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>ストライプテーブル -cssのみ</title> 8 <link rel="stylesheet" href="css/common.css"> 9</head> 10<body> 11 <table> 12 <thead> 13 <tr> 14 <th>見出し1</th> 15 <th>見出し2</th> 16 <th>見出し3</th> 17 </tr> 18 </thead> 19 <tbody> 20 <tr> 21 <td>データ1</td> 22 <td>データ2</td> 23 <td>データ3</td> 24 </tr> 25 <tr> 26 <td>データ4</td> 27 <td>データ5</td> 28 <td>データ6</td> 29 </tr> 30 <tr> 31 <td>データ7</td> 32 <td>データ8</td> 33 <td>データ9</td> 34 </tr> 35 <tr> 36 <td>データ10</td> 37 <td>データ11</td> 38 <td>データ12</td> 39 </tr> 40 <tr> 41 <td>データ13</td> 42 <td>データ14</td> 43 <td>データ15</td> 44 </tr> 45 </tbody> 46 </table> 47</body> 48</html>

css

1@charset "UTF-8"; 2 3table { 4 margin: 50px auto; 5 border-collapse: collapse; 6 overflow: hidden; 7} 8 9th { 10 background: #4f4f4f; 11 color: #fff; 12 width: 100px; 13} 14 15td { 16 text-align: center; 17} 18 19th, td { 20 padding: 5px; 21 border: 1px solid #000; 22 position: relative; 23} 24 25 tr:nth-child(even) { 26 background: #f2f2f2; 27} 28 29tr:hover { 30 background: #5981a8; 31} 32 33tr:hover { 34 background: #5981a8; 35} 36 37td:hover::after { 38 content: ""; 39 background: #5981a8; 40 width: 100%; 41 height: 200vh; 42 position: absolute; 43 top: -100vh; 44 left: 0; 45 z-index: -1; 46} 47 48

試したこと

その1
nth-childに対してz-indexの重なり順を変更

css

1tr:nth-child(even) { 2 background: #f2f2f2; 3 position: relative; 4 z-index: -2; 5}

変化はありませんでした

その2
thとtdに対してz-indexの重なり順を変更

css

1th, td { 2 padding: 5px; 3 border: 1px solid #000; 4 position: relative; 5 z-index: 0; 6}

下記の様になってしまいます。
イメージ説明

つたない説明で申し訳ありませんが
もしcssのみで可能なのであればご教授お願い致します。

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

端末:Windows10 Home
テキストエディタ:VS Code
ブラウザ:Chrome

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

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

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

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

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

guest

回答1

0

ベストアンサー

惜しい感じですね。CSSに親要素のセレクタがない以上、tdを起点として他行のtrに設定されたbackgroudを変えることはできません。
そこで、trのストライプ背景色自体もtd:hover::afterと同じ考え方で設定し、z-indexの重なり順で上書きしてみました。

CSS

1 2table { 3 margin: 50px auto; 4 border-collapse: collapse; 5 overflow: hidden; 6} 7 8th { 9 background: #4f4f4f; 10 color: #fff; 11 width: 100px; 12} 13 14td { 15 text-align: center; 16} 17 18th, td { 19 padding: 5px; 20 border: 1px solid #000; 21 position: relative; 22} 23 24tr:nth-child(even) td::before { 25 content: ""; 26 background: #f2f2f2; 27 width: 200vw; 28 height: 100%; 29 position: absolute; 30 top: 0; 31 left: -100vw; 32 z-index: -2; 33} 34 35tr:hover { 36 background: #5981a8; 37} 38 39td:hover::after { 40 content: ""; 41 background: #5981a8; 42 width: 100%; 43 height: 200vh; 44 position: absolute; 45 top: -100vh; 46 left: 0; 47 z-index: -1; 48}

投稿2021/04/14 13:18

workshajikoma

総合スコア110

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

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

m_miura1980

2021/04/15 03:38

詳しい解説までして頂きありがとうございます。 希望した動作を再現する事が出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問