前端框架vue的样式操作,以及vue提供的属性功能应用实战

news2025/2/23 17:09:45

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,面试宝典等分享。

所属的专栏:前端零基础,高阶应用实战教学
景天的主页:景天科技苑

文章目录

  • 1.vue样式操作
    • 1控制标签class类名
    • 2.控制标签style样式
    • 3.列表渲染指令v-for
  • 2.Vue对象提供的属性功能
    • 1.过滤器
    • 2.计算属性
    • 3.监听属性
    • 4.用户输入用户名长度限制

1.vue样式操作

1控制标签class类名

显示不同的标签效果,样式效果,可以像v-bind一样使用
格式:

   <h1 :class="">元素</h1>  值可以是对象、对象名、数组(数组的方式用的比较少)
   
   data(){
            return {
                num:11,
                xx:'c1',
            }
        }

可以根据数据属性,控制样式显示

<div id="app" >
    <p :class="xx">床前明月光</p>
    <p :class="{c1:num<=10,c2:num>10}">床前明月光</p>
     <!-- class类值控制语法: :class='{类值:判断条件(布尔值或者得到布尔值的算式),类值:判断条件....}'
        布尔值或者得到布尔值的算式: 里面直接可以使用数据属性
    -->


</div>

也可以跟后面,相当于添加个类

  <p class="c1" :class="{c2:num<=10}">床前明月光</p>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

v-bind不支持这种写法
在这里插入图片描述
在这里插入图片描述

2.控制标签style样式

格式1:值是json对象,对象写在元素的:style属性中
标签元素:

         <div :style="{color: activeColor, fontSize: fontSize + 'px' }"></div>
            <!-- 注意:不能出现中横杠,有的话就仿照'font-size',或者去掉横杠,后一个单词的首字母大写,比如fontSize -->   有-的css属性名称,要改为驼峰格式
 data数据如下:
     data: {
         activeColor: 'red',
         fontSize: 30
     }

在这里插入图片描述

格式2:值是对象变量名,对象在data中进行声明
标签元素:

               <div v-bind:style="styleObject"></div>
   data数据如下:
         data: {
                styleObject: {
                     color: 'red',
                     fontSize: '13px'  
                   }
                 }

格式3:
在这里插入图片描述

实例-vue版本选项卡

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #card{
            width: 500px;
            height: 350px;
        }
        .title{
            height:50px;
        }
        .title span{
            width: 100px;
            height: 50px;
            background-color:#ccc;
            display: inline-block;
            line-height: 50px; /* 设置行和当前元素的高度相等,就可以让文本内容上下居中 */
            text-align:center;
        }
        .content .list{
            width: 500px;
            height: 300px;
            background-color: yellow;
            display: none;
        }
        .content .active{
            display: block;
        }

        .title .current{
            background-color: yellow;
        }
    </style>
    <script src="vue.js"></script>
</head>
<body>

    <div id="card">
        <div class="title">
            <span @click="num=1" :class="{current:num===1}">国内新闻</span>   #绑定点击事件,一点击,num的值就发生变化,后面class类值根据num的值做判断,满足条件展示current类样式
            <span @click="num=2" :class="{current:num===2}">国际新闻</span>
            <span @click="num=3" :class="{current:num===3}">银河新闻</span>
            <!--<span>{{num}}</span>-->
        </div>
        <div class="content">
            <div class="list" :class="{active:num===1}">国内新闻列表</div>
            <div class="list" :class="{active:num===2}">国际新闻列表</div>
            <div class="list" :class="{active:num===3}">银河新闻列表</div>
        </div>
    </div>
    <script>
        // 思路:
        // 当用户点击标题栏的按钮[span]时,显示对应索引下标的内容块[.list]
        // 代码实现:
        var card = new Vue({
            el:"#card",
            data:{
                num:0,
            },
        });
    </script>

</body>
</html>

在这里插入图片描述

3.列表渲染指令v-for

在vue中,可以通过v-for指令可以将一组数据渲染到页面中,数据可以是数组或者对象。
在这里插入图片描述

 <!-- value是数组中的元素,index是索引,注意v-for一定要写 :key -->       加上key不会出现顺序混乱问题,原来生成的标签不会再重新生成

提高页面渲染性能,value和index两个形参叫什么都行

数据是数组:

<div id="app" >
    <ul>
        <!-- value是数组中的元素,index是索引,注意v-for一定要写 :key -->
        <li v-for="(value,index) in hobby_lst" :key="index">{{value}}--{{index}}</li>
