IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 自定义表格,自动滚动(适用postcss-px-to-viewport 插件) -> 正文阅读

[JavaScript知识库]自定义表格,自动滚动(适用postcss-px-to-viewport 插件)

<template>

? <div

? ? class="tables"

? ? :style="{

? ? ? marginTop: marginTop,

? ? ? marginLeft: marginLeft,

? ? ? marginBottom: marginBottom,

? ? }"

? >

? ? <div class="div-select">

? ? ? <span

? ? ? ? v-for="(item, index) in tabList"

? ? ? ? :key="index"

? ? ? ? :class="[activeFlag == index ? 'active' : '']"

? ? ? ? @click="tabHandle(index)"

? ? ? ? >{{ item }}</span

? ? ? >

? ? </div>

? ? <div class="div-table">

? ? ? <div class="table-header">

? ? ? ? <div v-for="(item, index) in headerList" :key="index">

? ? ? ? ? {{ item.label }}

? ? ? ? </div>

? ? ? </div>

? ? ? <div class="table-body" v-if="tableList && tableList.length">

? ? ? ? <div

? ? ? ? ? ref="content"

? ? ? ? ? class="table-body-content"

? ? ? ? ? :style="{ transform: 'translateY(' + leftWidth + 'px)' }"

? ? ? ? >

? ? ? ? ? <div

? ? ? ? ? ? :class="['table-tr', index % 2 == 0 ? '' : 'back']"

? ? ? ? ? ? v-for="(item, index) in tableList"

? ? ? ? ? ? :key="index"

? ? ? ? ? >

? ? ? ? ? ? <div v-for="ele in headerList" :key="ele.props">

? ? ? ? ? ? ? <div v-if="ele.props == 'name'">

? ? ? ? ? ? ? ? <span

? ? ? ? ? ? ? ? ? v-if="item.category == 1"

? ? ? ? ? ? ? ? ? class="iconfont"

? ? ? ? ? ? ? ? ? style="color: #e74e4e; font-size: 14px"

? ? ? ? ? ? ? ? ? >&#xe66f; {{ item.categoryDesc }}</span

? ? ? ? ? ? ? ? >

? ? ? ? ? ? ? ? <span

? ? ? ? ? ? ? ? ? v-if="item.category == 2"

? ? ? ? ? ? ? ? ? class="iconfont"

? ? ? ? ? ? ? ? ? style="color: #f8b62d; font-size: 14px"

? ? ? ? ? ? ? ? ? >&#xe668; {{ item.categoryDesc }}</span

? ? ? ? ? ? ? ? >

? ? ? ? ? ? ? ? <span

? ? ? ? ? ? ? ? ? v-if="item.category == 5"

? ? ? ? ? ? ? ? ? class="iconfont"

? ? ? ? ? ? ? ? ? style="color: #8d6dff; font-size: 14px"

? ? ? ? ? ? ? ? ? >&#xe670; {{ item.categoryDesc }}</span

? ? ? ? ? ? ? ? >

? ? ? ? ? ? ? ? <span>{{ item[item.props] }}</span>

? ? ? ? ? ? ? </div>

? ? ? ? ? ? ? <div v-else :title="item[ele.props]">{{ item[ele.props] }}</div>

? ? ? ? ? ? </div>

? ? ? ? ? </div>

? ? ? ? ? <div ref="bodyBottom" class="table-tr-bottom"></div>

? ? ? ? </div>

? ? ? </div>

? ? ? <div class="body-none" v-else>

? ? ? ? <img src="../assets/img/data-none.png" alt="" />

? ? ? </div>

? ? ? <div ref="tableBottom" class="table-body-bottom"></div>

? ? </div>

? </div>

</template>

<script>

