学习Vue3 第十章(实操组件和认识less sass 和 scoped)

概览

什么是less

Less (Leaner Style Sheets 的缩写) 是一门向后兼容的 CSS 扩展语言。这里呈现的是 Less 的官方文档(中文版),包含了 Less 语言以及利用 JavaScript 开发的用于将 Less 样式转换成 CSS 样式的 Less.js 工具。

因为 Less 和 CSS 非常像,因此很容易学习。而且 Less 仅对 CSS 语言增加了少许方便的扩展,这就是 Less 如此易学的原因之一。

官方文档 Less 快速入门 | Less.js 中文文档 - Less 中文网

sass 和 less 一样 都是css预处理器

官方文档 Sass教程 Sass中文文档 | Sass中文网

在vite中使用less | sass

npm install less -D 安装即可

npm install sass -D 安装即可

<style lang="less">

</style>
<style lang="scss">

</style>

什么是scoped

实现组件的私有化, 当前style属性只属于当前模块.

在DOM结构中可以发现,vue通过在DOM结构以及css样式上加了唯一标记,达到样式私有化,不污染全局的作用

样式穿透问题学到第三方组件精讲 ::v-deep >>> /deep/ :deep()

bem架构

他是一种css架构 oocss 实现的一种 (面向对象css) , BEM实际上是blockelementmodifier的缩写,分别为块层、元素层、修饰符层,element UI 也使用的是这种架构

BEM 命名约定的模式是:

.block {}

.block__element {}

.block--modifier {}

使用sass 最小单元复刻一个bem 架构

$block-sel: "-" !default;

$element-sel: "__" !default;

$modifier-sel: "--" !default;

$namespace:'xm' !default;

@mixin bfc {

height: 100%;

overflow: hidden;

}

//混入

@mixin b($block) {

B: namespace + block-sel + block; //变量

.#{$B}{ //插值语法#{}

@content; //内容替换

}

}

@mixin flex {

display: flex;

}

@mixin e($element) {

$selector:&;

@at-root {

#{selector + element-sel + $element} {

@content;

}

}

}

@mixin m($modifier) {

$selector:&;

@at-root {

#{selector + modifier-sel + $modifier} {

@content;

}

}

}

全局扩充sass

import { defineConfig } from 'vite'

import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/

export default defineConfig({

plugins: [vue()],

css: {

preprocessorOptions: {

scss: {

additionalData: "@import './src/bem.scss';"

}

}

}

})

Vue 组件用法

<template>

<div class="xm-wraps">

<div>

<Menu></Menu>

</div>

<div class="xm-wraps__right">

<Header></Header>

<Content></Content>

</div>

</div>

</template>

<script lang="ts" setup>

import { ref, reactive } from "vue"

import Menu from './Menu/index.vue'

import Content from './Content/index.vue'

import Header from './Header/index.vue'

</script>

<style lang="scss" scoped>

@include b('wraps'){

@include bfc;

@include flex;

@include e(right){

flex:1;

display: flex;

flex-direction: column;

}

}

</style>

相关推荐
CDA数据分析师干货分享13 小时前
石油工程专业炼油厂一线岗位转行数据分析岗,CDA数据分析师二级学习经验
深度学习·学习·数据挖掘·数据分析·cda证书·cda数据分析师
执笔论英雄13 小时前
【vllm】vllm根据并发学习调度
java·学习·vllm
婷婷_17213 小时前
【PCIe验证每日学习·Day23】Completion 完成包全机制深度解析
学习·程序人生·芯片·completion·pcie 验证·outsatanding·id路由
羊小猪~~14 小时前
Redis学习笔记(数据类型、持久化、事件、管道、发布订阅等)
开发语言·数据库·c++·redis·后端·学习·缓存
结衣结衣.14 小时前
【Linux】命名管道的妙用:实现进程控制与实时字符交互
linux·运维·开发语言·学习·操作系统·交互
red_redemption14 小时前
自由学习记录(151)
学习
charlie11451419114 小时前
嵌入式C++教程实战之Linux下的单片机编程:从零搭建 STM32 开发工具链(3)WSL2 USB 透传,让 ST-Link 穿越虚拟化边界
c++·stm32·单片机·学习·嵌入式
AI成长日志15 小时前
【datawhale】hello agents开源课程学习记录第6章:智能体框架开发实践
学习·开源
東雪木15 小时前
Java学习——重载 (Overload) 与重写 (Override) 的核心区别、底层实现规则
java·开发语言·jvm·学习·java面试
zl_dfq15 小时前
Python学习4 之 【函数】(函数的相关语法、下划线的使用、global与nonlocal关键字)
python·学习