Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
AresnLiang
VueJS_554986
提交
61702be5
V
VueJS_554986
项目概览
AresnLiang
/
VueJS_554986
与 Fork 源项目一致
Fork自
inscode / VueJS
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
VueJS_554986
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
61702be5
编写于
3月 18, 2024
作者:
View Design
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Mon Mar 18 11:37:00 CST 2024 inscode
上级
79c5bd79
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
189 addition
and
43 deletion
+189
-43
src/App.vue
src/App.vue
+102
-43
src/components/table.vue
src/components/table.vue
+87
-0
未找到文件。
src/App.vue
浏览文件 @
61702be5
<
script
setup
>
import
HelloWorld
from
'
./components/HelloWorld.vue
'
import
TheWelcome
from
'
./components/TheWelcome.vue
'
</
script
>
<
template
>
<header>
<img
alt=
"Vue logo"
class=
"logo"
src=
"./assets/logo.svg"
width=
"125"
height=
"125"
/>
<div
class=
"wrapper"
>
<HelloWorld
msg=
"You did it!"
/>
</div>
</header>
<main>
<TheWelcome
/>
</main>
<div>
<i-table
:data=
"tableData"
:columns=
"tableColumns"
:rowHeight=
"30"
:visibleRowCount=
"10"
/>
</div>
</
template
>
<
style
scoped
>
header
{
line-height
:
1.5
;
}
<
script
>
import
iTable
from
"
./components/table.vue
"
;
.logo
{
display
:
block
;
margin
:
0
auto
2rem
;
}
@media
(
min-width
:
1024px
)
{
header
{
display
:
flex
;
place-items
:
center
;
padding-right
:
calc
(
var
(
--section-gap
)
/
2
);
}
.logo
{
margin
:
0
2rem
0
0
;
}
header
.wrapper
{
display
:
flex
;
place-items
:
flex-start
;
flex-wrap
:
wrap
;
}
}
</
style
>
export
default
{
components
:
{
iTable
,
},
data
()
{
return
{
tableData
:
[
{
id
:
1
,
name
:
"
John Doe
"
,
age
:
30
},
{
id
:
2
,
name
:
"
Jane Doe
"
,
age
:
25
},
{
id
:
3
,
name
:
"
Bob Smith
"
,
age
:
40
},
{
id
:
4
,
name
:
"
Alice Johnson
"
,
age
:
35
},
{
id
:
5
,
name
:
"
Tom Brown
"
,
age
:
28
},
{
id
:
6
,
name
:
"
Sara Lee
"
,
age
:
32
},
{
id
:
7
,
name
:
"
Mike Smith
"
,
age
:
45
},
{
id
:
8
,
name
:
"
Lucy Chen
"
,
age
:
27
},
{
id
:
9
,
name
:
"
David Wang
"
,
age
:
38
},
{
id
:
10
,
name
:
"
Grace Zhang
"
,
age
:
31
},
{
id
:
11
,
name
:
"
Jack Ma
"
,
age
:
50
},
{
id
:
12
,
name
:
"
Maggie Lee
"
,
age
:
29
},
{
id
:
1
,
name
:
"
John Doe
"
,
age
:
30
},
{
id
:
2
,
name
:
"
Jane Doe
"
,
age
:
25
},
{
id
:
3
,
name
:
"
Bob Smith
"
,
age
:
40
},
{
id
:
4
,
name
:
"
Alice Johnson
"
,
age
:
35
},
{
id
:
5
,
name
:
"
Tom Brown
"
,
age
:
28
},
{
id
:
6
,
name
:
"
Sara Lee
"
,
age
:
32
},
{
id
:
7
,
name
:
"
Mike Smith
"
,
age
:
45
},
{
id
:
8
,
name
:
"
Lucy Chen
"
,
age
:
27
},
{
id
:
9
,
name
:
"
David Wang
"
,
age
:
38
},
{
id
:
10
,
name
:
"
Grace Zhang
"
,
age
:
31
},
{
id
:
11
,
name
:
"
Jack Ma
"
,
age
:
50
},
{
id
:
12
,
name
:
"
Maggie Lee
"
,
age
:
29
},
{
id
:
1
,
name
:
"
John Doe
"
,
age
:
30
},
{
id
:
2
,
name
:
"
Jane Doe
"
,
age
:
25
},
{
id
:
3
,
name
:
"
Bob Smith
"
,
age
:
40
},
{
id
:
4
,
name
:
"
Alice Johnson
"
,
age
:
35
},
{
id
:
5
,
name
:
"
Tom Brown
"
,
age
:
28
},
{
id
:
6
,
name
:
"
Sara Lee
"
,
age
:
32
},
{
id
:
7
,
name
:
"
Mike Smith
"
,
age
:
45
},
{
id
:
8
,
name
:
"
Lucy Chen
"
,
age
:
27
},
{
id
:
9
,
name
:
"
David Wang
"
,
age
:
38
},
{
id
:
10
,
name
:
"
Grace Zhang
"
,
age
:
31
},
{
id
:
11
,
name
:
"
Jack Ma
"
,
age
:
50
},
{
id
:
12
,
name
:
"
Maggie Lee
"
,
age
:
29
},
{
id
:
1
,
name
:
"
John Doe
"
,
age
:
30
},
{
id
:
2
,
name
:
"
Jane Doe
"
,
age
:
25
},
{
id
:
3
,
name
:
"
Bob Smith
"
,
age
:
40
},
{
id
:
4
,
name
:
"
Alice Johnson
"
,
age
:
35
},
{
id
:
5
,
name
:
"
Tom Brown
"
,
age
:
28
},
{
id
:
6
,
name
:
"
Sara Lee
"
,
age
:
32
},
{
id
:
7
,
name
:
"
Mike Smith
"
,
age
:
45
},
{
id
:
8
,
name
:
"
Lucy Chen
"
,
age
:
27
},
{
id
:
9
,
name
:
"
David Wang
"
,
age
:
38
},
{
id
:
10
,
name
:
"
Grace Zhang
"
,
age
:
31
},
{
id
:
11
,
name
:
"
Jack Ma
"
,
age
:
50
},
{
id
:
12
,
name
:
"
Maggie Lee
"
,
age
:
29
},
{
id
:
1
,
name
:
"
John Doe
"
,
age
:
30
},
{
id
:
2
,
name
:
"
Jane Doe
"
,
age
:
25
},
{
id
:
3
,
name
:
"
Bob Smith
"
,
age
:
40
},
{
id
:
4
,
name
:
"
Alice Johnson
"
,
age
:
35
},
{
id
:
5
,
name
:
"
Tom Brown
"
,
age
:
28
},
{
id
:
6
,
name
:
"
Sara Lee
"
,
age
:
32
},
{
id
:
7
,
name
:
"
Mike Smith
"
,
age
:
45
},
{
id
:
8
,
name
:
"
Lucy Chen
"
,
age
:
27
},
{
id
:
9
,
name
:
"
David Wang
"
,
age
:
38
},
{
id
:
10
,
name
:
"
Grace Zhang
"
,
age
:
31
},
{
id
:
11
,
name
:
"
Jack Ma
"
,
age
:
50
},
{
id
:
12
,
name
:
"
Maggie Lee
"
,
age
:
29
},
{
id
:
1
,
name
:
"
John Doe
"
,
age
:
30
},
{
id
:
2
,
name
:
"
Jane Doe
"
,
age
:
25
},
{
id
:
3
,
name
:
"
Bob Smith
"
,
age
:
40
},
{
id
:
4
,
name
:
"
Alice Johnson
"
,
age
:
35
},
{
id
:
5
,
name
:
"
Tom Brown
"
,
age
:
28
},
{
id
:
6
,
name
:
"
Sara Lee
"
,
age
:
32
},
{
id
:
7
,
name
:
"
Mike Smith
"
,
age
:
45
},
{
id
:
8
,
name
:
"
Lucy Chen
"
,
age
:
27
},
{
id
:
9
,
name
:
"
David Wang
"
,
age
:
38
},
{
id
:
10
,
name
:
"
Grace Zhang
"
,
age
:
31
},
{
id
:
11
,
name
:
"
Jack Ma
"
,
age
:
50
},
{
id
:
12
,
name
:
"
Maggie Lee
"
,
age
:
29
},
{
id
:
1
,
name
:
"
John Doe
"
,
age
:
30
},
{
id
:
2
,
name
:
"
Jane Doe
"
,
age
:
25
},
{
id
:
3
,
name
:
"
Bob Smith
"
,
age
:
40
},
{
id
:
4
,
name
:
"
Alice Johnson
"
,
age
:
35
},
{
id
:
5
,
name
:
"
Tom Brown
"
,
age
:
28
},
{
id
:
6
,
name
:
"
Sara Lee
"
,
age
:
32
},
{
id
:
7
,
name
:
"
Mike Smith
"
,
age
:
45
},
{
id
:
8
,
name
:
"
Lucy Chen
"
,
age
:
27
},
{
id
:
9
,
name
:
"
David Wang
"
,
age
:
38
},
{
id
:
10
,
name
:
"
Grace Zhang
"
,
age
:
31
},
{
id
:
11
,
name
:
"
Jack Ma
"
,
age
:
50
},
{
id
:
12
,
name
:
"
Maggie Lee
"
,
age
:
29
},
],
tableColumns
:
[
"
ID
"
,
"
Name
"
,
"
Age
"
],
};
},
};
</
script
>
src/components/table.vue
0 → 100644
浏览文件 @
61702be5
<
template
>
<div
class=
"vue-table"
ref=
"tableWrapper"
@
scroll=
"handleScroll"
>
<table>
<thead>
<tr>
<th
v-for=
"column in columns"
>
{{
column
}}
</th>
</tr>
</thead>
<tbody>
<tr
v-for=
"(row, index) in visibleRows"
:key=
"index"
>
<td
v-for=
"(value, key) in row"
>
{{
value
}}
</td>
</tr>
</tbody>
</table>
</div>
</
template
>
<
script
>
export
default
{
props
:
{
data
:
{
type
:
Array
,
required
:
true
,
},
columns
:
{
type
:
Array
,
required
:
true
,
},
rowHeight
:
{
type
:
Number
,
required
:
true
,
},
visibleRowCount
:
{
type
:
Number
,
required
:
true
,
},
},
data
()
{
return
{
scrollTop
:
0
,
lastRenderedIndex
:
0
,
};
},
computed
:
{
visibleRows
()
{
const
startIndex
=
Math
.
floor
(
this
.
scrollTop
/
this
.
rowHeight
);
const
endIndex
=
startIndex
+
this
.
visibleRowCount
;
this
.
lastRenderedIndex
=
endIndex
;
return
this
.
data
.
slice
(
startIndex
,
endIndex
);
},
tableHeight
()
{
return
this
.
rowHeight
*
this
.
data
.
length
;
},
wrapperHeight
()
{
return
this
.
rowHeight
*
this
.
visibleRowCount
;
},
},
methods
:
{
handleScroll
(
event
)
{
this
.
scrollTop
=
event
.
target
.
scrollTop
;
},
},
};
</
script
>
<
style
>
.vue-table
{
height
:
100%
;
overflow-y
:
scroll
;
}
table
{
width
:
100%
;
border-collapse
:
collapse
;
table-layout
:
fixed
;
}
th
,
td
{
padding
:
8px
;
text-align
:
left
;
border-bottom
:
1px
solid
#ddd
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
</
style
>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录