首页 > 其他分享 >仿写Vue中的:style属性

仿写Vue中的:style属性

时间:2024-06-18 17:01:41浏览次数:14  
标签:style Vue 仿写 val methods let conf 函数

实现在html文件中,通过一下方式给元素添加style属性 

<h3 :style="fn">新的一天,打工仔加油</h3>

1、定义好一个样式库(函数字典)

2、window全局注册一个函数(高阶函数),该函数的参数为cb(回调函数1)和val(参数2,给cb使用)

3、在cb回调函数中,进行相关处理

<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
 
<body>
  <h3 :style="fn">新的一天,打工仔加油</h3>
  <script>
    // 获取:style绑定的值,对应就是methods对象中的key
    let h3Dom = document.querySelector('h3')
    let val = h3Dom.getAttribute(':style') // fn
 
    /**
     * 定义函数字典,每一个函数的返回值,都是可以使用的样式
     * */
    const methods = {
      fn: () => {
        let conf = {
          background: 'pink',
          width: '100px',
          color: 'white',
          border: '1px solid red'
        }
        return conf
      },
      fn1: () => {
        let conf = {
          background: 'chocolate',
          width: '100px',
          color: 'white'
        }
        return conf
      },
      fn2: () => {
        let conf = {
          background: 'gray',
          width: '100px',
          color: 'white'
        }
        return conf
      },
    }
 
    /**
     * window全局,注册一个函数(高阶函数)
     * */
    window.musted = (ac, val) => { ac(val) }
    /**
     * 高阶函数调用,并在回调函数中处理
     * */
    musted((val) => {
      // 遍历对比查找
      for (const fnName in methods) {
        if (val === fnName) {
          let targetFn = methods[fnName] // fn1(){}
          let styleObj = targetFn()
          // 动态给标签元素,添加样式
          for (const key in styleObj) {
            h3Dom.style[key] = styleObj[key]
          }
        }
      }
    }, val)
  </script>
</body>
 
</html>

做个记录,如有不妥,欢迎指正。

 不要忽视你达成的每个小目标,它是你前进路上的垫脚石。冲!

标签:style,Vue,仿写,val,methods,let,conf,函数
From: https://blog.csdn.net/qq_54548545/article/details/139726386

相关文章

  • 免费分享一套SpringBoot+Vue房地产销售管理系统【论文+源码+SQL脚本+PPT+开题报告】,帅
    大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue房地产销售管理系统,分享下哈。项目视频演示【免费】SpringBoot+Vue房地产销售管理系统Java毕业设计_哔哩哔哩_bilibili【免费】SpringBoot+Vue房地产销售管理系统Java毕业设计项目来自互联网,免费分享,仅供学习交流......
  • vue3cron表达式
     引用:js部分importcmCronfrom'../../components/cmCron/index.vue';constshortcuts=[     {      text:"每天8点和12点(自定义追加)",      value:"008,12**?"     }    ]; 模板部分: ......
  • Ant-Design-Vue动态表头并填充数据
    AntDesignVue是一个企业级的VueUI组件库,它提供了一套非常丰富的组件来帮助开发者快速构建高质量的Vue应用。在使用Ant-Design-Vue时,如果你需要实现一个动态表头并填充数据的表格,你可以使用a-table组件来实现。以下是一个基本示例,展示如何使用a-table组件创建......
  • 基于Java+SpringBoot+Vue+elementUI的学生宿舍管理平台的设计与开发
    第一章绪论1.1选题背景和意义1.2国内外学生宿舍管理平台现状第二章相关技术简介2.1开发工具介绍2.1.1IDEA2.1.2VSCode2.1.3Navicat2.1.4宝塔面板2.2关键技术介绍2.2.1Java2.2.2SpringBoot2.2.3Mybatis2.2.4Vue2.2.5MySQL2.2.6Redis2.2.7E......
  • Docker+Jenkins+Pipline实现Vue项目input选择不同差异性config文件并修改文件内容后打
    场景Docker+Jenkins+Pipline实现SpringBoot项目input选择不同差异性yml文件打包、执行sh打包压缩包、使用archiveArtifacts下载制品(jar包、压缩包):https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/139748758DockerCompose+Jenkins+Pipeline流水线打包Vue项目(解压......
  • qt code format style
    参考:https://www.cnblogs.com/ybqjymy/p/18003463{BasedOnStyle:Google,AccessModifierOffset:-2,AlignAfterOpenBracket:Align,AlignConsecutiveAssignments:false,AlignConsecutiveDeclarations:false,AlignEscapedNewlines:DontAlign,AlignOperands:true,AllowAllPa......
  • VSCode 中 Vue3:找不到模块 “./XXX.vue” 或其相应的类型声明
    问题!代码可以正常运行,但VSCode报错:找不到模块“./App.vue”或其相应的类型声明别再去愚昧的添加d.ts啦!只需在VSCode安装TypeScriptVuePlugin(Volar)拓展享受完全体的Vue导入!......
  • 【Vue3的组合式API】超详细教程,含computed、watch、组件通信、模版引用......
    前言:哈喽,大家好,我是前端菜鸟的自我修养!今天给大家分享【Vue3的组合式API】超详细教程,包含setup语法糖、computed、watch、组件通信、模版引用、vue3新特性等等......,并提供具体代码帮助大家深入理解,彻底掌握!原创不易,如果能帮助到带大家,欢迎收藏+关注哦......
  • vue中的代码分割
    随着Web应用的日益复杂化,用户对页面加载速度的期望越来越高。在这种背景下,前端性能优化成为了开发者们必须面对的挑战。Vue.js,作为现代前端开发的首选框架之一,其轻量级和灵活性为构建高性能的Web应用提供了可能。然而,即使是使用Vue.js,如果不进行适当的优化,应用的加载时间和......
  • Ant-Design-Vue动态表头详细解释并填充数据
    AntDesignVue的a-table组件是构建数据表格的强大工具。动态表头意味着列的标题和属性(如排序、过滤等)可以在运行时确定,通常基于从服务器获取的数据结构。以下是详细解释如何实现动态表头并填充数据:1.准备数据源动态表头的数据源可能来自API的响应,该响应定义了表格的列结......