热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

何时在Sass中使用@extend和@mixin

如何解决《何时在Sass中使用@extend和@mixin》经验,为你挑选了1个好方法。

我在官方教程中学习Sass .

当我学习@mixin并且@extend,我知道它们都是用于CSS代码重用,但我无法弄清楚何时使用哪一个.对我来说有两点不同.

    @mixin可以接受参数(但@extend不能?),这很好,它就像一个函数.

    @extend可以使你的输出CSS包含更少的代码,就像(.message, .success, .error, .warning { })其官方教程中的输出CSS一样.

目前,我只知道,如果我想采取额外的论点,我会使用@mixin.如果我想减少输出CSS代码,我会使用@extend.除了这两个,我可以选择任何一个使用.我对么?



1> Alessio..:

你是正确的方式.

当您希望输出根据您的调用方式改变时,您应该使用mixin.

因此,在某些情况下使用a %placeholder并且@extend会产生较少的CSS.重要的是要意识到@extend会创建关系.无论何时使用@extend,您都要在样式表的其他位置移植选择器,以便与其他正在移植的选择器共享特征.

延伸

例如

.awesome {
    width: 100%;
    height: 100%;
}

body {
    @extend .awesome;
}
p {
    @extend .awesome;
}

哪个回报:

.awesome, body, p {
    width: 100%;
    height: 100%;
}

MIXIN

@mixin awesome {
    width: 100%;
    height: 100%;
}

body {
    @include awesome;
}
p {
    @include awesome;
}

将返回:

body {
    width: 100%;
    height: 100%;
}
p {
    width: 100%;
    height: 100%;
}

但是对于mixins,您可以使用以下参数:

@mixin awesome($w: 100%, $h: 100%) {
    width: $w;
    height: $h;
}

body {
    @include awesome(960px);
}
p {
    @include awesome;
}

哪个回报:

body {
    width: 960px;
    height: 100%;
}
p {
    width: 100%;
    height: 100%;
}

希望这有用!

额外:

@extend指令不灵活.你不能将参数传递给它,所以那里有什么.使用@extend内部@media指令也有一些限制,您无法使用不同的媒体指令扩展选择器@extend.

使用mixins的主要优点是它们具有的功能和灵活性,因为它们可以接受参数.当然,如果你想传递参数,你必须选择@mixin结束@extend.

它们是可以互换的,它还取决于你是否想要/必须坚持使用DRY CSS.

延伸

%hide-text {
  text-indent: -9999px;
  overflow: hidden;
}

.foo {
  @extend %hide-text;
}

.bar {
  @extend %hide-text;
}

.baz {
  @extend %hide-text;
}

干净整洁的结果:

.foo, .bar, .baz {
  text-indent: -9999px;
  overflow: hidden;
}

MIXIN

@mixin hide-text {
  text-indent: -9999px;
  overflow: hidden;
}

.foo {
  @include hide-text;
}

.bar {
  @include hide-text;
}

.baz {
  @include hide-text;
}

结果:

.foo {
  text-indent: -9999px;
  overflow: hidden;
}

.bar {
  text-indent: -9999px;
  overflow: hidden;
}

.baz {
  text-indent: -9999px;
  overflow: hidden;
}

你可以看到CSS选择器之间没有关系.


推荐阅读
  • CSSandSass(SCSS)stylerulesIDandclassnamingID和class(类)名总是使用可以反应元素目的和用途的名称,或其他通用名称。代替表象和 ... [详细]
  • 本文主要分享【】,技术文章【SassScss、Less是什么?】为【CRMEB】投稿,如果你遇到CRMEB,学习笔记相关问题,本文相关知识或能到你。Sass(SyntacticallyAw ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 保持sass条理性和可读性的最基本的三个方法:嵌套、导入和注释安装sass和compassruby-v查看ruby版本gemsources—removehttps:rubyg ... [详细]
  • 首先要说sass和scss的区别。sass之前是缩进的语法,有点像python和jade那样,写起来有点不方便,所以后来兼容了css的写法,就变成了scss。sass支持函数,循环,each,mixi ... [详细]
  • CSS制作框架Sass 3.4.4有哪些优点
    这篇文章主要讲解了“CSS制作框架Sass3.4.4有哪些优点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究 ... [详细]
  • 1.什么是预处理器?  CSS预处理器是用一种专门的编程语言,进行Web页面样式设计,然后再编译成正常的CSS文件,以供项目使用。CSS预处理器为CSS增加一些编程的特性,无需考虑浏览器的兼容性问题。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了css回到顶部按钮相关的知识,希望对你有一定的参考价值。 ... [详细]
  • OrbitDBPeer 2 Peer Database using CRDTs
    2019独角兽企业重金招聘Python工程师标准Apeer-to-peerdatabaseforthedecentralizedwebOrbitDBisaserverless ... [详细]
  • 我在SCSS中为网格列(12列)提供了一个@for函数。我的SASS功能:@for$ifrom1through12 ... [详细]
  • 在我的gulpfile中,我注意到了这种奇怪的行为。如果我这样定义手表(带括号): ... [详细]
  • 【BZOJ3197】[Sdoi2013]assassinDescriptionInputOutputSampleInput412233400111000SampleOutput ... [详细]
  • 我正在为网站创建自定义光标。当鼠标移动时,我有两个div居中于光标,但是当 ... [详细]
author-avatar
mobiledu2502861377
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有