疑似要素を a に適用しようとしています<tr>
が、期待どおりに機能していないことがわかりました。何かが欠けているのか、それとも単に不可能なのかはわかりません。
jsfiddle の例を次に示します: http://jsfiddle.net/jDwCq/
tr
の表示を に変更するdisplay: block;
と、疑似要素が表示されますが、必要なテーブルではなくブロックとして表示されることに注意してください。
それは可能ですか、それとも運命ですか?
疑似要素を a に適用しようとしています<tr>
が、期待どおりに機能していないことがわかりました。何かが欠けているのか、それとも単に不可能なのかはわかりません。
jsfiddle の例を次に示します: http://jsfiddle.net/jDwCq/
tr
の表示を に変更するdisplay: block;
と、疑似要素が表示されますが、必要なテーブルではなくブロックとして表示されることに注意してください。
それは可能ですか、それとも運命ですか?
table tr:before{
position: relative; /* Needed for pseudo elem */
display: block; /*Uncomment me and see what happens*/
}
これはうまくいくはずです...
TDに設定display: inline-block;
し、幅(それぞれposition: absolute
〜33%)を指定して、疑似要素から削除します。
それだけです:http://jsfiddle.net/jDwCq/6/
table tr {
/*position: relative; /* (REALLY NOT) Needed for pseudo elem */
display: block; /*Uncomment me and see what happens*/
}
td {
width: 32.9%; /* ADD THIS */
display: inline-block; /* AND THIS */
}
table tr:after {
/*position: absolute; REMOVE THIS TOO */
top: 0px;
left: 0px;
display: block;
content: '';
text-indent: -99999px;
background: red;
height: 2px;
/*width: 100%; NOT NEEDED */
}
::before
および/または::after
疑似要素を使用して行を大きく表示するには、これらの要素を要素に適用する必要がありますが、に基づいて要素をtd
選択する必要があります。td
:hover
tr
td::before,
td::after {
/* defines the default states/sizes */
height: 0;
display: block;
content: '';
}
tr:hover td::before,
tr:hover td::after {
/* adjusts attributes based on the parent tr's :hover event */
height: 1em;
}
ただし、目的が「クールに見える」ことである場合は、「表示される」だけの疑似要素を使用するのではなく、要素自体のスタイルを調整することをお勧めします(アニメーション化できるため)。td
td {
padding: 0;
-moz-transition: padding 1s linear;
-ms-transition: padding 1s linear;
-o-transition: padding 1s linear;
-webkit-transition: padding 1s linear;
transition: padding 1s linear;
}
tr:hover td {
padding: 1em 0;
-moz-transition: padding 1s linear;
-ms-transition: padding 1s linear;
-o-transition: padding 1s linear;
-webkit-transition: padding 1s linear;
transition: padding 1s linear;
}
もちろん、このアプローチを使用すると、 、 、 、 ( または ) にトランジション効果を使用しcolor
たりbackground-color
、height
タイミングfont-size
border
を-width
調整したり-color
(イージングも同様) したりできます。
複数のプロパティをアニメーション化するには、all
(個々のプロパティ名ではなく) キーワードを使用する方が簡単です。
padding
ルックスをアニメートしても「大丈夫」だと保証してくれます。おそらく、代替アプローチのクールさについて、自分の子供の親戚に相談する必要があるかもしれません. tr:hover td{
background: pink or whatever;
}
tr:hover td:after{
background: yellow;
}
疑似要素の必要性がわかりません。
セルではない要素を行の中に直接持つことは苦痛を求めていると言えます。ただし、ターゲット行のすべてのセル内に疑似要素を常に含めることができます。適切な CSS を使用すると、目に見える違いはありません。