Stylus-import
Stylus Import
Disclaimer: In all places the @import is used with Stylus sheets, the @require could be used
When using @import without the .css
extension, it’s assumed to be a Stylus sheet (e.g., @import "mixins/border-radius"
).
@import works by iterating an array of directories, and checking if this file lives in any of them (similar to node’s require.paths
). This array defaults to a single path, which is derived from the filename
option’s dirname
. So, if your filename is /tmp/testing/stylus/main.styl
, then import will look in /tmp/testing/stylus/
.
@import also supports index styles. This means when you @import blueprint
, it will resolve either blueprint.styl
or blueprint/index.styl
. This is really useful for libraries that want to expose all their features, while still allowing feature subsets to be imported.
For example, a common lib structure might be:
./tablet
|-- index.styl
|-- vendor.styl
|-- buttons.styl
|-- images.styl
In the example below, we set the paths
options to provide additional paths to Stylus. Within ./test.styl
, we could then @import "mixins/border-radius"
, or @import "border-radius"
(since ./mixins
is exposed to Stylus).
/**
* Module dependencies.
*/
var stylus = require('../')
, str = require('fs').readFileSync(__dirname + '/test.styl', 'utf8');
var paths = [
__dirname
, __dirname + '/mixins'
];
stylus(str)
.set('filename', __dirname + '/test.styl')
.set('paths', paths)
.render(function(err, css){
if (err) throw err;
console.log(css);
});
Require
Along with @import
, Stylus also has @require
. It works almost in the same way, with the exception of importing any given file only once.
Block-level import
Stylus supports block-level import. It means that you can use @import
not only at root level, but also nested inside other selectors or at-rules.
If you have a bar.styl
with this code:
.bar
width: 10px;
Then you can import it inside a foo.styl
like this:
.foo
@import 'bar.styl'
@media screen and (min-width: 640px)
@import 'bar.styl'
And you’ll get this compiled CSS as a result:
.foo .bar {
width: 10px;
}
@media screen and (min-width: 640px) {
.bar {
width: 10px;
}
}
File globbing
Stylus supports globbing. With it you could import many files using a file mask:
@import 'product/*'
This would import all the stylus sheets from the product
directory in such structure:
./product
|-- body.styl
|-- foot.styl
|-- head.styl
Note that this works with @require
too, so if you would have also a ./product/index.styl
with this content:
@require 'head'
@require 'body'
@require 'foot'
then @require 'product/*'
would include each individual sheet only once.
Resolving relative urls inside imports
By default Stylus doesn’t resolve the urls in imported .styl
files, so if you’d happen to have a foo.styl
with @import "bar/bar.styl"
which would have url("baz.png")
, it would be url("baz.png")
too in a resulting CSS.
But you can alter this behavior by using --resolve-url
(or just -r
) CLI option to get url("bar/baz.png")
in your resulting CSS.
JavaScript Import API
When using the .import(path)
method, these imports are deferred until evaluation:
var stylus = require('../')
, str = require('fs').readFileSync(__dirname + '/test.styl', 'utf8');
stylus(str)
.set('filename', __dirname + '/test.styl')
.import('mixins/vendor')
.render(function(err, css){
if (err) throw err;
console.log(css);
});
The following statement…
@import 'mixins/vendor'
…is equivalent to…
.import('mixins/vendor')
Stylus-import的更多相关文章
- 【前端开发】优化代码之减少引入,css预编译语言的优点,stylus的使用
前言:我必须得承认在最最最开始的时候,我对于css的预编译是非常不以为然的,这是错误的.一般在页面编写过程中,我会将需要reset的css放在reset.css中,讲会需要重复用到的放置到public ...
- 【stylus】stylus在webstrom中的识别
<style lang="stylus" rel="stylesheet/stylus"> @import './common/stylus/mix ...
- stylus
stylus介绍 是个什么鬼?对于开发来说,CSS的弱点在于静态化.我们需要一个真正能提高开发效率的工具, LESS , SASS 都在这方面做了一些贡献. Stylus 是一个CSS的预处理框架,2 ...
- VUE -- stylus入门使用方法
sizes() 15px 10px sizes()[0] // => 15px stylus介绍 是个什么鬼?对于开发来说,CSS的弱点在于静态化.我们需要一个真正能提高开发效率的工具,LESS ...
- 在vue-cli 3中, 给stylus、sass样式传入共享的全局变量
在开发中有时,我们定义了大量的基础样式变量,例如: 大量的vue单文件组件会用到这些变量,每个组件都引人一次又太麻烦.全局引入是个不错的方法,于是,在main.js 中引入variable.styl文 ...
- 移动端1px 边框完整方案(四个方向)
使用stylus(预处理) 需要一个函数接收两个参数 第一个需要在哪个方向出现边框 第二个边框颜色 $border1px(face,$color) 根据传入的方向属性,调整其他参数 l 左右方向 t ...
- vue翻页器,包括上一页,下一页,跳转
翻页组件 -- 子组件<template> <div class="pager-wrapper" ref="pager"> <di ...
- 关于Vue-cli 组件引入CSS样式文件
在 Vue-cli 组件 .vue 文件中引入 css 样式表出错 由于使用Vue-cli后, 引入css 样式表 不需要 多余../../ 之类路径 现在写法也发生了改变 <style ...
- Vue(小案例)底部tab栏和顶部title栏的实现
---恢复内容开始--- 一.前言 1.底部tab栏实现 2.顶部title栏实现 二.主要内容 1.底部tab栏实现(将底部导航提取到公共的组件中) 具体效果:当点击切换不同的tab的时候,对应 ...
- 移动端根据不同DPR加载大小不同的图片
1.首先创建mixin.styl文件代码如下: bg-image($url) // 创建bg-image($url)函数 background-image: url($url + "@2x. ...
随机推荐
- MySQL的修改和删除数据表字段
MySQL的修改和删除数据表字段 写在前面: 数据库存在的意义:数据存储和数据管理. 数据库:行(数据),列(字段) 注意:本页是解决了列的字段问题.下一页是解决行的数据问题. 注意,所有的字段名,最 ...
- deepin开机自动启动服务备忘
systemctl enable mysql.service(设置开机自启) sudo systemctl start nginx.service sudo systemctl restart ngi ...
- 杭电oj 1087——super jump!jump!jump(java实现)
question:Super Jumping! Jumping! Jumping! 意思就是找一串数字中的和最大子串 思路:创建另一个数组,每一项是路径数组对应项之前最大子串的和,然后遍历此数组找出最 ...
- 牛客CSP-S提高组赛前集训营3 赛后总结
货物收集 二分答案.复杂度\(O(n\log n)\). 货物分组 用费用提前计算的思想,考虑用一个新的箱子来装货物会发生什么. 显然费用会加上后面的所有货物的总重. \(60\)分的\(O(n^2) ...
- 天兔修改登录页的title
1.将 /opt/lampp/htdocs/lepus/application/views/login.php 文件中 第6行 <title><?php echo $this-> ...
- 笔记(tm_springboot)
1.@change="getFile($event)" 2.File imageFolder= new File(request.getServletContext().getRe ...
- ASP.NET 模型验证2--验证部分属性
在开发MVC时,模型验证非常常见,平常我们用的应该都是全验证 if(ModelState.IsValid){ //验证成功要做的事 .....} 但是有时候我们需要部分验证,比如修改用户信息时,因为更 ...
- OpenGL 编程指南 (3.1)
1.OpenGL使用的是RGB颜色空间,例如三个颜色分量各占8位,那么就说这个颜色值色深24,能够表示2^24中颜色. 2.多重采样是基于采样的抗锯齿技术,有OGAA(ordered grid ant ...
- 题解【洛谷P1379】八数码难题
题面 典型的\(\text{BFS}\). 双向广搜是一种对\(\text{BFS}\)的优化,它适用于起点和终点都明确的题目. 这里给出我的双向广搜模板. inline int bfs()//双向广 ...
- 【Python】循环控制保留字