|
@@ -1,51 +1,40 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div
|
|
<div
|
|
|
- class="bg-gradient-to-br from-slate-950 via-blue-950 to-slate-900 text-cyan-100 p-4 relative h-screen overflow-hidden flex flex-col"
|
|
|
|
|
|
|
+ class="bg-[#08092d] text-cyan-100 p-4 pt-0 relative h-screen overflow-hidden flex flex-col font-mono"
|
|
|
:class="{ 'fullscreen-layout': isFullscreen }"
|
|
:class="{ 'fullscreen-layout': isFullscreen }"
|
|
|
>
|
|
>
|
|
|
- <!-- Animated background grid -->
|
|
|
|
|
- <div class="absolute inset-0 opacity-20">
|
|
|
|
|
- <div class="absolute inset-0 grid-pattern"></div>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <!-- Scanning line effect -->
|
|
|
|
|
- <div class="absolute inset-0 pointer-events-none">
|
|
|
|
|
- <div class="scan-line"></div>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
<!-- Header -->
|
|
<!-- Header -->
|
|
|
- <div class="relative z-10 flex-shrink-0">
|
|
|
|
|
- <div class="flex items-center justify-center border-b-2 border-cyan-500/30 pb-2 gap-8">
|
|
|
|
|
- <h1 class="text-2xl font-bold text-cyan-300 flex-6 tracking-wider">
|
|
|
|
|
|
|
+ <div class="relative z-10 mb-2 flex-shrink-0">
|
|
|
|
|
+ <div class="header-bg relative flex items-center justify-center py-3">
|
|
|
|
|
+ <div class="absolute left-10 top-1/2 -translate-y-1/2 flex items-center gap-4 text-sm pt-2">
|
|
|
|
|
+ <div class="return-btn" @click="goBack">
|
|
|
|
|
+ <Icon icon="ep:back" /> <span class="pl-2 font-bold">返回</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <!-- 标题居中 -->
|
|
|
|
|
+ <h1 class="text-3xl font-bold text-[#ffac31] tracking-wider text-center">
|
|
|
{{ dataInfo.groupName }}
|
|
{{ dataInfo.groupName }}
|
|
|
</h1>
|
|
</h1>
|
|
|
|
|
|
|
|
- <div class="flex flex-4 items-center gap-8 text-sm">
|
|
|
|
|
|
|
+ <!-- 操作按钮绝对定位到右侧 -->
|
|
|
|
|
+ <div class="absolute right-4 top-1/2 -translate-y-1/2 flex items-center gap-4 text-sm pt-1">
|
|
|
<div
|
|
<div
|
|
|
- style="border: 0.5px solid #085b77"
|
|
|
|
|
- class="px-4 py-2 bg-cyan-500/10 border border-cyan-500/30 skew-x-[-12deg] hover:bg-cyan-500/20 transition-all cursor-pointer"
|
|
|
|
|
|
|
+ class="px-4 py-1.5 bg-cyan-500/10 border border-cyan-500/30 skew-x-[-12deg] hover:bg-cyan-500/20 transition-all cursor-pointer"
|
|
|
>
|
|
>
|
|
|
<span class="pr-4">部门名称</span>
|
|
<span class="pr-4">部门名称</span>
|
|
|
<span class="inline-block skew-x-[12deg]">{{ dataInfo.deptName }}</span>
|
|
<span class="inline-block skew-x-[12deg]">{{ dataInfo.deptName }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div
|
|
<div
|
|
|
style="border: 0.5px solid #085b77"
|
|
style="border: 0.5px solid #085b77"
|
|
|
- class="px-4 py-2 bg-cyan-500/10 border border-cyan-500/30 skew-x-[-12deg] hover:bg-cyan-500/20 transition-all cursor-pointer"
|
|
|
|
|
|
|
+ class="px-4 py-1.5 bg-cyan-500/10 border border-cyan-500/30 skew-x-[-12deg] hover:bg-cyan-500/20 transition-all cursor-pointer"
|
|
|
>
|
|
>
|
|
|
<span class="pr-4">井号</span>
|
|
<span class="pr-4">井号</span>
|
|
|
<span class="inline-block skew-x-[12deg]">{{ dataInfo.wellName }}</span>
|
|
<span class="inline-block skew-x-[12deg]">{{ dataInfo.wellName }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
- <div
|
|
|
|
|
- style="border: 0.5px solid #085b77"
|
|
|
|
|
- class="px-4 py-2 bg-cyan-500/10 border border-cyan-500/30 skew-x-[-12deg] hover:bg-cyan-500/20 transition-all cursor-pointer"
|
|
|
|
|
- >
|
|
|
|
|
- <span class="pr-4">增加机编号</span>
|
|
|
|
|
- <span class="inline-block skew-x-[12deg]">{{ dataInfo.deviceCode }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
<div
|
|
<div
|
|
|
@click="toggleFullscreen"
|
|
@click="toggleFullscreen"
|
|
|
style="border: 0.5px solid #085b77"
|
|
style="border: 0.5px solid #085b77"
|
|
|
- class="px-4 py-2 bg-cyan-500/10 border border-cyan-500/30 skew-x-[-12deg] hover:bg-cyan-500/20 transition-all cursor-pointer"
|
|
|
|
|
|
|
+ class="px-4 py-1.5 bg-cyan-500/10 border border-cyan-500/30 skew-x-[-12deg] hover:bg-cyan-500/20 transition-all cursor-pointer"
|
|
|
>
|
|
>
|
|
|
<span class="inline-block skew-x-[12deg]">{{
|
|
<span class="inline-block skew-x-[12deg]">{{
|
|
|
isFullscreen ? '退出全屏' : '全屏'
|
|
isFullscreen ? '退出全屏' : '全屏'
|
|
@@ -58,15 +47,17 @@
|
|
|
<div class="relative z-10 grid grid-cols-12 gap-3 flex-1 min-h-0 p-2">
|
|
<div class="relative z-10 grid grid-cols-12 gap-3 flex-1 min-h-0 p-2">
|
|
|
<!-- Left panels - 固定高度 -->
|
|
<!-- Left panels - 固定高度 -->
|
|
|
<div class="col-span-3 flex flex-col min-h-0">
|
|
<div class="col-span-3 flex flex-col min-h-0">
|
|
|
- <div class="panel flex-1 flex flex-col min-h-0">
|
|
|
|
|
|
|
+ <div class="flex-1 flex flex-col min-h-0">
|
|
|
<!-- 增压机参数 -->
|
|
<!-- 增压机参数 -->
|
|
|
<div class="flex-[3] border-b border-cyan-500/30 pb-1 mb-1 flex flex-col min-h-0">
|
|
<div class="flex-[3] border-b border-cyan-500/30 pb-1 mb-1 flex flex-col min-h-0">
|
|
|
- <div class="flex justify-between items-center panel-title mb-1 flex-shrink-0">
|
|
|
|
|
- <h4>增压机参数</h4>
|
|
|
|
|
- <dv-decoration3 style="width: 100px; height: 24px" />
|
|
|
|
|
|
|
+ <div class="flex justify-between items-center panel-title flex-shrink-0 pl-[5%]">
|
|
|
|
|
+ <h4 class="pt-1">增压机参数</h4>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <div class="space-y-1 text-xs overflow-y-auto overflow-x-hidden flex-1 min-h-0">
|
|
|
|
|
|
|
+ <div
|
|
|
|
|
+ style="overflow-y: auto"
|
|
|
|
|
+ class="space-y-1 panel text-xs overflow-y-auto overflow-x-hidden flex-1 min-h-0 px-3"
|
|
|
|
|
+ >
|
|
|
<DataRow
|
|
<DataRow
|
|
|
v-for="item in psaData"
|
|
v-for="item in psaData"
|
|
|
:key="item.modelName"
|
|
:key="item.modelName"
|
|
@@ -78,11 +69,10 @@
|
|
|
|
|
|
|
|
<!-- 累计运行时间 -->
|
|
<!-- 累计运行时间 -->
|
|
|
<div class="flex-1 flex flex-col min-h-0">
|
|
<div class="flex-1 flex flex-col min-h-0">
|
|
|
- <div class="flex justify-between items-center panel-title mb-1 flex-shrink-0">
|
|
|
|
|
- <h4>累计运行时间</h4>
|
|
|
|
|
- <dv-decoration3 style="width: 100px; height: 24px" />
|
|
|
|
|
|
|
+ <div class="flex justify-between items-center panel-title flex-shrink-0 pl-[5%]">
|
|
|
|
|
+ <h4 class="pt-1">累计运行时间</h4>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="space-y-1 overflow-y-auto overflow-x-hidden flex-1 min-h-0">
|
|
|
|
|
|
|
+ <div class="space-y-1 panel overflow-y-auto overflow-x-hidden flex-1 min-h-0">
|
|
|
<DataRow
|
|
<DataRow
|
|
|
v-for="item in airTreatmentData"
|
|
v-for="item in airTreatmentData"
|
|
|
:key="item.modelName"
|
|
:key="item.modelName"
|
|
@@ -96,32 +86,30 @@
|
|
|
|
|
|
|
|
<div class="col-span-6 flex flex-col gap-2 min-h-0">
|
|
<div class="col-span-6 flex flex-col gap-2 min-h-0">
|
|
|
<!-- 3D模型面板 -->
|
|
<!-- 3D模型面板 -->
|
|
|
- <div class="panel flex-[6] relative overflow-hidden min-h-0">
|
|
|
|
|
|
|
+ <div
|
|
|
|
|
+ class="panel relative overflow-hidden flex-shrink-0"
|
|
|
|
|
+ style="height: 30vh; border-top: 1px solid #30459c"
|
|
|
|
|
+ >
|
|
|
<div class="relative h-full flex items-center justify-center">
|
|
<div class="relative h-full flex items-center justify-center">
|
|
|
<ModelViewer />
|
|
<ModelViewer />
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<!-- 状态参数面板 -->
|
|
<!-- 状态参数面板 -->
|
|
|
- <div class="panel flex-[4] flex flex-col min-h-0">
|
|
|
|
|
- <div class="mb-1 flex-shrink-0">
|
|
|
|
|
- <dv-decoration7>
|
|
|
|
|
- <h3 class="text-cyan-300 text-base font-bold px-1"> 状态参数 </h3>
|
|
|
|
|
- </dv-decoration7>
|
|
|
|
|
|
|
+ <div class="flex-[4] flex flex-col min-h-0">
|
|
|
|
|
+ <div class="flex justify-between items-center panel-title flex-shrink-0 pl-[5%]">
|
|
|
|
|
+ <h4 class="text-cyan-300 text-base font-bold px-1 pt-1"> 状态参数 </h4>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="grid grid-cols-5 gap-2 flex-1 min-h-0 overflow-hidden">
|
|
|
|
|
|
|
+ <div class="grid panel grid-cols-5 gap-2 flex-1 min-h-0 overflow-hidden">
|
|
|
<div
|
|
<div
|
|
|
v-for="(group, i) in compressorData"
|
|
v-for="(group, i) in compressorData"
|
|
|
:key="i"
|
|
:key="i"
|
|
|
class="space-y-1 text-center overflow-y-auto"
|
|
class="space-y-1 text-center overflow-y-auto"
|
|
|
>
|
|
>
|
|
|
- <div class="text-xs" v-for="item in group" :key="item.modelName">
|
|
|
|
|
|
|
+ <div class="text-lg pt-3" v-for="item in group" :key="item.modelName">
|
|
|
<div class="text-cyan-200">{{ item.modelName }}</div>
|
|
<div class="text-cyan-200">{{ item.modelName }}</div>
|
|
|
<div class="text-white font-mono flex items-center justify-center">
|
|
<div class="text-white font-mono flex items-center justify-center">
|
|
|
- <span
|
|
|
|
|
- :class="['w-2 h-2 rounded-full inline-block mr-1', getStatusClass(item.value)]"
|
|
|
|
|
- ></span>
|
|
|
|
|
- {{ getStatusDisplayText(item.modelName, item.value) }}
|
|
|
|
|
|
|
+ <img :src="getStatusImage(item.value)" alt="状态图标" class="w-5 h-5 mr-1" />
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -131,14 +119,13 @@
|
|
|
|
|
|
|
|
<!-- Right panel - 氮气参数和井口参数平分高度 -->
|
|
<!-- Right panel - 氮气参数和井口参数平分高度 -->
|
|
|
<div class="col-span-3 flex flex-col gap-2 min-h-0">
|
|
<div class="col-span-3 flex flex-col gap-2 min-h-0">
|
|
|
- <div class="panel flex-1 flex flex-col min-h-0">
|
|
|
|
|
|
|
+ <div class="flex-1 flex flex-col min-h-0">
|
|
|
<div
|
|
<div
|
|
|
- class="flex items-center justify-between mb-2 border-b border-cyan-500/30 pb-1 flex-shrink-0"
|
|
|
|
|
|
|
+ class="flex panel-title items-center justify-between border-b border-cyan-500/30 pb-1 flex-shrink-0 pl-[5%]"
|
|
|
>
|
|
>
|
|
|
- <h3 class="text-cyan-300 text-base font-bold">氮气参数</h3>
|
|
|
|
|
- <dv-decoration8 :reverse="true" style="width: 100px; height: 18px" />
|
|
|
|
|
|
|
+ <h3 class="text-cyan-300 text-base font-bold pt-1">氮气参数</h3>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="space-y-1 text-sm overflow-y-auto overflow-x-hidden flex-1 min-h-0">
|
|
|
|
|
|
|
+ <div class="space-y-1 panel text-sm overflow-y-auto overflow-x-hidden flex-1 min-h-0">
|
|
|
<DataRow
|
|
<DataRow
|
|
|
v-for="item in liquidDrivenData"
|
|
v-for="item in liquidDrivenData"
|
|
|
:key="item.modelName"
|
|
:key="item.modelName"
|
|
@@ -148,14 +135,13 @@
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="panel flex-1 flex flex-col min-h-0">
|
|
|
|
|
|
|
+ <div class="flex-1 flex flex-col min-h-0">
|
|
|
<div
|
|
<div
|
|
|
- class="flex items-center justify-between mb-2 border-b border-cyan-500/30 pb-1 flex-shrink-0"
|
|
|
|
|
|
|
+ class="flex panel-title items-center justify-between border-b border-cyan-500/30 pb-1 flex-shrink-0 pl-[5%]"
|
|
|
>
|
|
>
|
|
|
<h3 class="text-cyan-300 text-base font-bold">井口参数</h3>
|
|
<h3 class="text-cyan-300 text-base font-bold">井口参数</h3>
|
|
|
- <dv-decoration8 :reverse="true" style="width: 100px; height: 18px" />
|
|
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="space-y-1 text-sm overflow-y-auto overflow-x-hidden flex-1 min-h-0">
|
|
|
|
|
|
|
+ <div class="space-y-1 panel text-sm overflow-y-auto overflow-x-hidden flex-1 min-h-0">
|
|
|
<DataRow
|
|
<DataRow
|
|
|
v-for="item in wellheadData"
|
|
v-for="item in wellheadData"
|
|
|
:key="item.modelName"
|
|
:key="item.modelName"
|
|
@@ -176,6 +162,8 @@ import DataRow from './data-row.vue'
|
|
|
import ModelViewer from './ModelViewer2.vue'
|
|
import ModelViewer from './ModelViewer2.vue'
|
|
|
import { IotDeviceApi } from '@/api/pms/device'
|
|
import { IotDeviceApi } from '@/api/pms/device'
|
|
|
import { useRoute } from 'vue-router'
|
|
import { useRoute } from 'vue-router'
|
|
|
|
|
+import greenImg from '@/assets/imgs/green.png'
|
|
|
|
|
+import redImg from '@/assets/imgs/red.png'
|
|
|
|
|
|
|
|
const route = useRoute()
|
|
const route = useRoute()
|
|
|
|
|
|
|
@@ -192,6 +180,9 @@ let wellheadData = ref<any[]>([]) // 井口参数
|
|
|
let compressorData = ref<any[][]>([])
|
|
let compressorData = ref<any[][]>([])
|
|
|
const isFullscreen = ref(false)
|
|
const isFullscreen = ref(false)
|
|
|
|
|
|
|
|
|
|
+const getStatusImage = (statusValue: string | number) => {
|
|
|
|
|
+ return statusValue === '1' || statusValue === 1 || statusValue === 'true' ? greenImg : redImg
|
|
|
|
|
+}
|
|
|
// 从modelName中提取单位
|
|
// 从modelName中提取单位
|
|
|
const getUnitFromModelName = (modelName: string) => {
|
|
const getUnitFromModelName = (modelName: string) => {
|
|
|
if (!modelName) return ''
|
|
if (!modelName) return ''
|
|
@@ -412,52 +403,33 @@ onUnmounted(() => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.grid-pattern {
|
|
|
|
|
- background-image: linear-gradient(rgba(6, 182, 212, 0.3) 1px, transparent 1px),
|
|
|
|
|
- linear-gradient(90deg, rgba(6, 182, 212, 0.3) 1px, transparent 1px);
|
|
|
|
|
- background-size: 50px 50px;
|
|
|
|
|
- animation: gridMove 20s linear infinite;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.scan-line {
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- height: 2px;
|
|
|
|
|
- background: linear-gradient(to right, transparent, rgb(6, 182, 212), transparent);
|
|
|
|
|
- opacity: 0.3;
|
|
|
|
|
- animation: scan 4s linear infinite;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.scan-line-fast {
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- height: 4px;
|
|
|
|
|
- background: linear-gradient(to right, transparent, rgba(6, 182, 212, 0.6), transparent);
|
|
|
|
|
- animation: scan 3s linear infinite;
|
|
|
|
|
|
|
+.header-bg {
|
|
|
|
|
+ background-image: url('https://hebbkx1anhila5yf.public.blob.vercel-storage.com/image-94sPHckfYzuaReFVWlt6620hJz4EKF.png');
|
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
|
+ background-repeat: no-repeat;
|
|
|
|
|
+ background-position: center;
|
|
|
|
|
+ min-height: 50px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.panel {
|
|
.panel {
|
|
|
- background: linear-gradient(to bottom right, rgba(15, 23, 42, 0.8), rgba(30, 58, 138, 0.5));
|
|
|
|
|
- backdrop-filter: blur(4px);
|
|
|
|
|
- border: 2px solid rgba(6, 182, 212, 0.4);
|
|
|
|
|
|
|
+ border: 1px solid #30459c;
|
|
|
padding: 0.75rem;
|
|
padding: 0.75rem;
|
|
|
- border-radius: 0.5rem;
|
|
|
|
|
- box-shadow: 0 0 20px rgba(6, 182, 212, 0.3);
|
|
|
|
|
|
|
+ border-top: none;
|
|
|
transition: all 0.3s;
|
|
transition: all 0.3s;
|
|
|
min-height: 0; /* 允许flex项目收缩到其内容以下 */
|
|
min-height: 0; /* 允许flex项目收缩到其内容以下 */
|
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.panel:hover {
|
|
|
|
|
- box-shadow: 0 0 30px rgba(6, 182, 212, 0.5);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
.panel-title {
|
|
.panel-title {
|
|
|
color: rgb(103, 232, 249);
|
|
color: rgb(103, 232, 249);
|
|
|
- font-size: 1.125rem;
|
|
|
|
|
|
|
+ font-size: 0.875rem;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
- border-bottom: 1px solid rgba(6, 182, 212, 0.3);
|
|
|
|
|
- padding-bottom: 0.5rem;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ padding-bottom: 0.25rem;
|
|
|
|
|
+ background-image: url('../../../assets/imgs/border-title.png');
|
|
|
|
|
+ background-repeat: no-repeat;
|
|
|
|
|
+ /* 修改这里 */
|
|
|
|
|
+ background-size: 100% 100%; /* 宽高都填满 */
|
|
|
flex-shrink: 0;
|
|
flex-shrink: 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -510,12 +482,24 @@ onUnmounted(() => {
|
|
|
transform: translateY(-1px);
|
|
transform: translateY(-1px);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/* 全屏模式下组件特定样式 */
|
|
|
|
|
|
|
+/* 在现有样式中添加 */
|
|
|
|
|
+.panel-container {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.panel-content {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ overflow-y: auto;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
.fullscreen-layout {
|
|
.fullscreen-layout {
|
|
|
height: 100vh !important;
|
|
height: 100vh !important;
|
|
|
width: 100vw !important;
|
|
width: 100vw !important;
|
|
|
margin: 0 !important;
|
|
margin: 0 !important;
|
|
|
padding: 1rem !important;
|
|
padding: 1rem !important;
|
|
|
|
|
+ padding-top: 0 !important;
|
|
|
position: fixed !important;
|
|
position: fixed !important;
|
|
|
top: 0 !important;
|
|
top: 0 !important;
|
|
|
left: 0 !important;
|
|
left: 0 !important;
|
|
@@ -524,15 +508,41 @@ onUnmounted(() => {
|
|
|
max-height: 100vh !important;
|
|
max-height: 100vh !important;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/* 在现有样式中添加 */
|
|
|
|
|
-.panel-container {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- flex-direction: column;
|
|
|
|
|
- height: 100%;
|
|
|
|
|
|
|
+.return-btn {
|
|
|
|
|
+ background-image: url('../../../assets/imgs/导航按钮.png');
|
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
|
+ background-position: center;
|
|
|
|
|
+ padding: 0.75rem 1rem;
|
|
|
|
|
+
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ display: inline-flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ width: 150px;
|
|
|
|
|
+ height: 36px;
|
|
|
|
|
+ line-height: 46px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.panel-content {
|
|
|
|
|
- flex: 1;
|
|
|
|
|
- overflow-y: auto;
|
|
|
|
|
|
|
+/* 修改垂直滚动条 */
|
|
|
|
|
+::-webkit-scrollbar {
|
|
|
|
|
+ width: 5px; /* 修改宽度 */
|
|
|
|
|
+}
|
|
|
|
|
+::-webkit-scrollbar-thumb {
|
|
|
|
|
+ border-radius: 5px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 修改滚动条轨道背景色 */
|
|
|
|
|
+::-webkit-scrollbar-track {
|
|
|
|
|
+ background-color: transparent;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 修改滚动条滑块颜色 */
|
|
|
|
|
+::-webkit-scrollbar-thumb {
|
|
|
|
|
+ background-color: #0a5f73;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 修改滚动条滑块悬停时的颜色 */
|
|
|
|
|
+::-webkit-scrollbar-thumb:hover {
|
|
|
|
|
+ background-color: #30459c;
|
|
|
}
|
|
}
|
|
|
</style>
|
|
</style>
|