• CSS工程化


    CSS工程化

    旧网页面临问题:全局样式冲突、嵌套层次过深的选择器、会带来代码的冗余等

    CSS工程化目的:将代码层次化,容易看出嵌套关系;精简代码,提高效率。

    CSS编译器的出现:

    CSS经过多个版本的更迭,从CSS1 到 CSS3,历时多年。虽然新出了不少属性和规范,但在语言本身的特性上,并没有本质的改变。尽管使用 @import 指令可以解决部分模块化的

    问题,但还远远不够。但W3C官方似乎对这些问题视而不见,就是不解决,于是,随着前端技术(特别是JS)的快速发展,很多第三方机构开始尝试进入CSS这个古老的领域,开

    始着手解决这些遗留太久的难题。而它们的思路,就是像解决JS的问题那样,用编译器来解决CSS的问题.

    什么是CSS编译器? 
    CSS编译器,也叫做CSS预编译器,是指开发者使用某种类似CSS(但实际不是)的语言编写代码,然后通过编译器,将其编译成浏览器真正能执行的CSS代码。  
    目前常见的CSS编译器有:SASS和LESS。  
    如何用SASS来实现优雅简洁的CSS代码: 

     SASS编译器是使用Ruby 语言书写而成的,因此,SASS的执行依赖Ruby的环境。值得庆幸的是,我们不需要进行繁琐的步骤去安装和配置Ruby,直接安装一个第三方的工具Koala即可。
    使用方法:
    1.新建一个文件夹,并用你熟悉的文本编辑器打开(例如VSCode),然后在文件夹中新建css文件夹,用于存放SASS文件以及CSS文件,再在根目录中新建一个index.html文件。在css文件中新建一个index.scss 文件,注意后缀名为.scss ,表示这是一个使用Sass CSS语言编写的文件。
    2.将建好的文件夹拖到loala主界面中 在Sass中取消勾选Source Map、选择Autoprefix 以及在右边文本输入框中选择CSS生成样式。
    变量:
    sass让人们受益的一个重要特性就是它为css引入了变量。你可以把反复使用的css属性值 定义成变量,然后通过变量名来引用它们,而无需重复书写这一属性值。或者,对于仅使用过一 次的属性值,你可以赋予其一个易懂的变量名,让人一眼就知道这个属性值的用途。
    sass使用$ 符号来标识变量。
    变量声明
    sass变量的声明和css属性的声明很像: $highlight-color: #F90; 这意味着变量$highlightcolor现在的值是#F90。任何可以用作css属性值的赋值都可以用作sass的变量值,甚至是以空格分割的多个属性值,如$basic-border: 1px solid black; 或以逗号分割的多个属性值。。
    变量引用
    凡是css属性的标准值(比如说1px或者bold)可存在的地方,变量就可以使用。css生成时,变量会被它们的值所替代。之后,如果你需要一个不同的值,只需要改变这个变量的值,则所有引用此变量的地方生成的值都会随之改变。

    嵌套CSS 规则

    嵌套选择器
    作用:将一大串需要一遍又一遍的重复样式简写,使用SASS语言每个选择器只需要书写一遍即可。  
    嵌套属性
    在sass中,除了CSS选择器,属性也可以进行嵌套。尽管编写属性涉及的重复不像编写选择器那么糟糕,但是要反复写border-style 、border-width 、border-color 以及border-* 等也是非常烦人的。在sass中,你只需敲写一遍border:   
        nav {
          border: {
             style: solid;
              1px;
             color: #ccc;}
             }   


    SASS中的注释  
    SASS中提供了两种注释方式,分别是:  
    1. CSS标准注释/* 注释内容 */ ,该注释会出现在编译结果中   
    2. 静默注释// 注释内容 该注释仅会出现在SASS代码中 
     
    混合器
    如果你的整个网站中有几处小小的样式类似(例如一致的颜色和字体),那么使用变量来统一处理,这种情况是非常不错的选择。但是当你的样式变得越来越复杂,你需要大段大段的重用样式的代码,独立的变量就没办法应付这种情况了。你可以通过sass的混合器实现大段样式的重用。  
    简单混合器
    使用@mixin定义一个混合器,混合器的书写跟CSS代码块一样,可以定义多个规则  

    @mixin flex-container{  
                display:flex;  
                flex-wrap: wrap;  
                justify-content: space-between;}  
    //其他的代码块中均可以使用该混合器
    @include flex-container;//使用混合器   
    }   
    .container{   
    background: lightblue;   
    @include flex-container;//使用混合器   
    }   

    编译后生成:   

    .main{
    font-size:1.1em;   
    color:inherit;   
    display:flex;   
    flex-wrap: wrap;   
    justify-content: space-between;   
    }   
    .container{   
    background: lightblue;   
    display:flex;   
    flex-wrap: wrap;   
    justify-content: space-between;   
    }
    

      



  • 相关阅读:
    OSI Model Reference graphic / What do you guys think? Anything to edit/remove/add?
    Iframe Target for a Link
    Abp FullAuditedAggregateRoot
    After Effects上课视频
    Openwrt NAT ALG
    ipcalc.sh
    网络流量测试工具
    NatTypeTester
    基于DPDK开源项目
    GPS的调试与报文解析
  • 原文地址:https://www.cnblogs.com/youwei716/p/11072554.html
Copyright © 2020-2023  润新知