当前位置: 首页 > news >正文

【vue3】06. 跟着官网学习vue3

每日鸡汤:星光不问赶路人,时光不负有心人

目录

前言

一、class绑定

1.支持对象、数组、字符串

二、style绑定

1. 直接绑定object类型的字段

2. 在scss中使用js变量

总结


前言

本篇文章整理【class与style绑定】

语法没难度,依旧是整理一些常用的场景,和一些知识的扩展。


一、class绑定

1.支持对象、数组、字符串

这个没什么难度,等我遇到值得总结的会补充进来,先忽略。

二、style绑定

1. 直接绑定object类型的字段

如果我们在写一个简单组件的时候,style的变量很少,比如只有宽、高,我们一般这样写就可以了:

<template>
    <div :style="{width: '100px', height: '100px'}">hello</div>
</template>

但是如果,我们有很多个需要绑定的值,比如fontSize、color、backgroundColor等,这样写就一长串,很麻烦,看起来也很乱:

<template>
    <div :style="{width: '100px', 
                height: '100px', fontSize: '20px', color: 'red',
                backgroundColor: 'blue'}">hello</div>
</template>

所以我们可以直接绑定一个object对象在模版中,这个对象的具体值在js中设置

<template>
    <div :style="myStyle">hello</div>
</template>
<script setup>

const myStyle = ref({
     height: '100px',
     fontSize: '20px',
     color: 'red',
     backgroundColor: 'blue'
})

<script>

这样看起来爽多了,这种绑定好多个style的场景,一般出现在组件中,比如一个button组件,我们可以在props中传入各种样式。

既然都说到这里了,那就在延伸一个问题!

2. 在scss中使用js变量

前置知识,关于scss,可以参考我的这篇文章

【系统学习css】scss和sass以及 less的关系_我有一棵树的博客-CSDN博客每日鸡汤,每一个想要学习的念头都是未来的你向自己求救首先我们在package.json中安装的依赖都是关于sass的,但是在style标签中使用的时候一般是用<style lang="scss>这是为什么呢,我们来看一下sass和scss的关系。参考链接sass和scss其实是一样的css预处理语言,scss是sass 3引入的新语法,所以就是说scss隶属于sass,scss语法完全兼容了css3, 并且继承了sass的强大功能。区别是sass 是有严格缩进风格的,不https://blog.csdn.net/qq_17335549/article/details/116618563这个问题是。我在写一个button组件的时候遇到的,很简单,但是对于当时的我一点也不想不到。

假设,我们有一个自定义组件button可以自定义color,我们把传入的color分别应用在button和p标签上,这样我们写了两遍关于color的style的绑定:

<!-- myButton.vue -->
<template>
    <button class="my-button" :style="{color: color}">{{text}}</button>
    <p :style="{color: color}">这是一段文字</p>
</template>
<script setup>
import { defineProps } from 'vue'

const props = defineProps({
    text: {
		type: String,
		default: '点击一下'
	},
    color: {
		type: String,
		default: 'red'
	}
})

</script>

<style lang="scss">
.my-button {
    border: 1px solid;
}

</style>

我现在想,是不是可以优化一些呢?把style绑定写一次,当然可以:

<!-- myButton.vue -->
<template>
    <div class="outer-box" :style="{'--text-color': color}"> 
        <button class="my-button">{{text}}</button>
        <p class="text">这是一段文字</p>
    </div>
</template>
<script setup>
import { defineProps } from 'vue'

const props = defineProps({
    text: {
		type: String,
		default: '点击一下'
	},
    color: {
		type: String,
		default: 'red'
	}
})

</script>

<style lang="scss">
.outer-box {
    border: 1px solid;
    .my-button, .text {
        color: var(--text-color); // 使用css变量
    }
}

</style>

解释一下, 我们给外层容器outer-box设置了一个css的变量--text-color,这样outer-box和他的子元素都可以使用这个变量设置css属性了。(注意仅在它子元素和自身有效,这就是作用域的问题,这也就是为什么,我们会在button外面加一个div包一下)

css变量,规则集所指定的选择器定义了自定义属性的可见作用域。

关于css变量,我会在【我不熟悉的css】系列文章中总结,欢迎围观。


总结

至此,我们学习了使用style和class的绑定,很简单,加油,努力学习才是我们唯一的出路。

相关文章:

  • 任务十一 BERT
  • MyBatis实现多层级collection嵌套查询
  • Containerd【轻量级容器管理工具】
  • 计算机毕业设计ssm+vue基本微信小程序的图书馆座位管理系统
  • 腾讯核心高级架构师汇总Java全栈知识点笔记,“吃透”后成功上岸!
  • 169.多数元素
  • webpack拓展篇(六十七):webpack5 新特性解析
  • CF515E Drazil and Park【思维+线段树】
  • CodeForces 1717E【线性筛】
  • Java程序猿搬砖笔记(九)
  • ROS1云课→16机器人模型从urdf到xacro
  • 花好月圆│以代码寄相思,绘嫦娥之奔月
  • WiFi基础学习到实战(一)
  • Java 在Word文档中添加艺术字
  • 打印机打印数量和碳粉监视器 2.2--PrintLimit Print Tracking
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • avalon2.2的VM生成过程
  • ES10 特性的完整指南
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Mocha测试初探
  • Python打包系统简单入门
  • Python中eval与exec的使用及区别
  • Spring Boot快速入门(一):Hello Spring Boot
  • Swift 中的尾递归和蹦床
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • vue 个人积累(使用工具,组件)
  • 安卓应用性能调试和优化经验分享
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 嵌入式文件系统
  • 入门级的git使用指北
  • 手写一个CommonJS打包工具(一)
  • Spring Batch JSON 支持
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #QT(TCP网络编程-服务端)
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (6)添加vue-cookie
  • (Forward) Music Player: From UI Proposal to Code
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (三)模仿学习-Action数据的模仿
  • (转)平衡树
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .net6Api后台+uniapp导出Excel
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [20190113]四校联考