scss中的&符号,和利用&切换class,以及会员卡套餐切换样式

简介: scss中的&符号,和利用&切换class,以及会员卡套餐切换样式

从你走进我心里的那一刻,我就没打算再把你放出去。下面的文章分两节,一节一节的消化吧。

铺垫

在使用scss语法进行嵌套的时候要先看看这段scss代码

.text {
  color: blue;
  :hover { color: red }
}

如此先了解:hover这个伪类的使用:

.text:hover{
  color:red
}

应该要知道这么写才是让这个伪元素生效在text上的写法【不用嵌套的形式】。可见下图(鼠标悬浮在文本上):

b267ee14e60c4ede82d8f914e65c1671.png

可以看见文本是变了颜色的。

你可能会想,既然这样可以的话,为什么我们又要用scss的嵌套呢?

其实原因很简单,看下面的代码:

<div id="app">
   <p class="text">
      你最好啦~ 
      <a>嘿嘿</a>
   </p>
</div>

看p标签下又嵌套了个a标签,这时候我们又要给a标签写蓝色文字样式:

.text:hover{
  color:red
}
.text{
  a{
    color: blue;
  }
}

就下面这样了:

fc675a3522584b299583c785458388da.png

虽然有效果,单玩意里面很多层呢?这么写肯定是不好的,所以我们就有了嵌套写法:

.text{
  :hover{
    color:red;
  }
  a{
    color: blue;
  }
}

哎哟~鼠标悬浮上去:

a136158509984272bc8798db90910ba1.png

没有红色?问题出在哪呢?


抢答:我知道,问题是因为:hover应该是直接作用在text上,这种嵌套实际是作用在某个子元素上,如果正确浏览器应该解析成.text:hover。


嗯嗯,是这样,我们来看看刘浏览器的解析:【审查元素-选中text-勾选hover,我们发现并没有相关css】

5e8131389e344c0f9257009df5022243.png

所以这个时候,怎么办呢?来,上才艺:&

.text{
  &:hover{
    color:red;
  }
  a{
    color: blue;
  }
}

再一看

aa80bcbda583411a8e86d23de279e853.png

有了,

1492935183ed44009c923bb7e60cd7a7.png

都有了。

出来了,我们分析一下:

.text:hover是作用在了class为text的元素上,在.text下&:hover{color:red;},是不是可以理解为,&是让该样式作用在.text上。

那么怎么切换class呢?

<p class="good active">
   我是一个像漂亮妹妹的标签
</p>
.good{
  color:red;
  &.active{
    color: blue;
  }
}

这样会显示什么颜色呢?红色还是蓝色呢?

接下来就是见证奇迹:

1d74011b48b6457394941ddc63246219.png

没错,他是蓝色。看见了没,他们在是作用的同一个标签,单用了&的权重大于没用的,为什么呢,因为&.active会被浏览器解析为

.good.active {
    color: blue;
}

相当于去啊种多了一个class

image.png

优先级问题,这就是为什么可以动态设置class的原因了,在vue中完全可以通过动态绑定class来实现切换。这个可以实现那个会员套餐的升级写法:看实操。

<template>
  <div id="app">
      <div class="item" @click="activeIndex = index" :class="activeIndex === index ?'active':''" v-for="(item,index) in vipList" :key="index">
        <p>{{item.title}},{{item.price}}</p>
      </div>
  </div>
</template>
<script>
//原理
//通过&的权重高来覆盖样式
//click切换套餐,选中的套餐添加active的class
//有了active这个class,css中的&.class就会生效
export default {
  name: 'app',
  data () {
    return {
      vipList:[{title:'套餐1',price:20},{title:'套餐2',price:30},{title:'套餐2',price:40}],//套餐列表
      activeIndex:0,//已选中套餐
    }
  },
}
</script>
<style lang="scss">
.item{
  cursor: pointer;
  border: 1px solid #999;
  p{
    color: blue;
  }
  &.active{
    border: 1px solid red;
    p{
      color: red;
    }
  }
}
</style>

image.png


原理在代码块里了。

最后,你是最棒的哦,相信自己,月薪破万不是梦。


