美文网首页
Vue3样式引入和使用

Vue3样式引入和使用

作者: 宏势 | 来源:发表于2022-06-24 18:39 被阅读0次

一、全局样式引入

  • 1.main.ts 引入(推荐)
    一般src目录下新建styles文件夹, 该方式能解析less的语法
import "@/styles/index.less";
  • 2.vue.config.js 引入,该方式能解析less语法
css: {
    loaderOptions: {
      less: {
        lessOptions: {
          javascriptEnabled: true,
          modifyVars: {},
        },
        additionalData: `
          @import "ant-design-vue/lib/style/themes/default.less";
          @import "~@/styles/variables.less";
        `,
      },
    },
  },
  • 3.App.vue的style标签内引入
<style>
@import "./styles/index.less"
</style>
  • 4.index.html 引入
<link href="index.css" type="text/css" rel="stylesheet" /> #文件引入
#或者
<style>
.test{
  color: red;
}
</style>

二、组件样式

1、<style scoped >

使用scoped属性,它的css只会应用到当前组件的元素上,只作用到子组件的根结点,支持采用深度选择器,插槽选择器,全局选择器 实现作用域扩展,也支持响应式动态CSS。lang 设置样式语言,默认是css。

<style lang="less" scoped>
  .example {
    color: red;
  }
</style>
<template>
  <div class="example">hi</div>
</template>

转换为:

<style>
.example[data-v-f3f3eg9] {
  color: red;
}
</style>

<template>
  <div class="example" data-v-f3f3eg9>hi</div>
</template>

综上所述,实现组件作用域样式是通过增加元素属性 比如data-v-f3f3eg9 实现的

  • 动态样式
<template>
  <div class="text">hello</div>
</template>

<script>
export default {
  data() {
    return {
      color: 'red'
    }
  }
}
</script>

<style>
.text {
  color: v-bind(color);
}
</style>
  • 深度选择器
    使用:deep() 影响到子组件的元素
<style scoped>
.a :deep(.b) {
  /* ... */
}
</style>
  • 插槽选择器
    作用域样式不会影响到 <slot/>,因为它们是父组件持有传入的,采用:slotted() 伪类
<style scoped>
:slotted(div) {
  color: red;
}
</style>
  • 全局选择器
    采用:global()伪类来实现让样式规则应用到全局
<style scoped>
:global(.red) {
  color: red;
}
</style>

2、 <style module>

默认名称$style

<template>
  <p :class="$style.red">
    This should be red
  </p>
</template>

<style module>
.red {
  color: red;
}
</style>

自定义注入名称

<template>
  <p :class="classes.red">red</p>
</template>

<style module="classes">
.red {
  color: red;
}
</style>
  • 与组合式API一起使用
// 默认, 返回 <style module> 中的类
useCssModule()

// 命名, 返回 <style module="classes"> 中的类
useCssModule('classes')

三、 模版使用样式

v-bind:style 简写:style

绑定内联样式,看起来十分直观,非常像css,CSS property 名可以用camelCase或kebab-case,支持对象语法和数组

<div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>

data() {
  return {
    activeColor: 'red',
    fontSize: 30
  }
}

v-bind:class简写:class

实现动态切换class,可以与普通的class属性共存,支持绑定计算属性,三元运算符,支持传递数组给:class

<div class="static"  :class="{ active: isActive, 'text-danger': hasError }"></div>
data() {
  return {
    isActive: true,
    hasError: false
  }
}

渲染结果:

<div class="static active"></div>

绑定计算属性

<div :class="classObject"></div>
data() {
  return {
    isActive: true,
    error: null
  }
},
computed: {
  classObject() {
    return {
      active: this.isActive && !this.error,
      'text-danger': this.error && this.error.type === 'fatal'
    }
  }
}

三元运算符

<div :class="[isActive ? activeClass : '', errorClass]"></div>

相关文章

  • Vue3样式引入和使用

    一、全局样式引入 1.main.ts 引入(推荐)一般src目录下新建styles文件夹, 该方式能解析less的...

  • (六)react使用ant Design

    安装 全局引入样式 引入组件 使用组件

  • CSS样式基础知识

    样式有几种引入方式? link 和 @import有什么区别 样式有三种引入方式,分别是: 外部引入式主要是使用l...

  • React 集成Prism代码高亮

    使用 如果使用插件以及不同语言支持,需要引入对应的js和样式

  • CSS的引入及个别混淆点

    CSS样式的引入方式及link和@import的区别 样式有3种引入方式:①外部式:在 下使用link或@impo...

  • CSS三:CSS的三种引入方式

    CSS的引入方式共有三种:行内样式、内部样式表、外部样式表。 #一、行内样式 使用style属性引入CSS样式。 ...

  • 2019-11-30

    CSS的引入方式共有三种:行内样式、内部样式表、外部样式表 行内样式使用style属性引入CSS样式。 内部样式表...

  • HTML部分

    引入样式,使用什么标签? HTML有三种样式引入方式:行内样式、嵌入式样式表、外部样式表。 行内样式又称内联表单样...

  • 在vue中使用stylus的混入

    先引入对应的文件( 注意样式里面引入样式,要用@,还要注意 @,要用 ) 直接在样式中使用 mixins.styl...

  • CSS3的引入和选择器

    一、HTML中引入css 1、行内样式 使用style引入html样式示例: 2、内联样式表 CSS代码写在 的 ...

网友评论

      本文标题:Vue3样式引入和使用

      本文链接:https://www.haomeiwen.com/subject/ooevvrtx.html