当前位置:网站首页>Self made table
Self made table
2022-06-10 21:29:00 【Zangxiaochuan】
design sketch
JS
import {
useState, } from 'react';
import styles from './style.less'
const data = [
{
name: ' Hu lele ', key: 1, age: 19, value: ' Your efforts are ridiculous ', operating: ' Ha ha ha ha ' },
{
name: ' Little Lord ', key: 2, age: 129, value: ' Hey, hey, hey ', operating: ' Ha ha ha ha ' },
{
name: ' Guo Shuai ', key: 3, age: 9, value: ' Fat belly ', operating: ' Ha ha ha ha ' },
{
name: ' Guan yu ', key: 4, age: 31, value: ' My second brother is the best in the world ', operating: ' Ha ha ha ha ' },
{
name: ' Chenxiaohao ', key: 5, age: 22, value: ' his ', operating: ' Ha ha ha ha ' }
]
const index = () =>
{
const [active, setActive] = useState(null)
const handleMouse = (flag) =>
{
return () =>
{
console.log(flag);
setActive(flag)
}
}
return (
<div className={
styles.wrapper}>
<div className={
styles.spin_nested_loading}>
<div className={
styles.container}>
<div id='cyclicScroll' className={
`${
styles.table}`} >
<div className={
styles.table_container}>
<div className={
styles.table_content}>
<table style={
{
tableLayout: 'auto' }}>
<colgroup></colgroup>
<thead className={
styles.table_thead}>
<tr>
<th className={
styles.table_cell}> full name </th>
<th className={
styles.table_cell}> Age </th>
<th className={
styles.table_cell}> Address </th>
<th className={
styles.table_cell}> details </th>
<th className={
styles.table_cell}> operation </th>
</tr>
</thead>
<tbody className={
styles.table_tbody}>
{
data.map((data, index) => (
<tr key={
index} onMouseEnter={
handleMouse(data.key)}
onMouseLeave={
handleMouse(false)} className={
`${
styles.tbody_row} ${
styles.tbody_rowLevel_0}`}>
<td className={
`${
styles.table_cell} ${
data.key === active && styles.tbody_rowHover}`}><a>{
data.name}</a></td>
<td className={
`${
styles.table_cell} ${
data.key === active && styles.tbody_rowHover}`}>{
data.age}</td>
<td className={
`${
styles.table_cell} ${
data.key === active && styles.tbody_rowHover}`}>{
data.value}</td>
<td className={
`${
styles.table_cell} ${
data.key === active && styles.tbody_rowHover}`}>
<span className={
`${
styles.tag} ${
styles.tag_green}`} >Nice</span><span className={
`${
styles.tag} ${
styles.tag_volcano}`} >Nice</span>
</td>
<td className={
`${
styles.table_cell} ${
data.key === active && styles.tbody_rowHover}`}>
<div style={
{
gap: '16px' }} className={
`${
styles.space} ${
styles.horizontal} ${
styles.center}`} >
<div className={
styles.item}>
<a > see </a>
</div>
<div className={
styles.item}>
<a > Delete </a>
</div>
</div>
</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
);
};
export default index
CSS
.wrapper {
clear: both;
max-width: 100%;
&::after {
display: table;
clear: both;
content: '';
}
&::before {
display: table;
content: '';
}
.spin_nested_loading {
position: relative;
}
:focus-visible {
outline: -webkit-focus-ring-color auto 1px;
}
}
.container {
position: relative;
transition: opacity 0.3s;
.table {
box-sizing: border-box;
margin: 0;
padding: 0;
color: rgba(0, 0, 0, 0.85);
font-variant: tabular-nums;
line-height: 1.5715;
list-style: none;
font-feature-settings: 'tnum', "tnum";
position: relative;
font-size: 14px;
background: #fff;
border-radius: 2px;
table {
width: 100%;
text-align: left;
border-radius: 2px 2px 0 0;
border-collapse: separate;
border-spacing: 0;
.table_thead tr th, .table_tbody tr td {
position: relative;
padding: 16px 16px;
overflow-wrap: break-word;
}
.table_thead {
tr:first-child th:first-child {
border-top-left-radius: 2px;
}
tr:last-child th:last-child {
border-top-right-radius: 2px;
}
}
tr th {
position: relative;
color: rgba(0, 0, 0, 0.85);
font-weight: 500;
text-align: left;
background: #fafafa;
border-bottom: 1px solid #f0f0f0;
transition: background 0.3s ease;
// Select all and exclude the last &:not(:last-child)::before {
position: absolute;
top: 50%;
right: 0;
width: 1px;
height: 1.6em;
background-color: rgba(0, 0, 0, 0.06);
transform: translateY(-50%);
transition: background-color 0.3s;
content: '';
}
}
.table_tbody {
tr td {
border-bottom: 1px solid #f0f0f0;
transition: background .3s;
.tag {
box-sizing: border-box;
margin: 0;
padding: 0;
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5715;
list-style: none;
font-feature-settings: 'tnum', "tnum";
display: inline-block;
height: auto;
margin-right: 8px;
padding: 0 7px;
font-size: 12px;
line-height: 20px;
white-space: nowrap;
background: #fafafa;
border: 1px solid #d9d9d9;
border-radius: 2px;
opacity: 1;
transition: all 0.3s;
}
.tag_green {
color: #389e0d;
background: #f6ffed;
border-color: #b7eb8f;
}
.tag_volcano {
color: #d4380d;
background: #fff2e8;
border-color: #ffbb96;
}
.space {
display: inline-flex;
}
.center {
align-items: center;
}
}
.tbody_rowHover {
background: #fafafa;
}
}
}
}
&::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 10;
display: none \9;
width: 100%;
height: 100%;
background: #fff;
opacity: 0;
transition: all 0.3s;
content: '321';
pointer-events: none;
}
.table_container {
border-top-left-radius: 2px;
border-top-right-radius: 2px;
&::after, &::before {
position: absolute;
top: 0;
bottom: 0;
z-index: 1;
width: 30px;
transition: box-shadow 0.3s;
content: '';
pointer-events: none;
}
}
}
边栏推荐
- Uncover secrets: how can wechat red envelopes in the Spring Festival Gala resist 10billion requests?
- 标配双安全气囊,价格屠夫长安Lumin 4.89万起售
- 保姆级教程:如何成为Apache Linkis文档贡献者
- Redis集群配置
- Leetcode advanced path - Search insertion location
- Can you still have a wonderful life if you are laid off at the age of 35?
- Leetcode advanced path - the first unique character in a string
- As a programmer, is it really that important for the underlying principles?
- shell实现ssh登录并执行命令
- Understanding deep learning attention
猜你喜欢

Explain in detail the arithmetic operators related to matrix operation in MATLAB (addition, subtraction, multiplication, division, point multiplication, point division, power)

简解深度学习Attention

Arduino中Serial.print()与Serial.write()函数的区别,以及串口通信中十六进制与字符串的收发格式问题和转换过程详解

Signal and system review 1

What should be paid attention to when designing Multilayer PCB?

20192407 2021-2022-2 experimental report on Experiment 8 of network and system attack and Defense Technology

保姆级教程:如何成为Apache Linkis文档贡献者

連接mysql報錯 errorCode 1129, state HY000, Host ‘xxx‘ is blocked because of many connection errors

A small case with 666 times performance improvement illustrates the importance of using indexes correctly in tidb

Kcon 2022 topic public selection is hot! Don't miss the topic of "favorite"
随机推荐
Nodejs: official document 3 Dgram stream
Asynchronous, thread pool (completablefuture)
The programmed navigation route jumps to the current route (the parameters remain unchanged), and the navigationduplicated warning error will be thrown if it is executed multiple times?
北大青鸟昌平校区:高中学历可以学UI吗?
蛮力法/1~n的幂集 v4 递归
shell实现ssh登录并执行命令
Interview Essentials - basic knowledge of synchronized underlying principles
Meetup Preview: introduction to the new version of linkis and the application practice of DSS
蛮力法/任务分配
[untitled] broken item
Redis cache breakdown
Full Permutation V3 recursion of brute force method /1~n
Signal and system review 1
Software definition boundary (SDP)
Test APK exception control netlocation attacker development
ros虚拟时间
入行须知:运维需要懂编程吗?
Video monitoring system storage control, bandwidth calculation method
Extracting Nalu unit data from H264 real-time stream
Game compatibility test (general scheme)