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有一周了,今天做个网站试试。

 
分类: ASP.NET MVC

ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS的更多相关文章

  1. [ASP.NET MVC] 利用动态注入HTML的方式来设计复杂页面

    原文:[ASP.NET MVC] 利用动态注入HTML的方式来设计复杂页面 随着最终用户对用户体验需求的不断提高,实际上我们很多情况下已经在按照桌面应用的标准来设计Web应用,甚至很多Web页面本身就 ...

  2. ASP.NET MVC利用PagedList分页(二)PagedList+Ajax+JsRender

    (原文) 昨天在ASP.NET MVC利用PagedList分页(一)的 最后一节提到,一个好的用户体验绝对不可能是点击下一页后刷新页面,所以今天来说说利用Ajax+PagedList实现无刷新(个人 ...

  3. 转:【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链

    [译]Asp.net MVC 利用自定义RouteHandler来防止图片盗链   你曾经注意过在你服务器请求日志中多了很多对图片资源的请求吗?这可能是有人在他们的网站中盗链了你的图片所致,这会占用你 ...

  4. 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递

    通过第一天的学习之后,我们相信您已经对MVC有一些基本了解. 本节所讲的内容是在上节的基础之上,因此需要确保您是否掌握了上一节的内容.本章的目标是在今天学习结束时利用最佳实践解决方案创建一个小型的MV ...

  5. 既生瑜何生亮?ASP.NET MVC VS ASP.NET Web API

    Asp.net MVC 与 Asp.net Web API 区别 在我们开发一些web应用时,我们一样可以在MVC Framework 中使用JsonResult 来返回JSON数据,同样也可以处理一 ...

  6. 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作

    原文:返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, ...

  7. 七天来学习ASP.NET MVC (两)——ASP.NET MVC 数据传输

    通过第一天的学习之后,我们相信您已经对MVC有一些基本了解. 本节所讲的内容是在上节的基础之上.因此须要确保您是否掌握了上一节的内容. 本章的目标是在今天学习结束时利用最佳实践解决方式创建一个小型的M ...

  8. 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 【转】

    http://www.cnblogs.com/powertoolsteam/p/MVC_two.html 通过第一天的学习之后,我们相信您已经对MVC有一些基本了解. 本节所讲的内容是在上节的基础之上 ...

  9. [转帖]Asp.net MVC 与 Asp.net Web API 区别

    Asp.net MVC 与 Asp.net Web API 区别 https://www.cnblogs.com/viktor988/ https://www.cnblogs.com/terry283 ...

随机推荐

  1. SOA一些资料

    SOA相关资料整理分享 2015-03-26 16:16 by 蘑菇先生, 693 阅读, 9 评论, 收藏, 编辑 昨@幸福框架同学问能否推荐SOA一些资料.想想之前看过不少资料文档,就整理分享下. ...

  2. 去掉UITableView HeaderView或FooterView随tableView 移动的黏性

    去掉UITableView HeaderView或FooterView随tableView 移动的黏性(sticky) 控制器中实现以下方法即可: - (void)scrollViewDidScrol ...

  3. Gulp前端构建工具

    Gulp, 比Grunt更好用的前端构建工具 Gulp, 比Grunt更好用的前端构建工具 本文主要从两个方面介绍Gulp:一,Gulp相对于Grunt的优势: 二,Gulp的安装和使用流程 Gulp ...

  4. 日志之再说Log4J

    网上关于LOG4J的使用文章太多了,写这篇文章的目的一方面是为了回顾LOG4J的用法,一方面针对配置的使用自动将日志插入数据库,自动发送邮件,还有就是自定义输入实现.后续文章会总结下从LOG4J到LO ...

  5. [译]内存中的Java数组是怎么样的

    (文章翻译自What does a Java array look like in memory?) Java中的数组存储了两个中的一个类型:原始类型的类或则是引用类型(比如指针) 当一个对象通过Ne ...

  6. uml系列(四)——类图

    类图是uml的核心.学习类图,总共须要掌握三个部分:类:类之间的关系:类图怎么画. 首先,类.老规矩,先来张图. 类是什么:举个简单的样例:猫.狗.猪三个都是动物.这里面的"动物" ...

  7. 探索Android该Parcel机制上

    一.先从Serialize说起 我们都知道JAVA中的Serialize机制.译成串行化.序列化……,其作用是能将数据对象存入字节流其中,在须要时又一次生成对象.主要应用是利用外部存储设备保存对象状态 ...

  8. sql材料分级统计及汇总案例参考

    --第一步:根据系统编号.列.单价分组求和 select CLBH,DJ,sum(SL) as SL,sum(JE) as JE,Lie into #TempSZCMX from #ShouZhiCu ...

  9. Varnish缓存服务详解及应用实现

    1.varnish的基本介绍    Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,他认为现在的计算机比起1975年已经复杂许多.在1975年时,储存媒介只有 ...

  10. In C# 代码实现

    SOLID 设计原则 In C# 代码实现   [S] Single Responsibility Principle (单一职责原则) 认为一个对象应该仅只有一个单一的职责 namespace Si ...