目录
相关文章
|
JSON 前端开发 小程序
uniapp:request 请求出现400错误
uniapp:request 请求出现400错误
1239 0
uniapp:request 请求出现400错误
|
资源调度
pnpm : 无法加载文件 C:\Users\86183\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。
发现了问题,在上一个项目中我是使用的npm来进行安装依赖和运行打包的,在看到这里时才发现了问题,解决的方法就是 1.在系统中搜索框输入 Windos PowerShell,点击以管理员身份运行
|
5月前
|
人工智能 API 网络安全
什么是OpenClaw?OpenClaw能干什么?OpenClaw详细介绍及部署喂饭级图文教程及避坑指南
OpenClaw(前身为 Clawdbot/Moltbot)是一款开源、本地优先、可执行任务的 AI 自动化代理引擎,遵循 MIT 开源协议。它以自然语言指令为核心驱动,能在本地或私有云环境中完成文件操作、流程编排、浏览器自动化、多IM平台交互等各类实际任务,实现了从传统AI“对话式建议”到“自动化执行”的关键跨越,是面向个人开发者与企业团队的自托管式AI数字员工。
2742 17
|
4月前
|
移动开发 JavaScript 前端开发
前端组件库——Wot Design Uni知识点大全(一)
教程来源 https://zlpow.cn Wot Design Uni 是基于 Vue3 + TypeScript 的开源 uni-app UI 组件库,提供 70+ 高质量移动端组件,支持微信/支付宝小程序、H5、App 等多端兼容,内置暗黑模式、国际化(15+语言)与 CSS 变量主题定制,大幅提升跨平台开发效率。
|
10月前
|
JavaScript 前端开发
uni-app中如何使用scss定义变量
使用SCSS在uni-app项目中定义和使用变量,不仅提高了样式代码的可维护性,还使得样式的修改和主题定制变得更加方便。只需更改变量值,就可以轻松改变整个应用的外观和风格。通过合理地组织和管理SCSS代码,可以大大提高开发效率和项目的可维护性。
801 9
|
11月前
|
人工智能 编解码 数据可视化
原生支持QwenImage!FlowBench 正式开启公测!本地 + 云端双模生图,AI创作更自由
FlowBench 是由 ModelScope x Muse 团队打造的一站式 AI 工作流创作平台,现已开启全面公测。该平台以工作流为核心,支持本地与云端资源协同运行,面向开发者、设计师及 AI 创作者提供高效、稳定、易用的可视化创作体验。FlowBench 原生支持 QwenImage 图像生成模型,最低仅需 8GB 显存即可实现本地生图,并支持多 LoRA 融合、多图批量生成等强大功能。用户可在 Mac 和 Windows 系统下载使用,同时享受云端与本地自由切换带来的灵活体验。公测期间,FlowBench 团队将持续优化功能,推出更多创新特性,助力用户开启高效 AI 创作之旅。
1827 11
|
JavaScript
判断一个对象为空对象的方法
判断一个对象为空对象的方法
446 4
|
测试技术 编译器
软件测试用例经典方法 | 逻辑覆盖测试法及案例
逻辑覆盖测试法是常用的一类白盒测试方法,其以程序内部逻辑结构为基础,通过对程序逻辑结构的遍历来实现程序测试的覆盖。逻辑覆盖测试法要求测试人员对程序的逻辑结构有清晰的了解。 逻辑覆盖测试法是一系列测试过程的总称,是使测试过程逐渐进行越来越完整的通路测试。从覆盖源程序语句的详尽程度,可以将其分为语句覆盖、判定覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖和路径覆盖等。接下来将通过下面程序的逻辑覆盖测试用例一一介绍这些覆盖准则,该程序的流程图如图4-1所示,其中,a、b、c、d、e是控制流上的若干程序点。
1391 0
软件测试用例经典方法 | 逻辑覆盖测试法及案例
|
JavaScript 前端开发 编译器
Typescript 回调函数、事件侦听的类型定义与注释--拾人牙慧
Typescript 回调函数、事件侦听的类型定义与注释--拾人牙慧
|
Windows
iis配置http重定向302转发get请求并去掉最后的斜杠/ iis重定向 iis去除url最后的斜杠 iis重定向链接斜杠(已解决)
iis配置http重定向302转发get请求并去掉最后的斜杠/ iis重定向 iis去除url最后的斜杠 iis重定向链接斜杠(已解决)
1260 0

热门文章

最新文章