export default {

? data() {

? ? return {

? ? ? leftWidth: 0,

? ? ? activeFlag: 0,

? ? ? tableInterval: null,

? ? };

? },

? /*

? ? 模仿el-table封装

? ? props中的name是写死的

? ? 图标用到了iconfont

? ? css预编译stylus

? */

? props: {

? ? tabList: {

? ? ? type: Array,

? ? ? default: () => [],

? ? },

? ? headerList: {

? ? ? type: Array,

? ? ? default: () => [],

? ? },

? ? tableList: {

? ? ? type: Array,

? ? ? default: () => [],

? ? },

? ? marginTop: {

? ? ? type: String,

? ? ? default: "0px",

? ? },

? ? marginLeft: {

? ? ? type: String,

? ? ? default: "6px",

? ? },

? ? marginBottom: {

? ? ? type: String,

? ? ? default: "0px",

? ? },

? },

? methods: {

? ? tabHandle(index) {

? ? ? this.activeFlag = index;

? ? ? this.$emit("tabHandle", index);

? ? },

? ? outHandle() {

? ? ? if (this.tableInterval) {

? ? ? ? clearInterval(this.tableInterval);

? ? ? }

? ? ? this.tableInterval = setInterval(() => {

? ? ? ? let tableTop = this.$refs.tableBottom.getBoundingClientRect().top;

? ? ? ? let bodyTop = this.$refs.bodyBottom.getBoundingClientRect().top;

? ? ? ? this.leftWidth -= 1;

? ? ? ? if (bodyTop <= tableTop) {

? ? ? ? ? this.leftWidth = 0;

? ? ? ? }

? ? ? }, 100);

? ? },

? },

? mounted() {},

? watch: {

? ? tableList(newVal) {

? ? ? this.leftWidth = 0;

? ? ? if (newVal.length > 4) {

? ? ? ? this.outHandle();

? ? ? } else {

? ? ? ? if (this.tableInterval) {

? ? ? ? ? clearInterval(this.tableInterval);

? ? ? ? }

? ? ? }

? ? },

? },

? beforeDestroy() {

? ? clearInterval(this.tableInterval);

? },

};

</script>

<style lang="stylus" scoped>

.div-table {

? height: 200px;

? overflow: hidden;

? .table-header {

? ? display: flex;

? ? div {

? ? ? flex: 1;

? ? ? height: 32px;

? ? ? line-height: 32px;

? ? ? text-align: center;

? ? ? font-size: 14px;

? ? ? color: #29abe2;

? ? ? background: #012e62;

? ? }

? }

? .table-body {

? ? height: 168px;

? ? overflow: hidden;

? ? .table-body-content {

? ? ? .table-tr {

? ? ? ? display: flex;

? ? ? ? overflow: hidden;

? ? ? ? border-bottom: 1px solid #283d6f;

? ? ? ? div {

? ? ? ? ? flex: 1;

? ? ? ? ? padding: 0 10px;

? ? ? ? ? height: 40px;

? ? ? ? ? line-height: 40px;

? ? ? ? ? text-align: center;

? ? ? ? ? font-size: 12px;

? ? ? ? ? color: #99a5d7;

? ? ? ? ? overflow: hidden; /* 隐藏 */

? ? ? ? ? white-space: nowrap; /* 不换行 */

? ? ? ? ? text-overflow: ellipsis; /* 超出部分省略号 */

? ? ? ? }

? ? ? }

? ? ? .back {

? ? ? ? background: rgba(18, 38, 82, 0.7);

? ? ? }

? ? ? .table-tr-bottom {

? ? ? ? height: 1px;

? ? ? }

? ? }

? }

? .body-none {

? ? text-align: center;

? ? img {

? ? ? width: 100px;

? ? ? height: 100px;

? ? ? padding-top: 50px;

? ? }

? }

? .table-body-bottom {

? ? height: 1px;

? }

}

.div-select {

? margin-bottom: 16px;

? span {

? ? display: inline-block;

? ? border: 1px solid #8493c3;

? ? width: 70px;

? ? height: 20px;

? ? line-height: 20px;

? ? text-align: center;

? ? color: #8493c3;

? ? margin-right: 10px;

? ? cursor: pointer;

? }

? .active {

? ? background: #02d4ff;

? ? color: #fff;

? ? border: 0px;

? ? height: 22px;

? }

}

</style>

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 12:02:03  更:2022-04-29 12:05:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:51:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码