scss基本使用

这篇具有很好参考价值的文章主要介绍了scss基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

scss定义变量

$符号标识来定义变量

变量名用中划线和下划线分隔其实是表示一个意思

$color_base和$color-base其实指向的是同一个变量。

父选择器的标识符&

div{
    color:red;
    &:hover{
        color:bule;
    }
}

群组选择器的嵌套

//css使用
.aaa h1, .aaa h2, .aaa h3{
    font-size:30px
}

// sass嵌套使用

.aaa{
    h1,h2,h3{
      font-size:30px;
    }
}

.bbb, .ccc{
    h2{
        font-size:16px;
    }
}

子组合选择器和同层组合选择器:>、+ 和 ~

// 子组件选择器
// 选择 .aaa 的子元素中的 p 标签
.aaa > p{
    font-size:20px;
}

// 选择 .aaa下所有的 p 标签
.aaa p{
    font-weight:bold;
}

// 同层组合选择器
// 只选择同层 *相邻* *紧跟着* 中间不能有其他的p标签
.bbb+p{
    color:red;
}

// 选择同层全体的 p 标签  不管隔了多少其他的元素
.bbb~p{
    color:yellow;
}

// scss案例
acticle{
    ~acticle{
        border:1px solid red;
    }
    > section{
        background-color:red;
    }
    dl > {
        dt{
            color:#ccc
        }
    }
    nav + & { // 等价于nav+acticle
        margin-top:0;
    }
}

嵌套属性

nav{
    border-style:solid;
    border-width:4px;
    border-color:#ccc;
}

border:{
    style:solid;
    width:4px;
    color:#ccc;
}

// border冒号后面要加空格,不然会报错,说border:后的css无效

导入SASS文件

css和sass区别

1. css导入的css文件是在执行到@important的时候,浏览器才会去下载其他的css文件,这导致页面加载速度比较慢

sass导入样式是在生成css文件时候就把相关的文件导入进来,这样就相关与把所有的样式文件整个到一个css中,无法额外的加载,对应的css体积也会变大

2. css 导入需要加上后缀名,而sass不需要

使用SASS部分文件

在一个实际项目中会可能会创建很多 Sass 文件,但是一般不会每个 Sass 文件都有一个对应的 CSS 文件,而是将少数几个 Sass 文件生成 CSS 文件,其他的 Sass 文件则通过 @import 导入到这些 Sass 文件中。一般不需要生成独立 CSS 文件的 Sass文件称为局部文件,Sass 中有特殊的约定来命名这些文件。

Sass 局部文件的文件名以下划线开头,这样 Sass 就不会在编译时单独编译这个文件输出 CSS,而只把这个文件用作导入。当导入局部文件时,可以省略文件名开头的下划线。

默认变量值

 假如你写了一个可被他人通过@import导入的sass库文件,你可能希望导入者可以定制修改sass库文件中的某些值。使用sass!default标签可以实现这个目的。

它很像css属性中!important标签的对立面,不同的是!default用于变量,含义是:如果这个变量被声明赋值了,那就用它声明的值,否则就用这个默认值。

$font-size:20px !default;
$font-size:24px;
.aaa{
    font-size :$font-size;
}

嵌套导入

@import 导入sass文件时候,可以在css中间导入

这种导入方式下,生成对应的css文件时,局部文件会被直接插入到css规则内导入它的地方

//_side.scss
aside{
    color:red
}

.blue-theme{
    @import 'side'
}

//等价于
.blue-theme{
    aside{
        color:red
    }
}

静默注释

注释分2种,1种是能够编译到css中 一种是不能编译到css中

body{
    color:#333;// 这种注释不会出现在生成的css文件中
    padding:0; /*这种注释会出现在生成的css文件中*/
}

混合器

混合器的使用,在我们实际开发时候,经常会遇到不同页面具有相同的样式,而这些相同的样式之中还有细微差别,这时候,scss中的混合器就可以实现大段样式的重用,混合器用@mixin标识符来定义,通过@include来引用

@mixin red-button{
    background-color:red;
    color:#fff
}

.pink-red-button{
    @include red-button;
    background-color:pink;
}

给混合器传参

混合器在抽取公共样式时候,可以通过像函数传参的方式一样,来指定某个特定的样式

@mixin elliplis($width){
    width:$width;
    overflow:hidden;
    text-overflow:elliplis;
    white-space:nowrap;
}

input{
    @include elliplis(100px)
}

