【问题标题】:Simple LESS mixin and variable causing compiling error简单的 LESS mixin 和变量导致编译错误
【发布时间】:2019-04-11 16:24:52
【问题描述】:

我试图找出为什么这个 LESS 文件无法编译。我创建了一个基本的 mixin 和变量被解析到其中,但由于某种原因它不会编译。

错误信息是:ParseError: Unrecognized input

在这条线上:#placement-5-1.sidenav(@sidenav-colour)

有什么明显的我错过了吗?我是新手,正在为我的新工作学习它。感谢您的帮助。

#placement-5-1.sidenav(@sidenav-colour) {
	.content-wrapper-inner {
		ol.output-level-1 {
			box-shadow: 0 0 4px rgba(0,0,0,.3);
			> li {
				> a {
					background: @sidenav-colour;
					color: @bright-white;
					padding: 15px 10px;
					position: relative;
					padding-right: 40px;
					&:after {
						position: absolute;
						right: 10px;
						content: "\f063";
						font-family: 'Font Awesome 5 Pro';
						font-size: 2em;
						top: 50%;
						transform: translateY(-50%);
					}
				}
			}
		}
	}
	@media @mobile {
		margin: 0px 9% !important;
	}
}

@some-red: #e74c3c;
@some-blue: #3498db;

.sidenav.red { #placement-5-1.sidenav.red(@some-red) }
.sidenav.blue { #placement-5-1.sidenav.red(@some-blue) }

【问题讨论】:

  • 不是 100% 确定,但 #placement-5-1.sidenav(@sidenav-colour) 是否允许使用点?当我删除点 .sidenav 时对我有用
  • 我不明白为什么不
  • 是mixin的名字,里面不能有点,它可能认为它是一个css类但是它是一个mixin声明所以它不能解析它
  • 我不明白为什么不 - 基本上一个参数混合名称必须是一个 single 标识符(显然是“一个实体 -> 一个名称”)你可以通过嵌套获得.a.b.c.d.... 的东西,例如比如namespaces

标签: less


【解决方案1】:

你在哪里声明你的 mixin?根据您在此处发布的代码,看起来变量 @sidenav-colour 从未声明过,因此它将是“无法识别的输入”。尝试使用本文检查您是否正确使用了 mixin https://www.sitepoint.com/a-comprehensive-introduction-to-less-mixins/

【讨论】:

  • 我也怀疑这与 sidenav-colour 有关 - 但我的代码是否还没有在第一行声明 sidenav-color? (我不熟悉 LESS,但它似乎与我在此处阅读的示例相同:codepen.io/anon/pen/zXzGja 和您提供的链接)-您如何声明变量?感谢您的帮助
  • @sidenav-colour 是传递给 mixin 的参数。由于没有默认值,所以是mixin的必填变量,与声明无关
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 2021-11-28
  • 1970-01-01
  • 2012-11-11
  • 2014-10-28
  • 1970-01-01
相关资源
最近更新 更多