Mortal红尘 Mortal红尘
首页
  • 学习笔记

    • 前端
    • 后端
  • 《ES6教程》
  • 《Git教程》
  • 《JavaScript教程》
  • 《JavaScript文章》
  • 《TypeScript 从零实现 axios》
  • 《Vue教程》
  • 《Vue文章》
  • 《页面与效果》
  • 技术文档
  • GitHub技巧
  • Nodejs
  • Linux
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Mortal红尘

热爱各种技术的一枚憨憨前端
首页
  • 学习笔记

    • 前端
    • 后端
  • 《ES6教程》
  • 《Git教程》
  • 《JavaScript教程》
  • 《JavaScript文章》
  • 《TypeScript 从零实现 axios》
  • 《Vue教程》
  • 《Vue文章》
  • 《页面与效果》
  • 技术文档
  • GitHub技巧
  • Nodejs
  • Linux
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 《ES6 教程》

  • 《Git》

  • 《JavaScript教程》

  • 《TypeScript 从零实现 axios》

  • 《Vue》

  • JavaScript文章

  • Vue文章

  • 页面

    • HTML

    • CSS

    • stylus

      • 混入(Mixins)
        • 混入(Mixins)
  • 知识库
  • 页面
  • stylus
xugaoyi
2020-02-23
目录

混入(Mixins)

# stylus混入(Mixins)

# 混入(Mixins)

混入和函数定义方法一致,但是应用却大相径庭。

一个简单的混入应用,定义一个超出显示省略号的ellipsis()方法,在需要用到的地方只需插入这个方法,其样式会扩展并复制到选择器中。

ellipsis()
  overflow hidden
  white-space nowrap
  text-overflow ellipsis
1
2
3
4
p
  ellipsis()
1
2

下面有定义的border-radius(n)方法,其却作为一个mixin(如,作为状态调用,而非表达式)调用。

当border-radius()选择器中调用时候,属性会被扩展并复制在选择器中。

border-radius(n)
  -webkit-border-radius n
  -moz-border-radius n
  border-radius n

form input[type=button]
  border-radius(5px)
1
2
3
4
5
6
7

编译成:

form input[type=button] {
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
}
1
2
3
4
5

使用混入书写,你可以完全忽略括号,提供梦幻般私有属性的支持。

border-radius(n)
  -webkit-border-radius n
  -moz-border-radius n
  border-radius n

form input[type=button]
  border-radius 5px
1
2
3
4
5
6
7

注意到我们混合书写中的border-radius当作了属性,而不是一个递归函数调用。

更进一步,我们可以利用arguments这个局部变量,传递可以包含多值的表达式。

border-radius()
  -webkit-border-radius arguments
  -moz-border-radius arguments
  border-radius arguments
1
2
3
4

现在,我们可以像这样子传值:border-radius 1px 2px / 3px 4px!

另外一个很赞的应用是特定的私有前缀支持——例如IE浏览器的透明度:

support-for-ie ?= true

opacity(n)
  opacity n
  if support-for-ie
    filter unquote('progid:DXImageTransform.Microsoft.Alpha(Opacity=' + round(n * 100) + ')')

#logo
  &:hover
    opacity 0.5
1
2
3
4
5
6
7
8
9
10

渲染为:

#logo:hover {
  opacity: 0.5;
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
}
1
2
3
4

来源:https://www.zhangxinxu.com/jq/stylus/mixins.php (opens new window)

编辑 (opens new window)
上次更新: 2024/12/19, 12:18:44
CSS-function汇总

← CSS-function汇总

最近更新
01
TypeScript-概要
8月22日
02
TypeScript快速上手
8月22日
03
常用Git命令清单
11-18
更多文章>
Theme by Vdoing | Copyright © 2021-2025 Mortal红尘 | 黔ICP备2021006288号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×