ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS

背景

LESS确实不错,只是每次写完LESS都要手工编译一下有点麻烦(VS插件一直没有安装好),昨天在官方看到了如何用IBundleTransform集成LESS,今天就记录一下。

参考资料:http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

代码

LessTransform

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 
 6 using System.Web.Optimization;
 7 
 8 namespace LessStudy.Infrastructure
 9 {
10     public class LessTransform : IBundleTransform
11     {
12         public void Process(BundleContext context, BundleResponse response)
13         {
14             response.Content = dotless.Core.Less.Parse(response.Content);
15             response.ContentType = "text/css";
16         }
17     }
18 }

BundleConfig中增加如下代码

1             var lessBundle = new Bundle("~/Content/less").IncludeDirectory("~/Content/less", "*.less");
2             lessBundle.Transforms.Add(new LessTransform());
3             lessBundle.Transforms.Add(new CssMinify());
4             bundles.Add(lessBundle);

在模板中引用

1     @Styles.Render("~/Content/less")

顺便说一下LESS的编码

写注释和统一的格式化

  1 /*栅格的左边距*/
  2 @span_margin: 20px;
  3 /*栅格的的宽度*/
  4 @span_width: 60px;
  5 /*栅格数量*/
  6 @span_length: 12;
  7 /*像素单位*/
  8 @px_unit: 1px;
  9 
 10 /*固定栅格系统*/
 11 .row
 12 {
 13     margin-left: -@span_margin;/*抵消第一个栅格的左边距*/
 14     *zoom: 1;
 15 }
 16 
 17 [class*="span"]
 18 {
 19     float: left;
 20     min-height:1px;
 21     margin-left: @span_margin;
 22 }
 23 
 24 .span (@index) when (@index > 0) 
 25 {
 26     .span@{index}
 27     {
 28         width: (@index * @span_width + (@index - 1) * @span_margin) * @px_unit;
 29     }
 30 
 31     .span(@index - 1);
 32 }
 33 
 34 .span (0) {}
 35 
 36 .span (@span_length);
 37 
 38 .offset (@index) when (@index > 0) 
 39 {
 40     .offset@{index}
 41     {
 42         margin-left: (@index * @span_width + (@index + 1) * @span_margin) * @px_unit;
 43     }
 44 
 45     .offset(@index - 1);
 46 }
 47 
 48 .offset (0) {}
 49 
 50 .offset (@span_length);
 51 
 52 
 53 
 54 
 55 /*自动栅格系统*/
 56 
 57 /*栅格的宽度和左边距之比*/
 58 @span_width_margin_scale: 3;
 59 /*栅格的左边距比例*/
 60 @span_margin_percentage: (1 / (@span_length * (@span_width_margin_scale + 1) - 1));
 61 
 62 .row-fluid
 63 {
 64     width: 100%;
 65     *zoom: 1;
 66 }
 67 
 68 .row-fluid [class*="span"]:first-child
 69 {
 70     margin-left: 0;
 71 }
 72 
 73 .row-fluid [class*="span"]
 74 {
 75     display: block;
 76     float: left;
 77     min-height: 30px;
 78     margin-left: percentage(@span_margin_percentage);
 79     -webkit-box-sizing: border-box;
 80     -moz-box-sizing: border-box;
 81     box-sizing: border-box;
 82 }
 83 
 84 .fluid_span (@index) when (@index > 0)
 85 {
 86     .row-fluid .span@{index}
 87     {
 88         width: percentage((@index * (@span_width_margin_scale + 1) - 1) * @span_margin_percentage);
 89     }
 90 
 91     .fluid_span(@index - 1);
 92 }
 93 
 94 .fluid_span (0) {}
 95 
 96 .fluid_span (@span_length);
 97 
 98 .fluid_offset (@index) when (@index > 0)
 99 {
100     .row-fluid .offset@{index}
101     {
102         margin-left: percentage((@index * (@span_width_margin_scale + 1) + 1) * @span_margin_percentage);
103     }
104 
105     .fluid_offset(@index - 1);
106 }
107 
108 .fluid_offset (0) {}
109 
110 .fluid_offset (@span_length);

如何利用CSS的智能提示呢?

添加文件的时候选择css,然后修改后缀名为less就行了。

备注

学习HTML+CSS有一周了,今天做个网站试试。

 

posted on 2013-07-26 08:37  幸福框架  阅读(2900)  评论(3编辑  收藏

导航

我要啦免费统计