解决 LESS 中 @arguments 对 IE9 以下浏览器不兼容的问题

阅读时长 3 分钟读完

在前端开发中,LESS 是一种非常强大的样式预处理语言,可以让我们更方便的管理和维护 CSS 样式,提高开发效率。但是,使用 LESS 中的 @arguments 属性时,会出现在 IE9 以下版本的浏览器不兼容的情况。本文将介绍如何解决这个问题。

问题描述

在 LESS 中,@arguments 是一个非常实用的属性,它可以让我们在 mixin 中传递不定参数。例如,我们可以定义一个 mixin,用来设置多个 CSS 属性:

然后在使用时,可以传入不定数量的参数:

这样就可以快速的设置多个 CSS 属性。

但是,该方法在 IE9 以下版本的浏览器中会出现兼容性问题。具体表现为,使用了 @arguments 属性的 mixin 在 IE9 及以下版本的浏览器中不能被正确解析。

解决方法

为了解决这个问题,我们需要针对不同浏览器,采用不同的解决方案。

IE9 及以下版本

对于 IE9 及以下版本的浏览器,我们可以使用 LESS 提供的一个函数 extraction() 来解决这个问题。

该函数可以将 @arguments 转换成一个参数数组,然后在 mixin 中使用该数组即可。

例如:

这样,在 IE9 及以下版本的浏览器中,就可以正常使用该 mixin 了。

其他浏览器

对于其他浏览器,可以采用一个更加简单的方法。我们可以将 @arguments 转换成一个无序列表参数,然后在 mixin 中使用该列表参数即可。

例如:

这样,在其他浏览器中,就可以正常使用该 mixin 了。

示例代码

以下是一个完整的示例代码:

-- -------------------- ---- -------
-------- -
  ------ -----------------------
  ----------- ---------
  ---------- ---------
  ------ ---------
-

------ -
  ------------ ----- ------
-
-- -------------------- ---- -------
------------- ---- -
  ----------- -------------- ---
  ---------- -------------- ---
  ------ -------------- ---
-

------ -
  ------------ ----- ------
-

总结

通过上述的介绍,我们学习了如何解决 LESS 中 @arguments 对 IE9 及以下版本的浏览器不兼容的问题。具体来说,我们可以使用 extraction() 函数或者将 @arguments 转换为一个无序列表参数来解决这个问题。在实际开发中,我们应该根据具体情况来选择不同的解决方案。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649d27fe48841e98949e17fb

纠错
反馈