常用class 样式总结

清除浮动

// Clearfix
@mixin clearfix {
  &:before,
  &:after {
    content: " "; // 1
    display: table; // 2
  }
  &:after {
    clear: both;
  }
}

滚动条样式(隐藏)

@mixin scrollHide {
  &::-webkit-scrollbar {
    display: none;
  }
}

强制不换行超出文字省略号

@mixin ellipsis {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

多行情况下第line行超出文字省略号

@mixin multiEllipsis($line) {
  display: -webkit-box;
  -webkit-box-orient: vertical; // 从上向下垂直排列子元素。设置或检索伸缩盒对象的子元素的排列方式 。
  text-overflow: ellipsis; //文本溢出 用省略号显示
  -webkit-line-clamp: $line; // 多少行省略
  overflow: hidden;
  word-break: break-all;
}

$px为需要转换的rem

// px 转 rem 的默认
$browser-default-font-size: 16px;

@function pxTorem($px){
  @return $px / $browser-default-font-size * 1rem;
}
### Vue 中 Scoped Styles 和 SASS 样式穿透详解 Vue 的 `scoped` 属性用于限制样式的作用范围,使其只影响当前组件内的 DOM 结构。然而,在某些场景下可能需要让父级组件的样式渗透到子组件中,这就涉及到了 **样式穿透** 的概念。 #### 1. Vue Scoped CSS 的基本机制 当 `<style>` 标签带有 `scoped` 属性时,Vue 使用 PostCSS 插件为每个元素动态生成唯一的属性选择器[^3]。这确保了样式的局部化,防止与其他组件发生冲突。例如: ```html <style scoped> .example { color: red; } </style> <template> <div class="example">hi</div> </template> ``` 上述代码会被编译为类似以下结构: ```css [data-v-f3f3eg9] .example { color: red; } ``` 其中 `[data-v-f3f3eg9]` 是由 Vue 自动生成的唯一标识符。 --- #### 2. 样式穿透的方式 为了使父组件的样式能够作用于子组件内部的元素,可以通过以下方式实现样式穿透: ##### (1) `/deep/`, `>>>` 或 `::v-deep` 在 Vue 项目中,SASS 文件可以配合 `scoped` 属性使用深度选择器来完成样式穿透。以下是几种常见的方法及其兼容性说明: - **`/deep/`**: 这是一个早期的写法,已被废弃但仍被部分版本支持。 - **`>>>`**: 类似于 `/deep/`,但在 JavaScript 模块环境中更常用。 - **`::v-deep`**: 推荐使用的标准语法,具有更好的语义性和跨平台兼容性。 示例代码如下: ```html <style lang="scss" scoped> .father { ::v-deep .child-class-name { background-color: yellow; } } /* 或者 */ .father { >>> .child-class-name { font-size: 20px; } } /* 或者 */ .father { /deep/ .child-class-name { border: 1px solid black; } } </style> ``` 以上三种写法均能实现样式穿透效果,最终会将 `.father` 下的所有 `.child-class-name` 元素应用指定的样式[^2]。 --- #### 3. React 对应的解决方案 虽然问题是针对 Vue 的,但也可以对比一下 React 的做法。React 并未内置类似于 Vue 的 `scoped` 属性,而是依赖第三方库(如 styled-components 或 CSS Modules)来管理样式隔离。对于样式穿透的需求,通常可以直接编写全局样式或者借助高级选择器实现[^1]。 --- #### 4. PostCSS 在样式处理中的角色 PostCSS 是一种强大的工具链,广泛应用于现代前端开发流程中。它不仅负责解析和优化 CSS,还提供了多种插件扩展功能,比如自动补全浏览器前缀、支持未来 CSS 特性以及增强代码质量控制等[^5]。Scoped CSS 的实现正是依靠 PostCSS 来完成的,具体表现为通过分析模板结构自动生成唯一的属性标记,并将其附加到对应的选择器上。 --- #### 5. 总结建议 如果希望保持良好的维护性和可读性,推荐优先采用 `::v-deep` 方式来进行样式穿透操作。同时需要注意的是,随着项目的复杂度增加,过度依赖样式穿透可能会破坏组件封装原则,因此应当谨慎权衡利弊后再决定是否引入此类技术方案。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值