所有分类
  • 所有分类
  • 后端开发
前端开发秘籍大揭秘:CSS设计模式全攻略

前端开发秘籍大揭秘:CSS设计模式全攻略

style目录中的代码作用,希望对大家有所帮助!下面简单分析和演示下各个style目录中的代码作用。该目录主要是重置项目中一些元素的默认样式,比如input、hn、p、a等元素该目录定义项目各个主题下相关模块的样式

这篇文章跟你聊聊个大头事——前端开发中的CSS,就是那个让网页美美的东西,它在项目里真是太重要了!为了更好地管理和拓展我们的项目,咱们得搞清楚CSS里面那五花八门的设计模式。这次咱们就来仔细研究下这些模式,然后再结合实际的项目经验,来说说如何搞定那些经常遇到的维护性和性能问题。这样子不仅能提升开发速度,还可以节省不少预算!

前端开发秘籍大揭秘:CSS设计模式全攻略

OOCSS模式

OOCSS(Object-Oriented CSS)就是一个能把CSS写得更聪明的方法,通过制定规则,让你的CSS代码更好用、更好修。BEM(Block Element Modifier),它是OOCSS的升级版,让整个网页分成三个部分:大块头、小按钮、特效牌,这样以后查看代码就容易多了。你可以用Sass混入指令弄出一个”BEM.scss”文件,这样就能少敲很多字,CSS也变得更有条理了。

SMACSS模式

# bad
# 1.匹配效率低,影响css性能
# 2.和html耦合度高,维护性和扩展性低
.container-list ul li a {}
# good .container-list .list-item {}

.label {
  # 公共代码
}
.label-danger {
  # 特定代码
}
.label-info {
  # 特定代码
}

MACSS(模块化可扩展CSS架构)是个能让你搞定大型网站样式的好帮手。这家伙把CSS分成五大块,写代码也要有条理、可扩充!还有另一招叫ITCSS(倒三角样式表),把样式分切成七层,更方便管理网站样式。

ACSS模式

ACSS(原子级别的CSS)就是把CSS取了个炫酷的名字,这个名字告诉我们,这种方法很小很简单,只用于特定功能,所以不用太在意什么逻辑!既然身处前端组件化的时代,这东西还是挺有用滴。现在市面上有两个主流ACSS库,叫Tailwind CSS和Windi CSS,用它们的话,干活可就快多

Vue3项目中CSS架构

毕竟,在我们Vue3的工程里,怎么搞个好使的CSS架构可是大事儿!所以,用上BEM、ITCSS和ACSS这几招儿,然后在style文件夹里面这么分吧:

在下想知道,mixin跟function究竟有啥区别?具体可以用在哪儿?

设置点border,颜色,字体大小这些的目录就是用来编点儿简单样式代码滴,这样可以多搞几次使用。

清除默认值:把一些设置清零,让整个项目的视觉效果更整齐。

变量文件夹:存些全局的东西,比如文字的颜色,边框的色儿啊之类的。

src
  style
    acss         # 存放boder、margin、padding等基于acss模式的代码
    base         # 存放元素(input、p、h1等)的重置样式
    settings     # 存放项目统一规范的文本颜色、边框颜色等变量
    theme        # 存放项目特定主题下的元素样式
    tools        # 存放封装好的mixin(混合指令)和function(函数)样式
    global.scss  # 需要项目全局引用的CSS
    index.scss   # 需要Vue文件引用的CSS

主题目录:给每个主题都有个单独的文件夹,设置好了对应的模版,还能用data-theme属性换肤!

/* mixin */
@mixin center-translate($direction: both) {
  position: absolute;
  @if $direction == both {
    top: 50%;
    left: 50%;
    transform: translate3d(-50%, -50%, 0);
  } @else if $direction == horizontal {
    left: 50%;
    transform: translate3d(-50%, 0, 0);
  } @else if $direction == vertical {
    top: 50%;
    transform: translate3d(0, -50%, 0);
  }
}
/* function */
@function am($module, $trait: false) {
  @if $trait==false {
    @return '[am-' + $module + ']';
  } @else {
    @return '[am-' + $module + '~="' + $trait + '"]';
  }
}

混搭功能所在的文件夹:放满了一些公用的混合元素和函数啥的,比如那个SassMagic就是其中之一~

# style/global.scss
@import "./settings/var.scss";
# style/settings/var.scss
$background-color-primary: #F1F1F1;
$background-color-secondary: $color-white;
# style/acss/color.scss
@each $style in (primary $background-color-primary, secondary $background-color-secondary) {
  [bg-#{nth($style, 1)}] {
    background-color: #{nth($style, 2)};
  }
}

通过这些简单的划分和规范,我们能够更顺利地管理和扩充vue 3项目中的CSS代码,让开发轻松有趣,维护费用也降下来了!运用好BEM、ITCSS和ACSS模式,日常开发都会变得得心应手!

结语

// 根目录下:vue.config.js
module.exports = {
  css: {
    loaderOptions: {
      scss: {
        // @/ 是 src/ 的别名
        // 注意:在 sass-loader v8 中,这个选项名是 "prependData"
        prependData: `@import "@/style/global.scss";`
      },
    }
  }
}

学多点CSS模式,再搞个好使的 CSS 架构在 Vue3 里头,这样就能搞定项目搞不好的那些破事儿,比如维护困难,速度慢啊啥的。希望这篇文章能帮到你们!记得随时关注我们的仓库vue3-css-architecture,有最新更新,还有让你提升前端实力的秘籍。

// src/main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import './style/index.scss'
createApp(App).use(router).mount('#app')

原文链接:https://www.icz.com/technicalinformation/web/2024/04/15119.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?