<!--        <li v-for="(value,index) in hobby_lst">{{value}}-&#45;&#45;{{index}}</li>-->
    </ul>


</div>

在这里插入图片描述
在这里插入图片描述

数据是对象:

<ul>
    <!--i是每一个value值-->
    <li v-for="value in book">{{value}}</li>
</ul>
<ul>
    <!--value是每一个value值,attr是每一个键名-->
    <li v-for="(value,attr) in book">{{attr}}:{{value}}</li>
</ul>
<script>
    var vm1 = new Vue({
        el:"#app",
        data:{
            book: {
                // "attr属性名":"value属性值"
                "id":11,
                "title":"图书名称1",
                "price":200
            },
        },
    })
</script>

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

小练习
goods:[
{“name”:“python入门”,“price”:150},
{“name”:“python进阶”,“price”:100},
{“name”:“python高级”,“price”:75},
{“name”:“python研究”,“price”:60},
{“name”:“python放弃”,“price”:110},
]

把上面的数据采用table表格输出到页面,价格大于60的那一条数据需要添加背景色
在这里插入图片描述
在这里插入图片描述

浏览器展示
在这里插入图片描述

2.Vue对象提供的属性功能

到目前为止,我们了解到Vue的 el,data,methods 三个属性
接下来,我们一起探索其他属性

1.过滤器

过滤器,类似Django模板的过滤器。就是vue允许开发者自定义的文本格式化函数,可以使用在两个地方:输出内容和操作数据中。
定义过滤器的方式有两种,全局和局部过滤器

想在100后面加个 元 怎么办
在这里插入图片描述

使用过滤器
1、局部过滤器,在vue对象里面通过filters属性来定义。只能在当前vue对象中使用
//局部过滤器使用,单体模式定义函数,函数名称就是过滤器名称,里面的参数就是要过滤的数据,比如接收price,返回price元
filters:{
yuan(val){
return val +‘元’
}
}
在这里插入图片描述

html中使用

<div id="app">
    <h1>{{price|yuan}}</h1>

</div>

在这里插入图片描述
在这里插入图片描述

可以动态保留几位小数
//局部过滤器使用,单体模式定义函数,函数名就是过滤器名称。里面的参数就是要过滤的数据,比如接收price,返回price元
filters:{
yuan(val){
return val +‘元’
},
keeppoint(val,n){
return val.toFixed(n)
}
}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

全局过滤器,多个vue对象都可以使用
通过Vue.filter方法定义全局过滤器
//全局过滤器,在vue对象外面定义,第一个参数是过滤器名称。第二个函数是过滤器要做的事
Vue.filter(‘RMB’,function (val){
return val +‘人民币’
})

在这里插入图片描述
在这里插入图片描述

可以连续使用多个过滤器
在这里插入图片描述
在这里插入图片描述

2.计算属性

我们之前学习过字符串反转,如果直接把反转的代码写在元素中,则会使得其他同事在开发时时不易发现数据被调整了,
所以vue提供了一个计算属性(computed),可以让我们把调整data数据的代码存在在该属性中。其实计算属性主要用于监听,可以监听多个对象,后面学了监听之后再说。
compuetd里面可以直接写方法

//对内部属性字符串进行拼接
computed:{
    showaa(){
        //这里定义字符串拼接规则
        let str = this.name + '的爱好是'+ this.hobby
        return str
    }
}

在这里插入图片描述

html中直接调用定义的计算方法名
在这里插入图片描述

浏览器展示
在这里插入图片描述

3.监听属性

侦听属性,可以帮助我们侦听data某个数据的变化,从而做相应的自定义操作。
侦听属性是一个对象,它的键是要监听的对象或者变量,值一般是函数,当侦听的data数据发生变化时,会自定执行的对应函数,
这个函数在被调用时,vue会传入两个形参,第一个是变化后的数据值,第二个是变化前的数据值。

当data中对应的属性值发生变化时,对应watch中设置的方法就会被触发

语法

watch:{
}

            watch:{

                // 'pp':function (){
                //
                // },

                // price(){
                //     alert(this.name + this.pp + '有危险!!!!')
                // }

                //  不支持这种写法
                // info.num(){
                //     console.log(this.info.num);
                // }
                // 监听嵌套数据的写法
                'info.num':function (){
                    console.log(this.info.num);
                }
            }


        //监听属性,当属性值发生变化,触发监听方法执行

        watch:{
            //写法,方式1:

            'price':function (){
                alert(this.name+'的'+this.wallet+ '中的钱发生了变化!!!!')
            }
        }