当你@include混合器时,有时候可能会很难区分每个参数是什么意思,参数之间是一个什么样的顺序。为了解决这个问题,sass允许通过语法$name: value的形式指定每个参数的值。

a{
    @include aaa(
        $normal:blue;
        $hover:red;
    )
}

默认参数值

我们也可以给我们传入的参数给一个默认值,就跟函数中参数默认值一致

@mixin aa($normal,$hover:$normal){
    color:$normal;
    &:hover{
        color:$hover
    }
}

选择器继承

使用sass的时候,最后一个减少重复的主要特性就是选择器继承。选择器继承是说一个选择器可以继承为另一个选择器定义的所有样式。这个通过@extend语法实现,如下代码

.aaaa{
    @extand .aaa;
    font-size:20px;
}

 SCSS遍历

1.for循环:语法

方式1:@for $i from 开始值 through 结束值 包含结束值
方式2:@for $i from 开始值 to 结束值 不包含结束值

@for $i from 1 through 3{
  .padding-left#{2 * $i + 8}{
    padding-left: 2 * $i + 8 + px;
  }
}

@for $i from 1 to 3{
  .margin-left#{2 * $i + 8}{
    margin-left: 2 * $i + 8 + px;
  }
}

2.each循环数组:语法

@each item in xxx

$index: index($pixelArr, $item); /**可得到循环的索引*/
$pixelArr: 5, 15;
$position: top, right, bottom, left;
@each $item in $pixelArr {
  $index: index($pixelArr, $item); /**可得到循环的索引*/
  .margin-#{$item} {
    margin: $item + px;
    border-width: $index + px;
  }
  @each $p in $position{
    .margin-#{$p}-#{$item}{
      margin-#{$p}: $item + px;
    }
  }
}

/**最终编译结果*/
.margin-5 {
  margin: 5px;
  border-width: 1px; }

.margin-top-5 {
  margin-top: 5px; }

.margin-right-5 {
  margin-right: 5px; }

.margin-bottom-5 {
  margin-bottom: 5px; }

.margin-left-5 {
  margin-left: 5px; }

.margin-15 {
  margin: 15px;
  border-width: 2px; }

.margin-top-15 {
  margin-top: 15px; }

.margin-right-15 {
  margin-right: 15px; }

.margin-bottom-15 {
  margin-bottom: 15px; }

.margin-left-15 {
  margin-left: 15px; }

scss中的function

scss中的函数和js中的函数差不多 都是用@function来定义函数 @return 来返回函数值

Sass函数:Sass Maps的函数-map-get($map,$key)

map-get($map,$key) 函数的作用是根据 $key 参数,返回 $key 在 $map 中对应的 value 值。如果 $key 不存在 $map中,将返回 null 值。此函数包括两个参数:

  • $map:定义好的 map。
  • $key:需要遍历的 key。

案例  切换主题的demo文章来源地址https://www.toymoban.com/news/detail-772131.html

//_theme.scss文件

$themes: (Red: ( //整体主色调/菜单栏背景/图标.按钮主色/悬停状态
    mainColor: #D6000F, //主题色
    titleColor: #5f95cc, //默认字体色/二级信息字体色
    ),
  Blue: ( //整体主色调/菜单栏背景/图标.按钮主色/悬停状态
    mainColor: #409EFF, //菜单选中背景色/点击状态/文字,按钮按下
    titleColor: #d64e18, //列表背景色
    ),
);
// scss处理文件
@import "./themes.scss";
//切换主题时 获取不同的主题色值
@mixin themeify {
    @each $theme-name,
    $theme-map in $themes {
        //!global 把局部变量强升为全局变量
        $theme-map: $theme-map !global;
        //判断html的data-theme的属性值  #{}是sass的插值表达式
        //& sass嵌套里的父容器标识   @content是混合器插槽,像vue的slot
        [data-theme="#{$theme-name}"] & {
            @content;
        }
    }
}


//从主题色map中取出对应颜色
@function themed($key) {
    @return map-get($theme-map, $key);
}

//获取字体颜色
@mixin font_color($color) {
  @include themeify {
      color: themed($color)!important;
  }
}

<template>
    <div>
      <span class="common-util" @click="theme('Red')">1111test</span>
    </div>
