|
@@ -1,184 +1,293 @@
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
-import { ref } from "vue";
|
|
|
|
|
|
|
+import { ref,onMounted} from "vue";
|
|
|
import { useRouter } from 'vue-router';
|
|
import { useRouter } from 'vue-router';
|
|
|
|
|
+import { useDocxStore } from '../pinia/docx'
|
|
|
|
|
|
|
|
|
|
+import { ElMessage } from 'element-plus'
|
|
|
|
|
+import * as echarts from 'echarts';
|
|
|
|
|
+const useStore = useDocxStore()
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+onMounted(()=>{
|
|
|
|
|
+ Showecharts()
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+type docxList = {
|
|
|
|
|
+ docxName: String,
|
|
|
|
|
+ docxMessageList?: Array<object>
|
|
|
|
|
+}
|
|
|
|
|
+const docxList = ref<docxList[]>([])
|
|
|
|
|
+docxList.value = useStore.DocxList
|
|
|
|
|
+const itemIndex = ref(0)
|
|
|
const textarea = ref('')
|
|
const textarea = ref('')
|
|
|
|
|
+const titles = ref('')
|
|
|
|
|
+ type ActionList = {
|
|
|
|
|
+ docxName: String;
|
|
|
|
|
+ description: string;
|
|
|
|
|
+ };
|
|
|
|
|
|
|
|
-type TestCase = {
|
|
|
|
|
- id: number;
|
|
|
|
|
- title: string;
|
|
|
|
|
- description: string;
|
|
|
|
|
-};
|
|
|
|
|
-const testCase = ref<TestCase[]>([]);
|
|
|
|
|
-testCase.value = [
|
|
|
|
|
- {
|
|
|
|
|
- id: 1,
|
|
|
|
|
- title: "这是标题这是标题这是标题这是标题这是标题这是标题",
|
|
|
|
|
- description:
|
|
|
|
|
- "娇地方废物放假哦对司机发票的撒娇阿佛i额欸娇地方废物放假哦对司机发票的撒娇阿佛i额欸娇地方废物放假哦对司机发票的撒娇阿佛i额欸娇地方废物放假哦对司机发票的撒娇阿佛i额欸",
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- id: 1,
|
|
|
|
|
- title: "这是标题",
|
|
|
|
|
- description: "这是描述",
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- id: 1,
|
|
|
|
|
- title: "这是标题",
|
|
|
|
|
- description: "这是描述",
|
|
|
|
|
- },{
|
|
|
|
|
- id: 1,
|
|
|
|
|
- title: "这是标题",
|
|
|
|
|
- description: "这是描述",
|
|
|
|
|
- },{
|
|
|
|
|
- id: 1,
|
|
|
|
|
- title: "这是标题",
|
|
|
|
|
- description: "这是描述",
|
|
|
|
|
- },{
|
|
|
|
|
- id: 1,
|
|
|
|
|
- title: "这是标题",
|
|
|
|
|
- description: "这是描述",
|
|
|
|
|
- },{
|
|
|
|
|
- id: 1,
|
|
|
|
|
- title: "这是标题",
|
|
|
|
|
- description: "这是描述",
|
|
|
|
|
- },{
|
|
|
|
|
- id: 1,
|
|
|
|
|
- title: "这是标题",
|
|
|
|
|
- description: "这是描述",
|
|
|
|
|
- },{
|
|
|
|
|
- id: 1,
|
|
|
|
|
- title: "这是标题",
|
|
|
|
|
- description: "这是描述",
|
|
|
|
|
- },
|
|
|
|
|
|
|
+//历史操作记录,还要调整,最好能做到单个文件展示,我再调调
|
|
|
|
|
+var actionList = ref<ActionList[]>([]);
|
|
|
|
|
+actionList.value = [
|
|
|
|
|
+ {
|
|
|
|
|
+ docxName: "文件名",
|
|
|
|
|
+ description: "操作记录",
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
|
|
+const testCase = ref<any>([]);
|
|
|
|
|
+// 默认展示第一个列表
|
|
|
|
|
+testCase.value = useStore.DocxList[itemIndex.value].docxMessageList
|
|
|
|
|
+
|
|
|
const handleImproveButton = (p: { row: any }) => {
|
|
const handleImproveButton = (p: { row: any }) => {
|
|
|
console.log(p.row);
|
|
console.log(p.row);
|
|
|
|
|
+ actionList.value.push({
|
|
|
|
|
+ docxName: "文件名",
|
|
|
|
|
+ description: "细化用例",
|
|
|
|
|
+
|
|
|
|
|
+ })
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
|
const gotoLastPage = () => {
|
|
const gotoLastPage = () => {
|
|
|
- router.push('/upload');
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ router.push('/upload');
|
|
|
|
|
+};
|
|
|
const gotoNextPage = () => {
|
|
const gotoNextPage = () => {
|
|
|
- router.push('/tcFinalList');
|
|
|
|
|
|
|
+ router.push('/tcFinalList');
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+const docxMessage = (index: number) => {
|
|
|
|
|
+ itemIndex.value = index
|
|
|
|
|
+ testCase.value = useStore.DocxList[itemIndex.value].docxMessageList
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// 删除列表
|
|
|
|
|
+const deteleList = (scope: any) => {
|
|
|
|
|
+ const obj: any = {
|
|
|
|
|
+ id: scope.row.id,
|
|
|
|
|
+ index: itemIndex.value
|
|
|
|
|
+ }
|
|
|
|
|
+ useStore.DeteleDocxList(obj)
|
|
|
|
|
+ actionList.value.push({
|
|
|
|
|
+ docxName: "文件名",
|
|
|
|
|
+ description: "删除用例",
|
|
|
|
|
+
|
|
|
|
|
+ })
|
|
|
|
|
+ testCase.value = useStore.DocxList[itemIndex.value].docxMessageList
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const addDocxList = () => {
|
|
|
|
|
+ if (textarea.value !== '') {
|
|
|
|
|
+ let ids: any = useStore.DocxList[itemIndex.value].docxMessageList?.length
|
|
|
|
|
+ useStore.DocxList[itemIndex.value].docxMessageList?.unshift({
|
|
|
|
|
+ id: ids + 1,
|
|
|
|
|
+ description: textarea.value
|
|
|
|
|
+ })
|
|
|
|
|
+ actionList.value.push({
|
|
|
|
|
+ docxName: "文件名",
|
|
|
|
|
+ description: "新增用例",
|
|
|
|
|
+
|
|
|
|
|
+ })
|
|
|
|
|
+ ElMessage({
|
|
|
|
|
+ message: '添加成功',
|
|
|
|
|
+ type: 'success'
|
|
|
|
|
+ })
|
|
|
|
|
+ textarea.value = ''
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ElMessage({
|
|
|
|
|
+ message: '用例描述不能为空',
|
|
|
|
|
+ type: 'error'
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// echarts-bxo
|
|
|
|
|
+function Showecharts() {
|
|
|
|
|
+ var chartDom = document.getElementById('pt');
|
|
|
|
|
+ var myChart = echarts.init(chartDom);
|
|
|
|
|
+ var option;
|
|
|
|
|
+
|
|
|
|
|
+ option = {
|
|
|
|
|
+ tooltip: {
|
|
|
|
|
+ trigger: 'item'
|
|
|
|
|
+ },
|
|
|
|
|
+ legend: {
|
|
|
|
|
+ top: '5%',
|
|
|
|
|
+ left: 'center',
|
|
|
|
|
+ textStyle:{
|
|
|
|
|
+ fontSize:8
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ series: [
|
|
|
|
|
+ {
|
|
|
|
|
+ name: 'Access From',
|
|
|
|
|
+ type: 'pie',
|
|
|
|
|
+ radius: ['40%', '70%'],
|
|
|
|
|
+ avoidLabelOverlap: false,
|
|
|
|
|
+ padAngle: 5,
|
|
|
|
|
+ itemStyle: {
|
|
|
|
|
+ borderRadius: 10
|
|
|
|
|
+ },
|
|
|
|
|
+ label: {
|
|
|
|
|
+ show: false,
|
|
|
|
|
+ position: 'center',
|
|
|
|
|
+ fontSize:12
|
|
|
|
|
+ },
|
|
|
|
|
+ emphasis: {
|
|
|
|
|
+ label: {
|
|
|
|
|
+ show: true,
|
|
|
|
|
+ fontSize: 40,
|
|
|
|
|
+ fontWeight:700
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ labelLine: {
|
|
|
|
|
+ show: false
|
|
|
|
|
+ },
|
|
|
|
|
+ data: [
|
|
|
|
|
+ { value:useStore.DocxList.length, name: '.docx文件'},
|
|
|
|
|
+ {value:5,name:'.excel文件'},
|
|
|
|
|
+ {value:6,name:'.ppd文件'}
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
};
|
|
};
|
|
|
|
|
+
|
|
|
|
|
+ option && myChart.setOption(option);
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
|
<template>
|
|
|
<el-container>
|
|
<el-container>
|
|
|
- <el-main>
|
|
|
|
|
- <div class="root">
|
|
|
|
|
- <el-card class="card">
|
|
|
|
|
- <el-scrollbar class="scrollbar">
|
|
|
|
|
- <el-row class="titleTagRow">
|
|
|
|
|
- <el-tag
|
|
|
|
|
- class="titleTag"
|
|
|
|
|
- type="primary"
|
|
|
|
|
- effect="light"
|
|
|
|
|
- size="large"
|
|
|
|
|
- round
|
|
|
|
|
- >当前用例列表</el-tag
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-aside width="200px" style="overflow: hidden; margin-right:20px;">
|
|
|
|
|
+ <el-card style="width:100%; border:0;" body-style="padding:0; margin:0;">
|
|
|
|
|
+ <template #header>
|
|
|
|
|
+ <div class="card-header">
|
|
|
|
|
+ <span>文件名</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="card-item" v-for="(item, index) in docxList" :key="index" @click="docxMessage(index)"
|
|
|
|
|
+ :class="{ active: index == itemIndex }">
|
|
|
|
|
+ {{ item.docxName }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ </el-card>
|
|
|
|
|
+ </el-aside>
|
|
|
|
|
+ <el-container>
|
|
|
|
|
+ <el-main style="display:flex; overflow: hidden; margin:0; padding:0;">
|
|
|
|
|
+ <div class="root">
|
|
|
|
|
+ <el-card class="card">
|
|
|
|
|
+ <el-scrollbar class="scrollbar">
|
|
|
|
|
+ <el-row class="titleTagRow">
|
|
|
|
|
+ <el-tag class="titleTag" type="primary" effect="light" size="large" round>当前用例列表</el-tag>
|
|
|
|
|
+ </el-row>
|
|
|
|
|
+ <el-col class="container">
|
|
|
|
|
+ <el-table :data="testCase" style="width: 100%" border>
|
|
|
|
|
+ <el-table-column label="编号" type="index" width="60" />
|
|
|
|
|
+ <el-table-column label="用例标题" prop="title" min-width="200" />
|
|
|
|
|
+ <el-table-column show-overflow-tooltip label="用例描述" prop="description" min-width="150" />
|
|
|
|
|
+ <el-table-column width="60">
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ <el-button type="primary" link size="small" @click="handleImproveButton(scope)">细化</el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column width="60">
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ <el-button type="primary" link size="small" @click="deteleList(scope)">删除</el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ </el-scrollbar>
|
|
|
|
|
+ <div class="Pop-upBox">
|
|
|
|
|
+
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <el-row class="input-row">
|
|
|
|
|
+ <div style="min-width: 400px; width: 100%;">
|
|
|
|
|
+ <el-input v-model="textarea" style="min-width: 400px; width: 100%;" :rows="4" type="textarea"
|
|
|
|
|
+ placeholder="请输入要补充的待测功能" />
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <el-button type="primary" class="add-button" style="margin-top:2vw;"
|
|
|
|
|
+ @click="addDocxList">增加</el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
- <el-col class="container">
|
|
|
|
|
- <el-table :data="testCase" style="width: 100%" border>
|
|
|
|
|
- <el-table-column label="编号" prop="id" width="60" />
|
|
|
|
|
- <el-table-column
|
|
|
|
|
- label="用例标题"
|
|
|
|
|
- prop="title"
|
|
|
|
|
- min-width="200"
|
|
|
|
|
- />
|
|
|
|
|
- <el-table-column
|
|
|
|
|
- show-overflow-tooltip
|
|
|
|
|
- label="用例描述"
|
|
|
|
|
- prop="description"
|
|
|
|
|
- min-width="150"
|
|
|
|
|
- />
|
|
|
|
|
- <el-table-column width="60">
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- <el-button
|
|
|
|
|
- type="primary"
|
|
|
|
|
- link
|
|
|
|
|
- size="small"
|
|
|
|
|
- @click="handleImproveButton(scope)"
|
|
|
|
|
- >细化</el-button
|
|
|
|
|
- >
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- <el-table-column width="60">
|
|
|
|
|
- <el-button type="primary" link size="small" @click=""
|
|
|
|
|
- >删除</el-button
|
|
|
|
|
- ></el-table-column
|
|
|
|
|
- >
|
|
|
|
|
- </el-table>
|
|
|
|
|
- </el-col>
|
|
|
|
|
- </el-scrollbar>
|
|
|
|
|
- <el-row class = "input-row">
|
|
|
|
|
- <div style="min-width: 400px; width: 100%;">
|
|
|
|
|
- <el-input
|
|
|
|
|
- v-model="textarea"
|
|
|
|
|
- style="min-width: 400px; width: 100%;"
|
|
|
|
|
- :rows="4"
|
|
|
|
|
- type="textarea"
|
|
|
|
|
- placeholder="请输入要补充的待测功能"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ </el-card>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="timeline">
|
|
|
|
|
+ <div class="header-Box">
|
|
|
|
|
+ <el-timeline>
|
|
|
|
|
+ <el-timeline-item v-for="(activity, index) in actionList" :key="index" :timestamp="activity.time"
|
|
|
|
|
+ size="large">
|
|
|
|
|
+ {{ activity.description }}
|
|
|
|
|
+ </el-timeline-item>
|
|
|
|
|
+ </el-timeline>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="charts-box">
|
|
|
|
|
+ <div id="pt" style="width:100%; height:100%;"></div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div>
|
|
|
|
|
- <el-button type="primary" class="add-button" @click=""
|
|
|
|
|
- >增加</el-button
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ </el-main>
|
|
|
|
|
+ <el-footer>
|
|
|
|
|
+ <div class="button-container">
|
|
|
|
|
+ <el-button type="primary" class="custom-button" @click="gotoLastPage">上一步</el-button>
|
|
|
|
|
+ <el-button type="primary" class="custom-button" @click="gotoNextPage">下一步</el-button>
|
|
|
</div>
|
|
</div>
|
|
|
- </el-row>
|
|
|
|
|
- </el-card>
|
|
|
|
|
- </div>
|
|
|
|
|
- </el-main>
|
|
|
|
|
- <el-footer>
|
|
|
|
|
- <div class="button-container">
|
|
|
|
|
- <el-button type="primary" class="custom-button" @click="gotoLastPage">上一步</el-button>
|
|
|
|
|
- <el-button type="primary" class="custom-button" @click="gotoNextPage">下一步</el-button>
|
|
|
|
|
- </div>
|
|
|
|
|
- </el-footer>
|
|
|
|
|
|
|
+ </el-footer>
|
|
|
|
|
+ </el-container>
|
|
|
</el-container>
|
|
</el-container>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<style scoped>
|
|
<style scoped>
|
|
|
.button-container {
|
|
.button-container {
|
|
|
- display: flex;
|
|
|
|
|
- justify-content: flex-end; /* 让按钮之间的空间均匀分布 */
|
|
|
|
|
|
|
+ margin-top: 2vw;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ left: 50%;
|
|
|
|
|
+ transform: translate(-50%);
|
|
|
|
|
+ /* 让按钮之间的空间均匀分布 */
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.custom-button {
|
|
.custom-button {
|
|
|
- width: 100px; /* 设置按钮的宽度为相同的固定值 */
|
|
|
|
|
|
|
+ width: 100px;
|
|
|
|
|
+ /* 设置按钮的宽度为相同的固定值 */
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.input-row{
|
|
|
|
|
|
|
+.input-row {
|
|
|
padding: 1em 3em;
|
|
padding: 1em 3em;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-wrap: nowrap;
|
|
flex-wrap: nowrap;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
}
|
|
}
|
|
|
-.add-button{
|
|
|
|
|
|
|
+
|
|
|
|
|
+.add-button {
|
|
|
margin: auto 2em;
|
|
margin: auto 2em;
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.titleTag {
|
|
.titleTag {
|
|
|
height: 2em;
|
|
height: 2em;
|
|
|
width: 8em;
|
|
width: 8em;
|
|
|
margin-left: 3em;
|
|
margin-left: 3em;
|
|
|
font-size: large;
|
|
font-size: large;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.container {
|
|
.container {
|
|
|
width: 60vw;
|
|
width: 60vw;
|
|
|
padding: 1em 3em;
|
|
padding: 1em 3em;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.rowContainer {
|
|
.rowContainer {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
margin: 1em 0;
|
|
margin: 1em 0;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.root {
|
|
.root {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
@@ -189,11 +298,13 @@ const gotoNextPage = () => {
|
|
|
flex-direction: row-reverse;
|
|
flex-direction: row-reverse;
|
|
|
align-items: flex-start;
|
|
align-items: flex-start;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.customerMessage {
|
|
.customerMessage {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: row;
|
|
flex-direction: row;
|
|
|
align-items: flex-start;
|
|
align-items: flex-start;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.textArea {
|
|
.textArea {
|
|
|
display: inline-block;
|
|
display: inline-block;
|
|
|
width: 300px;
|
|
width: 300px;
|
|
@@ -202,9 +313,70 @@ const gotoNextPage = () => {
|
|
|
.card {
|
|
.card {
|
|
|
margin: auto;
|
|
margin: auto;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.scrollbar {
|
|
.scrollbar {
|
|
|
height: 400px;
|
|
height: 400px;
|
|
|
width: fit-content;
|
|
width: fit-content;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+.card-item {
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ padding: 0;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 10vh;
|
|
|
|
|
+ line-height: 10vh;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ background-color: #fcfcfc;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+.Pop-upBox {
|
|
|
|
|
+ z-index: 999;
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.active {
|
|
|
|
|
+ background-color: #409eff;
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.timeline {
|
|
|
|
|
+ width: 15vw;
|
|
|
|
|
+ height: 100vh;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.header-Box {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 50vh;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ overflow-y: auto;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.charts-box {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 50vh;
|
|
|
|
|
+ background-color:#fff;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 启用滚动条样式化,需要在浏览器设置中启用 */
|
|
|
|
|
+::-webkit-scrollbar {
|
|
|
|
|
+ width: 10px; /* 滚动条的宽度 */
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 滚动条轨道 */
|
|
|
|
|
+::-webkit-scrollbar-track {
|
|
|
|
|
+ background: #f0f0f0; /* 滚动条轨道背景颜色 */
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 滚动条滑块 */
|
|
|
|
|
+::-webkit-scrollbar-thumb {
|
|
|
|
|
+ background: #696969; /* 滚动条滑块颜色 */
|
|
|
|
|
+ border-radius: 10px; /* 滑块边角弧度 */
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 滑块悬停状态 */
|
|
|
|
|
+::-webkit-scrollbar-thumb:hover {
|
|
|
|
|
+ background: #555; /* 鼠标悬停在滑块上时的颜色 */
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|
|
|
-
|
|
|