watch监听的方法名 一定得是data属性中的属性名
在这里插入图片描述
在这里插入图片描述

一点击按钮,就会触发弹窗
在这里插入图片描述

点击确定后,price的值确实发生变化
在这里插入图片描述

        //写法方式2:单体模式
        price(){
            alert(this.name+'的'+this.wallet+ '中的钱发生了变化!!!!')
        }

在这里插入图片描述

当data中的数据属性是个对象时,单体模式就不能使用了,只能使用方式1
比如要监听info的num值变化,这样就无法使用方式2.。只能使用方式1
在这里插入图片描述

对于数据嵌套
在这里插入图片描述

正确嵌套写法
在这里插入图片描述
在这里插入图片描述

点击触发
在这里插入图片描述

4.用户输入用户名长度限制

结合v-model和watch

//监听属性,当属性值发生变化,触发监听方法执行
watch: {
    username(){
        console.log(this.username)
        if (this.username.length > 6){
            alert('太长了');
            //slice切片,开始索引,结束索引
            this.username = this.username.slice(0,6);
        }

    }


}

在这里插入图片描述

html双向绑定
在这里插入图片描述
在这里插入图片描述

确定后,得到截取的前六位
在这里插入图片描述

总结,本章主要讲述vue的样式操作和常见的一些属性功能应用方法,下一章我们继续Vue框架深层次应用,感兴趣的朋友不妨点个关注不迷路,see you !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1516219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于原型的一些总结

猛然发现太久没去复习了&#xff0c;于是复习了一些知识&#xff0c;顺便冒个泡。本次主要总结的知识点关于原型&#xff0c;再文章后半部分有原型相关的题&#xff0c;感兴趣的可直接观看。 一、原型 1.什么是原型 简单理解&#xff0c;原型就是一个对象&#xff0c;通过原…

【MySQL性能优化】- 一文了解MVCC机制

MySQL理解MVCC &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 博客首页 怒放吧德德 To记录领地 &#x1f31d;分享学习心得&#xff0c;欢迎指正&#xff…

压缩json字符串

GZIPOutputStream 需要关闭&#xff0c;而 ByteArrayOutputStream 不需要关闭。具体原因如下&#xff1a; GZIPOutputStream&#xff1a;GZIPOutputStream是一种过滤流&#xff0c;它提供了将数据压缩为GZIP格式的功能。当使用此类的实例写入数据时&#xff0c;它会对数据进行压…

Seata:实现分布式事务的利器

Seata&#xff1a;实现分布式事务的利器 Seata是一种开源的分布式事务解决方案&#xff0c;旨在解决分布式系统中的事务一致性问题。本文将介绍Seata的概念和原理&#xff0c;探讨其在分布式应用程序中的应用场景&#xff0c;并讨论其对于构建可靠的分布式系统的重要性。 Seata…

网赚人,为什么都退圈了?

今儿的话题多少有些悲观。 因为曾经辉煌的网赚圈也开始下滑&#xff0c;从没想过这一天会来的如此之快。最近一直说经济下行影响实体&#xff0c;我想着跟咱互联网人没关系啊&#xff0c;他们做实体的只针对本地客户&#xff0c;咱互联网人针对全国客户。还怕没人了&#xff1…

让短视频博主脾气变好的5款工具!

啊啊啊啊&#xff01;就想问几句&#xff01;谁在职场上脾气变差了&#xff01; 虽然在职场上总会有几天不想上班也是比较正常的事情&#xff0c; 但有的工作做着就有种摔鼠标发疯&#xff01; 考虑中不少做短视频博主一直想用却不知道的工具&#xff0c;也是专门给大家整理…

iTOP-3588开发板快速启动手册Windows安装串口终端调试串口常见问题(一)

2.4.1 设备管理器找不到端口 问题一&#xff1a;win10或者win11设备管理器找不到端口&#xff0c;怎么办&#xff1f; 解决方法&#xff1a; 一 可能是被隐藏了 1 首先进入到“设备管理器”中&#xff0c;找到如下图的位置。 2 点击“查看”&#xff0c;并找到的“显示隐藏…

中小学生校服订购系统lw 微信小程序-python+java+node.js+php

作为一个校服订购系统&#xff0c;数据流量是非常大的&#xff0c;因而&#xff0c;系统的制定需要达到方便使用、实际操作灵便的规定。所以&#xff0c;在设计方案校服订购系统时&#xff0c;应完成下列总体目标&#xff1a; (1)页面应美观大方友善&#xff0c;查找应便捷方便…