</template>
<script>
export default {
  methods:{
    theme(type) {
      window.document.documentElement.setAttribute('data-theme', type)
    }
  }
}
</script>
<style lang="scss" scoped>
@import '@/styles/handle.scss';
.common-util {
  font-size: 18px;
  height: 100px;
  margin-top: 20px;
  @include font_color('titleColor');
}
</style>

到了这里,关于scss基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • scss基本使用

    $符号标识来定义变量 变量名用中划线和下划线分隔其实是表示一个意思 $color_base和$color-base其实指向的是同一个变量。 父选择器的标识符 群组选择器的嵌套 子组合选择器和同层组合选择器:、+ 和 ~ 嵌套属性 导入SASS文件 css和sass区别 1. css导入的css文件是在执行到@important的

    2024年02月03日
    浏览(35)
  • 〖大前端 - 基础入门三大核心之CSS篇㉒〗- 过渡属性的基本使用

    当前子专栏 基础入门三大核心篇 是免费开放阶段 。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 大前端全栈架构白宝书专栏, 目前阶段免费开放 , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:除了通过订阅\\\"白宝书系列专

    2023年04月19日
    浏览(58)
  • css,less,scss中的深度选择器,结合elementUi使用

    css中深度选择器用到的是 加类名 可以很方便的找到自己想要修改的样式  lees中用到 /deep/ 加类名   scss中用到::v-deep 加类名    

    2024年02月13日
    浏览(42)
  • scss使用自定义函数实现单位像素随屏幕比例动态缩放

    vue中通过变量和scss函数来动态实现动态缩放像素 简单来说就是比例缩小时,像素单位变大,从而字体大小相对不变,以下仅处理比例缩小的状况 自定义一个属性–size,初始值为1px template map为:{100: 1, 90: 1.1, 80: 1.2, 75: 1.3, 67: 1.5, 50: 2, 33: 3, 25: 4 } 屏幕100%时,size=1 = mpx(1) = 1p

    2024年02月07日
    浏览(30)
  • 前端主题切换方案——CSS变量

    主题切换是前端开发中老生常谈的问题,本文将介绍主流的前端主题切换实现方案——CSS变量 编写CSS样式时,为了避免代码冗余,降低维护成本,一些CSS预编译工具(Sass/Less/Stylus)等都支持了CSS变量,随着这些工具的流行,W3C也开始制定CSS变量规范,目前几乎所有主流浏览

    2024年02月13日
    浏览(45)
  • 前端出现变量map未定义

    在JavaScript中,函数内部的this取决于函数的调用方式。当你在回调函数中使用function(e) { ... }时,该函数内部的this值可能不是你期望的值,通常情况下是指向全局对象(在浏览器环境中为window)或在严格模式下为undefined。 为了解决这个问题,你可以使用箭头函数(() =

    2024年02月05日
    浏览(34)
  • 二、GoLang输出HelloWorld、基本数据类型、变量常量定义、基本类型转换

    go语言中,想要输出内容到控制台,package必须是main,包括方法名也必须是main, go语言输出的语法是 fmt 库。 Go语言的基本类型有: boolean:布尔类型 true / false string :字符串类型 数值型: int8:有符号8位整型(-128到127)长度 int16:有符号16位整型(-32768到32767)长度 int32:有

    2024年02月09日
    浏览(57)
  • react全局scss变量

     1、下载包 2、config中找到webpack.config.js // .scss 找sassRegex // .module.scss 找sassModuleRegex 找到如下位置: 修改为如下: 3、重启项目即可

    2024年02月15日
    浏览(36)
  • 如何在CSS中写变量?一文带你了解前端样式利器

    目录 引言 概念 语法 基本用法 使用场景 全局变量 局部变量 ​编辑 媒体查询变量 动态定义 继承变量 自变量 与其他方案的区别 使用方式上 作用域的区别 编译产物 功能及拓展 总结 写在最后 前端的变量写法大致可以分为三大类,分别是CSS-in-JS,CSS预处理器,和CSS原生变量

    2024年02月06日
    浏览(49)
  • 前端 | ( 十一)CSS3简介及基本语法(上) | 尚硅谷前端html+css零基础教程2023最新

    学习来源 :尚硅谷前端html+css零基础教程,2023最新前端开发html5+css3视频 系列笔记 : 【HTML4】(一)前端简介 【HTML4】(二)各种各样的常用标签 【HTML4】(三)表单及HTML4收尾 【CSS2】(四)CSS基础及CSS选择器 【CSS2】(五)CSS三大特性及常用属性 【CSS2】(六)CSS盒子模型

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包