范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Nuxt3服务端渲染elementplus黑暗模式(二)

  有了上一章的基础 ,接下来我们来引入我们开发所需要的UI组件elementplus,实现顶部和底部整体布局以及配置黑暗模式 。效果如下:
  基础模式
  黑暗模式
  一、引入组件 //安装elementplus 1、npm install element-plus --save  //安装 @element-plus/icons 图标库 2、npm install  @element-plus/icons
  二、然后在我们的plugins创建element-plus.client.ts文件。 注意:如果我们在文件命名时加上 .client,例如 element-plus.client.ts,此时代表该插件只在客户端加载 import *  as ElementPlus from "element-plus/dist/index.full" import zhCn from "element-plus/es/locale/lang/zh-cn" // @ts-ignore import { defineNuxtPlugin } from "#app"  export default defineNuxtPlugin(nuxtApp => {   nuxtApp.vueApp.use(ElementPlus, {     locale: zhCn,   }) })
  三、找到我们的整体布局组件default.vue,我们来使用一下引入的elementplus,看是否引入成功 。(我做了一个简单布局,使用了scss,所以复制的时候需要大家提前安装一下scss)
  1、首先处理顶部布局,在这里我没增加一个城市下啦选择功能
  首先引入 element-china-area-datanpm install element-china-area-data
  其次我们在plugins 引入城市选择插件。 新建 city.client.tsimport { regionData ,CodeToText,TextToCode} from "element-china-area-data" // @ts-ignore import { defineNuxtPlugin } from "#app"  export default defineNuxtPlugin(nuxtApp => {     // @ts-ignore     // return nuxtApp.vueApp.use(regionData)     return {         provide: {             regionData,             CodeToText,             TextToCode         }     } })
  最后我们在default.vue 引入const { $router, $regionData,$TextToCode, $CodeToText } = useNuxtApp()  //使用 const handleChange = (value) => {   ruleForm.region = $CodeToText[value[0]]+"/"+$CodeToText[value[1]]+"/"+$CodeToText[value[2]]   ruleForm.sheng = $CodeToText[value[0]]   ruleForm.shi = $CodeToText[value[1]]   ruleForm.xian = $CodeToText[value[2]] }  //默认赋值 state.selectedOptions = [   $TextToCode ["河南省"].code,   $TextToCode ["河南省"]["郑州市"].code,   $TextToCode ["河南省"]["郑州市"]["金水区"].code ]
  2、接下来我们言归正传,我们来在顶部引入一个模式切换组件。如图:
  新增模式切换功能
  首先我们引入图标及切换组件://引入我们需要的图标 import { Moon, Sunny,  Search} from "@element-plus/icons-vue" //引入样式文件 import theme from "@/utils/theme" import { colorMix } from "@/utils/tool"  //在页面使用       // 设置switch的背景颜色 const blackColor = "var(--bg-color-mute)" const themeColorObj = {   defaultTheme: {     title: "浅色主题"   },   darkTheme: {     title: "深色主题"   } }  //模式切换事件  const themeChange = (val: boolean) => {   if(val){     state.currentSkinName = "defaultTheme"     switchTheme( state.currentSkinName )   }else{     state.currentSkinName = "darkTheme"     switchTheme(state.currentSkinName)   } } const switchTheme = (type?:string) =>{   type = type || "darkTheme"   const colorObj = theme[type]   for (let i = 1; i < 10; i += 1) {     colorObj[`--el-color-primary-light-${10 - i}`] = colorMix(colorObj["--el-color-white"], colorObj["--el-color-primary"], i * 0.1)   }   Object.keys(colorObj).map(item => {     document.documentElement.style.setProperty(item, colorObj[item])   }) }
  3、事件处理完毕,接下来我们就需要配置主题的样式
  首先:在utils创建样式文件theme.ts及tool.ts,我们只处理两种模式,如果要多种可自行拓展,完整代码如下 :可以直接拷贝到自己项目中,也可以在最下方直接下载
  theme.ts export default {   "defaultTheme": {     "--el-background-color-base": "#ffffff",     "--el-color-white": "#ffffff",     "--el-text-color-bar":"#ffffff",     "--el-color-black": "#ffffff",     "--el-color-primary": "#409eff",     "--el-navbar_bg":"#0440D7",//导航     "--el-slider_bg":"#0440D7",     "--el-background-top-color":"#e3e4e5",     "--el-box-color-base": "#f5f7fa", // 分类框     "--el-logo_bg":"#333",//logo     "--el-en_bg":"#666666",//英文     "--bg-color-mute": "#f2f2f2",//模式切换按钮     "--el-text-color-cls": "#666666",//顶部选项颜色     "--el-text-color-th": "rgba(0, 0, 0, 0.3)", // 最次要文字颜色     "--el-color-primary-light-1": "#53a8ff",     "--el-color-primary-light-2": "#66b1ff",     "--el-color-primary-light-3": "#79bbff",     "--el-color-primary-light-4": "#8cc5ff",     "--el-color-primary-light-5": "#a0cfff",     "--el-color-primary-light-6": "#b3d8ff",     "--el-color-primary-light-7": "#c6e2ff",     "--el-color-primary-light-8": "#d9ecff",     "--el-color-primary-light-9": "#ecf5ff",     "--el-input-bg-color": "#fff", //输入框背景色     "--el-fill-color-blank": "#fff",     "--el-select-box":"#fff",//下拉框BG     "--el-select-box-active":"#fff",//下拉框激活BG     "--el-input-border-color":"#00adff",//下拉边框     "--el-hover-bg-color":"#2590F9",//鼠标放入背景色     "--el-switch_bg":"#f2f2f2", //模式切换     "--el-switch-color":"#666666",//模式颜色     "--el-footer-bg":"#F6F7F8",//底部颜色     "--el-btn-color":"#ffffff",//按钮颜色      "--el-color-success": "#67c23a",     "--el-color-success-light": "#e1f3d8",     "--el-color-success-lighter": "#f0f9eb",     "--el-color-warning": "#e6a23c",     "--el-color-warning-light": "#faecd8",     "--el-color-warning-lighter": "#fdf6ec",     "--el-color-danger": "#f56c6c",     "--el-color-danger-light": "#fde2e2",     "--el-color-danger-lighter": "#fef0f0",     "--el-color-error": "#f56c6c",     "--el-color-error-light": "#fde2e2",     "--el-color-error-lighter": "#fef0f0",     "--el-color-info": "#909399",     "--el-color-info-light": "#e9e9eb",     "--el-color-info-lighter": "#f4f4f5",     "--el-text-color-primary": "#303133",     "--el-text-color-regular": "#606266",     "--el-text-color-secondary": "#909399",     "--el-text-color-placeholder": "#c0c4cc",     "--el-border-color-base": "#dcdfe6",     "--el-border-color-light": "#e4e7ed",     "--el-border-color-lighter": "#ebeef5",     "--el-border-color-extra-light": "#f2f6fc",     "--color-input-bg": "#f4f5f5",     "--color-input-error-bg": "#ffece8",     "--color-input-placeholder": "#86909c",     "--color-input-text": "#4e5969",     "--color-input-icon": "#f53f3f",     "--el-popup-modal-background-color": "var(--el-color-black)",     "--el-popup-modal-opacity": ".5",     "--el-border-width-base": "1px",     "--el-border-style-base": "solid",     "--el-border-color-hover": "var(--el-text-color-placeholder)",     "--el-border-base": "var(--el-border-width-base) var(--el-border-style-base) var(--el-border-color-base)",     "--el-border-radius-base": "4px",     "--el-border-radius-small": "2px",     "--el-border-radius-round": "20px",     "--el-border-radius-circle": "100%",     "--el-box-shadow-base": "0 2px 4px rgba(0, 0, 0, .12),0 0 6px rgba(0, 0, 0, .04)",     "--el-box-shadow-light": "0 2px 12px 0 rgba(0, 0, 0, .1)",     "--el-svg-monochrome-grey": "#dcdde0",     "--el-fill-base": "var(--el-color-white)",     "--el-font-size-extra-large": "20px",     "--el-font-size-large": "18px",     "--el-font-size-medium": "16px",     "--el-font-size-base": "14px",     "--el-font-size-small": "13px",     "--el-font-size-extra-small": "12px",     "--el-font-weight-primary": "500",     "--el-font-line-height-primary": "24px",     "--el-font-color-disabled-base": "#bbb",     "--el-index-normal": "1",     "--el-index-top": "1000",     "--el-index-popper": "2000",     "--el-disabled-fill-base": "var(--el-background-color-base)",     "--el-disabled-color-base": "var(--el-text-color-placeholder)",     "--el-disabled-border-base": "var(--el-border-color-light)",     "--el-transition-duration": ".3s",     "--el-transition-duration-fast": ".2s",     "--el-transition-function-ease-in-out-bezier": "cubic-bezier(.645, .045, .355, 1)",     "--el-transition-function-fast-bezier": "cubic-bezier(.23, 1, .32, 1)",     "--el-transition-all": "all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)",     "--el-transition-fade": "opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier)",     "--el-transition-md-fade": "transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier)",     "--el-transition-fade-linear": "opacity var(--el-transition-duration-fast) linear",     "--el-transition-border": "border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier)",     "--el-transition-color": "color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier)"   },   "darkTheme":{     "--el-color-primary": "#409eff", // 主题色     "--el-background-top-color":"#262727",     "--el-box-color-base": "#262727", // 分类框     "--el-background-color-base": "#14161a", // 基础背景色     "--el-color-white": "#1d1e1f", // 基础白色     "--el-color-black": "#262727", // 基础黑色     "--el-navbar_bg":"#14161a", //导航色     "--el-switch_bg":"#2c2c2c", //模式切换     "--el-logo_bg":"#fff",//logo     "--el-slider_bg":"#1B222C",     "--el-en_bg":"#fff",//英文     "--el-btn-color":"#E5EAF3",//按钮颜色     "--el-text-color-bar":"#ffffff",     "--el-text-color-primary": "#FAFAFA", // 主要文字颜色     "--el-text-color-regular": "#FAFAFA", // 常规文字颜色     "--el-text-color-placeholder": "#c0c4cc",  // 占位文字颜色     "--el-text-color-secondary": "rgba(255, 255, 255, 0.5)", // 次要文字颜色     "--el-text-color-th": "rgba(255, 255, 255, 0.3)", // 最次要文字颜色     "--el-text-color-cls": "#fff",//顶部选项颜色     "--el-border-color-base": "#4C4D4F", // 一级边框颜色     "--el-border-color-light": "#414243", // 二级边框颜色     "--el-border-color-lighter": "#363637", // 三级边框颜色     "--el-border-color-extra-light": "#2B2B2C", // 四级边框颜色     "--el-input-bg-color": "#2c2c2c", //输入框背景色     "--el-fill-color-blank": "#414243",     "--el-select-box":"#4C4D4F",//下拉框BG     "--el-select-box-active":"#414243",//下拉框激活BG     "--el-input-border-color":"#fff",//下拉边框     "--el-switch-color":"#ffffff",//模式颜色     "--el-footer-bg":"rgba(255, 255, 255, 0.02)",//底部颜色     "--bg-color-mute": "#2c2c2c",//模式切换按钮     "--el-hover-bg-color":"#2590F9",//鼠标放入背景色     "--el-color-success": "#67c23a", // 成功颜色     "--el-color-success-light": "#e1f3d8",     "--el-color-success-lighter": "#f0f9eb",     "--el-color-warning": "#e6a23c", // 警告颜色     "--el-color-warning-light": "#faecd8",     "--el-color-warning-lighter": "#fdf6ec",     "--el-color-danger": "#f56c6c", // 危险颜色     "--el-color-danger-light": "#fde2e2",     "--el-color-danger-lighter": "#fef0f0",     "--el-color-error": "#f56c6c", // 错误颜色     "--el-color-error-light": "#fde2e2",     "--el-color-error-lighter": "#fef0f0",     "--el-color-info": "#7B88A9", // 信息颜色     "--el-color-info-light": "#e9e9eb",     "--el-color-info-lighter": "#f4f4f5",     "--color-input-bg": "#f4f5f5", // input 输入框     "--color-input-error-bg": "#ffece8",     "--color-input-placeholder": "#86909c",     "--color-input-text": "#4e5969",     "--color-input-icon": "#f53f3f",     "--el-svg-monochrome-grey": "#dcdde0",     "--el-font-color-disabled-base": "#bbb",     "--el-popup-modal-background-color": "var(--el-color-black)",     "--el-popup-modal-opacity": ".5",     "--el-border-width-base": "1px",     "--el-border-style-base": "solid",     "--el-border-color-hover": "var(--el-text-color-placeholder)",     "--el-border-base": "var(--el-border-width-base) var(--el-border-style-base) var(--el-border-color-base)",     "--el-border-radius-base": "4px",     "--el-border-radius-small": "2px",     "--el-border-radius-round": "20px",     "--el-border-radius-circle": "100%",     "--el-box-shadow-base": "0 2px 4px rgba(0, 0, 0, .12),0 0 6px rgba(0, 0, 0, .04)",     "--el-box-shadow-light": "0 2px 12px 0 rgba(0, 0, 0, .1)",     "--el-fill-base": "var(--el-color-white)",     "--el-font-size-extra-large": "20px",     "--el-font-size-large": "18px",     "--el-font-size-medium": "16px",     "--el-font-size-base": "14px",     "--el-font-size-small": "13px",     "--el-font-size-extra-small": "12px",     "--el-font-weight-primary": "500",     "--el-font-line-height-primary": "24px",     "--el-index-normal": "1",     "--el-index-top": "1000",     "--el-index-popper": "2000",     "--el-disabled-fill-base": "var(--el-background-color-base)",     "--el-disabled-color-base": "var(--el-text-color-placeholder)",     "--el-disabled-border-base": "var(--el-border-color-light)",     "--el-transition-duration": ".3s",     "--el-transition-duration-fast": ".2s",     "--el-transition-function-ease-in-out-bezier": "cubic-bezier(.645, .045, .355, 1)",     "--el-transition-function-fast-bezier": "cubic-bezier(.23, 1, .32, 1)",     "--el-transition-all": "all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)",     "--el-transition-fade": "opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier)",     "--el-transition-md-fade": "transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier)",     "--el-transition-fade-linear": "opacity var(--el-transition-duration-fast) linear",     "--el-transition-border": "border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier)",     "--el-transition-color": "color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier)"   }  }
  tool.ts export const colorMix = (color1, color2, weight) => {   weight = Math.max(Math.min(Number(weight), 1), 0)   let r1 = parseInt(color1.substring(1, 3), 16)   let g1 = parseInt(color1.substring(3, 5), 16)   let b1 = parseInt(color1.substring(5, 7), 16)   let r2 = parseInt(color2.substring(1, 3), 16)   let g2 = parseInt(color2.substring(3, 5), 16)   let b2 = parseInt(color2.substring(5, 7), 16)   let r: number | string = Math.round(r1 * (1 - weight) + r2 * weight)   let g: number | string = Math.round(g1 * (1 - weight) + g2 * weight)   let b: number | string = Math.round(b1 * (1 - weight) + b2 * weight)   r = ("0" + (r || 0).toString(16)).slice(-2)   g = ("0" + (g || 0).toString(16)).slice(-2)   b = ("0" + (b || 0).toString(16)).slice(-2)   return "#" + r + g + b; }
  最后我们来简单配置一下公共样式和模式切换重置公共样式:在assets/css 创建 common.css resetElStyle.scss
  resetElStyle.scss .mt10 {   margin-top: 10px; } body{   background: var(--el-color-black) } .main_color{   background-color: var(--el-background-color-base); } .el_base_color{   background-color: var(--el-background-top-color); } .el-menu-item{   border-bottom:none !important; } .right-menu .right-menu-item{   width:62px;   height:62px;   background-color: var(--el-slider_bg);   border-radius: 6px;   overflow: hidden; } .right-menu-item .right-menu-qrcode .qrcode-box{   background:var(--el-slider_bg);   padding:5px } .right-menu-item .right-menu-qrcode p{   padding:-12px 0 5px 0;   text-align:center;   color:#fff;   font-size:12px } .logoWall .logo_animate{   width: 100%;   height: 450px;   background: var(--el-background-color-base);   position: relative; } body {   p{     color:var(--el-text-color-primary)   }   span{     color:var(--el-text-color-primary)   }   .change_ico{     margin-left:22px;     width:42px;     height:24px;   }   .change_ico  .el-switch__action{     background-color: var(--el-switch-color) !important;   }   .change_ico .el-icon{     font-size: 16px;     color:var(--el-switch-color) !important;   }   //下拉框   .el-scrollbar{     background: var( --el-select-box);     .selected{       background: var(--el-select-box-active);       color: var(--el-color-primary);     }     .el-select-dropdown__item.hover, .el-select-dropdown__item:hover{       background: var(--el-select-box-active);       color: var(--el-color-primary);     }   }   /*数字输入框*/   .el-input-number__decrease, .el-input-number__increase {     background: var(--el-color-black)   }    // 复合输入框   .el-input-group__append, .el-input-group__prepend {     border: 1px solid var(--el-border-color-base);     border-right: none;   }    //  日期选择 el-date-picker   .el-picker-panel {     border: 1px solid var(--el-border-color-light);     background: var(--el-color-black)   }     // 日期和时间范围   .el-date-editor .el-range-input {     background: var(--el-color-white)   }    .el-picker-panel__footer {     background: var(--el-color-black)   }    // 时间选择   .el-time-panel__content {     .el-time-spinner__item:hover, .el-scrollbar__thumb:hover {       background: var(--el-select-box-active)     }   }    // 表格分页   .el-pagination.is-background .btn-next, .el-pagination.is-background .btn-prev, .el-pagination.is-background .el-pager li {     background: var(--el-color-black)   }    // menu   .el-menu {     border-right: none;   } }
  common.css body{     margin:0; } a{     text-decoration: none; } ul{     list-style: none; } h4{     font-weight: 400; } .hj_container{     max-width: 1200px;     min-width: 1100px;     margin:0 auto;     padding: 0 22px; } .hj_ip b{     width: 6px;     height: 26px;     margin-right: 12px;     margin-left:22px;     background-color: #00adff;  }  .hj_ip h4{     font-size: 16px !important; } @keyframes imgmove {     0%{         transform: scale(0.9);  /*开始为原始大小*/     }     25%{         transform: scale(1.3); /*放大1.1倍*/     }     50%{         transform: scale(0.9);     }     75%{         transform: scale(1.3);     }  }  @-webkit-keyframes imgmove /*Safari and Chrome*/ {     0%{         transform: scale(0.9);     }     25%{         transform: scale(1.1); /*放大1.1倍*/     }     50%{         transform: scale(0.9);     }     75%{         transform: scale(1.1);     } } .hj_block  .el-timeline-item__content{     font-size: 14px; } .hj_user_lf .el-menu-item:focus, .el-menu-item:hover{     font-size: 14px;     display: flex;     align-items: center; } .el-menu-item{     padding:0 4px 0 4px !important;     border-bottom: 2px solid #f6f6f6; } .el-menu.el-menu--horizontal{     border-bottom: none; } .el-menu--horizontal>.el-menu-item.is-active{     border-bottom:  2px solid #409eff !important; } .el-menu-tabs{     height:48px; } .dplayer-logo {     max-height: 97px !important;     max-width: 98px !important; } .el-menu--horizontal .el-menu-item:not(.is-disabled):focus, .el-menu--horizontal .el-menu-item:not(.is-disabled):hover{     color:#fff; } .intro{     margin:0 auto;     width:910px; }  .logoWall .logo_animate .stand_browser{     display: block;     position: absolute;     width: 230px;     opacity: 0;     height: auto;     filter: alpha(opacity=0); } .stand_browser:hover{     cursor: pointer; } .logoWall .logo_animate .img1{     left:330px;     top: 420px;     animation: animate1 5500ms linear infinite;     -webkit-animation: animate1 5500ms linear infinite;     -moz-animation: animate1 5500ms linear infinite;     -ms-animation:animate1 5500ms linear infinite;     -o-animation: animate1 5500ms linear infinite; }  .logoWall .logo_animate .img2{     left:390px;     top: 420px;     animation: animate2 5500ms linear infinite;     animation-play-state: running;     -webkit-animation-play-state: running;     -moz-animation-play-state:running;     -o-animation-play-state:running;     -webkit-animation: animate2 5500ms linear infinite;     -moz-animation: animate2 5500ms linear infinite;     -ms-animation:animate2 5500ms linear infinite;     -o-animation: animate2 5500ms linear infinite; } .logoWall .logo_animate .img3{     left:450px;     top: 420px;     animation: animate3 5500ms linear infinite;     animation-play-state: running;     -webkit-animation-play-state: running;     -moz-animation-play-state:running;     -o-animation-play-state:running;     -webkit-animation: animate3 5500ms linear infinite;     -ms-animation:animate3 5500ms linear infinite;     -moz-animation: animate3 5500ms linear infinite;     -o-animation: animate3 5500ms linear infinite; } .logoWall .logo_animate .img4{     left:450px;     top: 420px;     animation: animate4 5500ms linear infinite;     animation-play-state: running;     -webkit-animation-play-state: running;     -moz-animation-play-state:running;     -o-animation-play-state:running;     -webkit-animation: animate4 5500ms linear infinite;     -moz-animation: animate4 5500ms linear infinite;     -o-animation: animate4 5500ms linear infinite;     -ms-animation:animate4 5500ms linear infinite; } @keyframes animate1 {     0% { width: 30px; left: 280px;top: 420px;opacity: 0;}     48%{ width: 100px;height:auto;left: 82px;opacity: 1;}     50% {width: 100px;height:auto;left: 80px;top: 200px;opacity: 1;  }     52%{ width: 100px;height:auto;left: 82px;opacity: 1;}     100% {width: 40px;left: 250px;top: 40px;opacity: 0;} }  @-khtml-keyframes animate1 {     0% { width: 30px; left: 280px;top: 420px;opacity: 0;}     48%{ width: 100px;height:auto;left: 82px;opacity: 1;}     50% {width: 100px;height:auto;left: 80px;top: 200px;opacity: 1;  }     52%{ width: 100px;height:auto;left: 82px;opacity: 1;}     100% {width: 40px;left: 250px;top: 40px;opacity: 0;} }  @-webkit-keyframes animate1 {     0% { width: 30px; left: 280px;top: 420px;opacity: 0;}     48%{ width: 100px;height:auto;left: 82px;opacity: 1;}     50% {width: 100px;height:auto;left: 80px;top: 200px;opacity: 1;  }     52%{ width: 100px;height:auto;left: 82px;opacity: 1;}     100% {width: 40px;left: 250px;top: 40px;opacity: 0;} }  @-moz-keyframes animate1 {     0% { width: 30px; left: 280px;top: 420px;opacity: 0;}     48%{ width: 100px;height:auto;left: 82px;opacity: 1;}     50% {width: 100px;height:auto;left: 80px;top: 200px;opacity: 1;  }     52%{ width: 100px;height:auto;left: 82px;opacity: 1;}     100% {width: 40px;left: 250px;top: 40px;opacity: 0;} }  @-ms-keyframes animate1 {     0% { width: 30px; left: 280px;top: 420px;opacity: 0;}     48%{ width: 100px;height:auto;left: 82px;opacity: 1;}     50% {width: 100px;height:auto;left: 80px;top: 200px;opacity: 1;  }     52%{ width: 100px;height:auto;left: 82px;opacity: 1;}     100% {width: 40px;left: 250px;top: 40px;opacity: 0;} }  @-o-keyframes animate1 {     0% { width: 30px; left: 280px;top: 420px;opacity: 0;}     48%{ width: 100px;height:auto;left: 82px;opacity: 1;}     50% {width: 100px;height:auto;left: 80px;top: 200px;opacity: 1;  }     52%{ width: 100px;height:auto;left: 82px;opacity: 1;}     100% {width: 40px;left: 250px;top: 40px;opacity: 0;} }  @keyframes animate2 {     0% {width: 30px;left: 380px;top: 410px;opacity: 0;  }     48%{width: 100px;height:auto;left: 292px;opacity: 1;  }     50% { width: 100px;height:auto;left: 290px;opacity: 1;}     52%{width: 100px;height:auto;left: 292px;opacity: 1;}     100% { width: 40px;left: 360px;top: 40px;opacity: 0;} } @-khtml-keyframes animate2 {     0% {width: 30px;left: 380px;top: 410px;opacity: 0;  }     48%{width: 100px;height:auto;left: 292px;opacity: 1;  }     50% { width: 100px;height:auto;left: 290px;opacity: 1;}     52%{width: 100px;height:auto;left: 292px;opacity: 1;}     100% { width: 40px;left: 360px;top:40px;opacity: 0;} } @-webkit-keyframes animate2 {     0% {width: 30px;left: 380px;top: 410px;opacity: 0;  }     48%{width: 100px;height:auto;left: 292px;opacity: 1;  }     50% { width: 100px;height:auto;left: 290px;opacity: 1;}     52%{width: 100px;height:auto;left: 292px;opacity: 1;}     100% { width: 40px;left: 360px;top: 40px;opacity: 0;} } @-ms-keyframes animate2 {     0% {width: 30px;left: 380px;top: 410px;opacity: 0;  }     48%{width: 100px;height:auto;left: 292px;opacity: 1;  }     50% { width: 100px;height:auto;left: 290px;opacity: 1;}     52%{width: 100px;height:auto;left: 292px;opacity: 1;}     100% { width: 40px;left: 360px;top: 40px;opacity: 0;} } @-moz-keyframes animate2 {     0% {width: 30px;left: 380px;top: 410px;opacity: 0;  }     48%{width: 100px;height:auto;left: 292px;opacity: 1;  }     50% { width: 100px;height:auto;left: 290px;opacity: 1;}     52%{width: 100px;height:auto;left: 292px;opacity: 1;}     100% { width: 40px;left: 360px;top: 40px;opacity: 0;} } @-o-keyframes animate2 {     0% {width: 30px;left: 380px;top: 410px;opacity: 0;  }     48%{width: 100px;height:auto;left: 292px;opacity: 1;  }     50% { width: 100px;height:auto;left: 290px;opacity: 1;}     52%{width: 100px;height:auto;left: 292px;opacity: 1;}     100% { width: 40px;left: 360px;top: 40px;opacity: 0;} } @keyframes animate3 {     0% {width: 30px; left: 580px;top: 420px;opacity: 0;}     48%{width: 100px;height:auto;left: 718px;opacity: 1;}     50% {width: 100px; height:auto;left: 720px;top: 200px;opacity: 1;}     52%{width: 100px;height:auto;left: 718px;opacity: 1;}     100% {width: 40px;left: 630px;top: 40px; opacity: 0;} } @-khtml-keyframes animate3 {     0% {width: 30px; left: 580px;top: 420px;opacity: 0;}     48%{width: 100px;height:auto;left: 718px;opacity: 1;}     50% {width: 100px; height:auto;left: 720px;top: 200px;opacity: 1;}     52%{width: 100px;height:auto;left: 718px;opacity: 1;}     100% {width: 40px;left: 630px;top: 40px; opacity: 0;}  } @-webkit-keyframes  animate3{     0% {width: 30px; left: 580px;top: 420px;opacity: 0;}     48%{width: 100px;height:auto;left: 718px;opacity: 1;}     50% {width: 100px; height:auto;left: 720px;top: 200px;opacity: 1;}     52%{width: 100px;height:auto;left: 718px;opacity: 1;}     100% {width: 40px;left: 630px;top: 40px; opacity: 0;} } @-ms-keyframes animate3 {     0% {width: 30px; left: 580px;top: 420px;opacity: 0;}     48%{width: 100px;height:auto;left: 718px;opacity: 1;}     50% {width: 100px; height:auto;left: 720px;top: 200px;opacity: 1;}     52%{width: 100px;height:auto;left: 718px;opacity: 1;}     100% {width: 40px;left: 630px;top: 40px; opacity: 0;} } @-moz-keyframes animate3 {     0% {width: 30px; left: 580px;top: 420px;opacity: 0;}     48%{width: 100px;height:auto;left: 718px;opacity: 1;}     50% {width: 100px; height:auto;left: 720px;top: 200px;opacity: 1;}     52%{width: 100px;height:auto;left: 718px;opacity: 1;}     100% {width: 40px;left: 630px;top: 40px; opacity: 0;} } @-o-keyframes animate3 {     0% {width: 30px; left: 580px;top: 420px;opacity: 0;}     48%{width: 100px;height:auto;left: 718px;opacity: 1;}     50% {width: 100px; height:auto;left: 720px;top: 200px;opacity: 1;}     52%{width: 100px;height:auto;left: 718px;opacity: 1;}     100% {width: 40px;left: 630px;top: 40px; opacity: 0;} } @keyframes animate4 {     0% { width: 30px;left: 460px;top: 420px;opacity: 0;}     48%{width: 100px; height:auto;left: 508px;opacity: 1;}     50% {width: 100px; height:auto; left: 510px; opacity: 1;  }     52%{width: 100px;height:auto;left: 508px;opacity: 1;}     100% {width: 40px;left: 490px; top: 40px;opacity: 0;} }  @-khtml-keyframes animate4 {     0% { width: 30px;left: 460px;top: 420px;opacity: 0;}     48%{width: 100px; height:auto;left: 508px;opacity: 1;}     50% {width: 100px; height:auto; left: 510px; opacity: 1;  }     52%{width: 100px;height:auto;left: 508px;opacity: 1;}     100% {width: 40px;left: 490px; top: 40px;opacity: 0;} }  @-webkit-keyframes animate4 {     0% { width: 30px;left: 460px;top: 420px;opacity: 0;}     48%{width: 100px; height:auto;left: 508px;opacity: 1;}     50% {width: 100px; height:auto; left: 510px; opacity: 1;  }     52%{width: 100px;height:auto;left: 508px;opacity: 1;}     100% {width: 40px;left: 490px; top: 40px;opacity: 0;} }  @-moz-keyframes animate4 {     0% { width: 30px;left: 460px;top: 420px;opacity: 0;}     48%{width: 100px; height:auto;left: 508px;opacity: 1;}     50% {width: 100px; height:auto; left: 510px; opacity: 1;  }     52%{width: 100px;height:auto;left: 508px;opacity: 1;}     100% {width: 40px;left: 490px; top: 40px;opacity: 0;} }  @-ms-keyframes animate4 {     0% { width: 30px;left: 460px;top: 420px;opacity: 0;}     48%{width: 100px; height:auto;left: 508px;opacity: 1;}     50% {width: 100px; height:auto; left: 510px; opacity: 1;  }     52%{width: 100px;height:auto;left: 508px;opacity: 1;}     100% {width: 40px;left: 490px; top: 40px;opacity: 0;} }  @-o-keyframes animate4 {     0% { width: 30px;left: 460px;top: 420px;opacity: 0;}     48%{width: 100px; height:auto;left: 508px;opacity: 1;}     50% {width: 100px; height:auto; left: 510px; opacity: 1;  }     52%{width: 100px;height:auto;left: 508px;opacity: 1;}     100% {width: 40px;left: 490px; top: 40px;opacity: 0;} } .pause{     animation-play-state: paused !important;     -webkit-animation-play-state: paused !important;     -moz-animation-play-state: paused !important;     -o-animation-play-state: paused !important; } .play{     animation-play-state: running !important;     -webkit-animation-play-state: running !important;     -moz-animation-play-state: running !important;     -o-animation-play-state: running !important; } .el-pagination{     display: flex;     justify-content: center;     align-content: center; } .el-overlay{     z-index: 1000 !important; } .no_data{     display: flex;     justify-content: center;     align-items: center; } .no_data img{     width:20%;     margin-top:-200px; }
  到此为止我们已经处理完毕,如果要在某个地方使用如下:例如background-color: var(--el-background-color-base); color: var(--el-color-primary);
  走到这一步我们的所有布局已经基本完成,剩下的就是具体业务需求的开发了,下一节我们来配合着黑暗模式实现一个完成的首页功能 ,效果如下:
  基础模式
  黑暗模式

这几款10万左右的腕表,和别人都不一样腕表之家腕表推荐不少表友们在购买腕表的时候,会担心腕表的设计是否太平庸,想买些和别人不太一样的有个性的款式。今天腕表之家为朋友们推荐三只能够满足这些需求的腕表,希望能帮助表友们解决韦霍斯特C罗和伊布这么大岁数状态还很好,因他们场下很努力直播吧1月22日讯曼联新援韦霍斯特近日表示,自己一直在向C罗和伊布学习,通过不断努力让自己保持最佳状态。韦霍斯特还相信,作为足球运动员,付出就会有回报。韦霍斯特说你可以从我的数据中巴萨禁止穿对方球队球衣的球迷入场,律师称合法12月31日,诺坎普球场举办了一场加泰罗尼亚德比,在比赛前几个小时,巴塞罗那阻止单独购买球票的西班牙人队球迷穿着自己的球衣进入球场,这引发了一场重大的争议。值得一提的是,两家俱乐部铁掌断魂8法,比拳更具杀伤力的格斗技法,快如刀,利如斧头条创作挑战赛功夫武术酷整理了一套铁掌断魂8法,现分享给大家。本篇是五毒追杀掌绝技实战用法,招式虽简单,效力却无边,制敌好功夫的续篇。一挑臂断颈敌我双方均以左格斗式站立。敌方向前滑戏剧性!湖人逆袭灰熊送新年礼物,施罗德封神,赛后詹姆斯解读1月21日,NBA常规赛结束了一场焦点战,湖人以1分优势险胜灰熊,终结对手的11连胜。这场比赛双方鏖战到最后时刻,湖人一度处于落后,但施罗德关键的抢断反击打成21,反超对手2分。随MLB美职棒大联盟赛扬奖棒球1号位赛扬奖(英语CyYoungAward)指的是美国职棒大联盟每年颁给投手的一项荣耀。这个奖项最初是于1956年由会长福特弗立克(FordFrick)所提议,用来纪念1955年过世的棒英超亿元先生首秀表现拿得出手本轮的英超比赛,切尔西和利物浦0比0互交白卷。虽然结果并不令人满意,但对于波特和切尔西的拥趸们来说,看到首秀的亿元先生穆德里克有不错的发挥,也算是有所收获了。这位新晋加盟球队的乌克费迪南德卡塞米罗缺席的话滕哈格可能会让利马踢中场费迪南德在接受采访时,谈到了接下来曼联与阿森纳的比赛。卡塞米罗在对水晶宫的比赛中吃到黄牌,将遭遇停赛无缘对阵阿森纳。卡塞米罗踢不了阿森纳,这将是一个很致命的问题,这是无法回避的。自冬窗转会,小将加盟土超,进入18人名单,近身感受球队首胜随着中超联赛和足协杯的结束,中国足球也正式全部进入冬季转会窗口,很多球队和球员也成为很多人关注的对象。比如刚刚中超联赛夺冠的武汉三镇,据说几大主力外援都将离队,对此很多球迷表示担忧赵继伟晒娇妻合照太甜蜜!8周年爱情令人羡慕,郭艾伦成评论亮点近日,辽宁男篮球员赵继伟在社媒更新动态,记录了自己8周年的爱情故事,这样的情形也是令人羡慕。CBA联赛第二阶段结束,开始进入了漫长的休赛期,CBA第三阶段将会在3月1日正式开始,到又一个时代的眼泪!知名品牌注销所有关联公司,曾经风靡一时还记得青春时期第一件护肤品是哪个品牌吗?曾经韩国美妆在众多少女心目中风靡一时但近年来不少都退出市场。比如此前不少人心中BB霜鼻祖谜尚21年伊蒂之屋关闭了中国内地的所有线下门店当时网
53岁巴蒂现身庄园!巅峰期收入超10亿,进球率堪比梅罗,被封战神说起阿根廷战神巴蒂斯图塔,相信很多老球迷都印象深刻。他是意甲金靴奖得主,阿根廷足球先生。猛烈的炮击和射击是巴蒂最标志性的动作。巴蒂是阿根廷队的老将,代表国家队出场77次打进54球,自行车火遍全球,老玩家詹姆斯时隔15年又投了一家自行车品牌CanyonBicycles在7月底获得美国投资机构LRMRVentures和SCHoldings的战略投资。这两家投资机构都有来头,其中LRMRVentures背后的老原神速通攻略我为什么推荐你一定要抽心海?心海将何去何从?心海上一次复刻是2。5版本,根据目前已经爆料的消息她将会在3。0版本再复刻一次。心海这个角色非常有争议性,她的剧情拉跨人设崩塌,以至于很多玩家都有意无意地将她的卡池跳过她技能设定非炉石卡组攻略一只爱上潜行者的皮卡丘前来分享烟幕亡语贼大家好,我是隔壁不务正业过来炉石的皮皮皮皮卡丘,今天阿皮想跟大家分享一套无橙盗贼烟幕亡语贼。AAECAaIHAA16AOq6wPT8wON9AOh9AO9gASRnwT3nwT8p从没钱给妈妈治病到全民宠爱,为啥大家都喜欢全红婵?提到婵宝大家都会不由自主的想到全红婵。全红婵今年才15岁就是奥运冠军,全运会冠军,世锦赛冠军三米板冠军。相信未来还会有更多的冠军出现。全红婵被大家亲切地称为婵宝,喜欢全红婵的原因也明日之后寂静船墓任务攻略寂静船墓奇遇任务通关流程明日之后寂静船墓是海洋版本中的奇遇任务之一,在挑战任务的时候可以参考下面的攻略,小编已经将寂静船墓任务的通关方法都分享在下方了,可以帮大家快速的了解寂静船墓任务详情,完成寂静船墓奇王者之路(风云传奇)新手攻略法师介绍哈喽,大家好呀,我是钟爱传奇的传奇老玩家阿燚。今天阿燚为小伙伴们带来的是关于三职业复古传奇手游王者之路风云传奇的相关攻略哦,王者之路是一款三职业复古传奇,小伙伴们对其中的那个职业比通关攻略保卫萝卜4太空穿越第58关满血全清通关本文首发保卫攻略组公众号,未经授权禁止抄袭文章转载至其它平台。哈喽小伙伴们你们好,我是飞鹤。最新攻略又来啦,今天小编给大家带来了太空穿越第58关满血通关攻略,大家快快学起来,精彩攻快手快分销怎么开通?快分销的开通流程介绍在快手发展电商的过程中,将原来的好物联盟升级为快分销是很重要的一步,它意味着商家和达人能更畅通的交流合作,并实现利益共享。对于快分销的开通,快手也设置了明确的标准,接下来为大家说明金铲铲之战怎么快速上分?新手小白必看,大神总结游戏攻略金铲铲之战完美复刻了PC端的云顶之弈,同属经典MOBA游戏LOL的衍生物。金铲铲之战的上分攻略不能照搬LOL所注重的经济装备技术玩家更需要学会如何搭配阵容,如何去做经济的运营,在保英超2轮过后只有2队全胜利物浦尴尬2连平曼联更惨深陷降级区北京时间8月16日,英超第2轮又结束了一场比赛,利物浦队对阵水晶宫队,从两支球队的实力对比看,显然利物浦队要更强,然而意外的是,利物浦队仅仅是11战平拿到了1个积分,两轮过后,利物