Linux:设置别名命令alias

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 在Linux中alias命令用于为一串字符&#xff08;常代表命令&#xff09;设置一个别名&#xff0c;该别名在Bash读取并解析一行命令时会被展开。 下面是该命令的语法。 用…

征战PRO开发板XILINX VIVADO XC7A35T

征战PRO开发板经过几个月的设计准备工作&#xff0c;终于成功投板&#xff0c;来看看它是怎么一步一步变成PCB板的吧。 PCB图 CAD图 PCB裸板 裸板做出来还挺好看的。 大家可以看到我们板子上的丝印是非常丰富的&#xff0c;基本将管脚映射关系都在PCB板上体现出来了&…

(学习日记)2024.03.10:UCOSIII第十二节:多优先级

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

私域营销必看:构建超高回复率和超低删除率的私信交流体系

最近&#xff0c;收到了一位做私域运营的朋友的咨询&#xff0c;他困惑地问我&#xff1a;“为什么我每天给我的企微用户发送群发信息&#xff0c;但回复率却极低&#xff0c;而且删好友率还特别高呢&#xff1f;” 我回应他&#xff1a;“你有没有想过&#xff0c;问题的关键…

C/C++程序设计实验报告2 | 循环结构实验

本文整理自博主学校大一&#xff08;2021级&#xff09;C/C专业课的课程实验报告&#xff0c;适合学弟妹或C语言初学者入门C语言学习、练习。 编译器&#xff1a;gcc 10.3.0 ---- 注&#xff1a; 1.虽然课程名为C程序设计&#xff0c;但实际上当时校内该课的内容大部分其实都是…

idea中操作Git将本地仓库代码完整提交到Gittee中

文章目录 1.在idea中打开你的项目根目录&#xff0c; idea中vcs -> create Git Repository2.选中你的项目所在的目录3. git commit -m"你的备注"4. 直接强制本地仓库覆盖远程仓库的东西5.或者直接使用git 进行这个操作 1.在idea中打开你的项目根目录&#xff0c; …

3d场景重建图像渲染 | 神经辐射场NeRF(Neural Radiance Fields)

神经辐射场NeRF&#xff08;Neural Radiance Fields&#xff09; 概念 NeRF&#xff08;Neural Radiance Fields&#xff0c;神经辐射场&#xff09;是一种用于3D场景重建和图像渲染的深度学习方法。它由Ben Mildenhall等人在2020年的论文《NeRF: Representing Scenes as Neur…

BI数据分析案例详解:零售人货场分析该怎么做?

在当今快节奏、高竞争的商业环境中&#xff0c;人货场分析已成为企业成功的关键因素之一。科技的进步和数据的日益丰富使得企业对人流、货物流和场地布局的深入洞察变得愈发重要。通过科学的人货场分析&#xff0c;企业能更好地理解顾客行为、优化供应链、提高运营效率&#xf…

wpscan专门针对wordpress的安全扫描工具

说明 WPScan是一款专门针对WordPress的漏洞扫描工具&#xff0c;它使用Ruby编程语言编写。WPScan能够扫描WordPress网站中的多种安全漏洞&#xff0c;包括WordPress本身的漏洞、插件漏洞和主题漏洞。此外&#xff0c;WPScan还能扫描类似robots.txt这样的敏感文件&#xff0c;并…

Python打印输出Linux中最常用的linux命令之示例

一、Linux中的~/.bash_history文件说明&#xff1a; 该文件保存了linux系统中运行过的命令的历史。使用该文件来获取命令的列表&#xff0c;并统计命令的执行次数。统计时&#xff0c;只统计命令的名称&#xff0c;以不同参数调用相同的命令也视为同一命令。 二、示例代码&am…

什么是token?token是用来干嘛的?

相信很多从事计算机行业的朋友都听说过token这么个东西&#xff0c;但是其他行业的人就很少了解到token&#xff0c;下面就给大家来详细介绍一下token是什么意思&#xff1f;token是用来干嘛的这一块的内容&#xff0c;希望能帮助到大家。 &#x1f3fb; token是什么意思 作为…

matplotlib-散点图

日期&#xff1a;2024.03.14 内容&#xff1a;将matplotlib的常用方法做一个记录&#xff0c;方便后续查找。 # 引入需要使用的库 from matplotlib import pyplot as plt# 设置画布大小 plt.figure(figsize(20,8),dpi 300)# 全局设置中文字体 plt.rcParams[font.sans-serif]…