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. BestCoder Round #11 (Div. 2) 题解

    HDOJ5054 Alice and Bob Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  2. 图文详解ReSharper 8.1功能变化

    ReSharper 8.1版本已经发布有段时间了,被广大开发者购买和试用,今天小编就ReSharper 8.1功能变化就行详细的解说. 支持TypeScript 突出了重构(重命名,引入变量).导航. ...

  3. 编写高效的jQuery代码

    http://www.css88.com/jqapi-1.9/ 编写高效的jQuery代码 最近写了很多的js,虽然效果都实现了,但是总感觉自己写的js在性能上还能有很大的提升.本文我计划总结一些网上 ...

  4. 深入浅出SQL Server 2008 分区函数和分区表

    原文:深入浅出SQL Server 2008 分区函数和分区表 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的 ...

  5. 关于knob.js进度插件的使用

    关于这个插件,妹的,第一次使用坑死爹了,各种不会,幸亏我有持之以恒的精神,最终还是让其臣服于我的胯下.... 1.  引入 head  部分添加knob.js,同时引入excanvas.js这个文件主 ...

  6. javascript 正则介绍

    1.正则直接量字符 \o NUL字符(\u000)\t 制表符\n 换行符(\u000A)\v 垂直制表符\f 换页符\xnn 由16进制nn指定的拉丁字符\uXXXX 由16进制XXXX指定的unc ...

  7. easyui datagrid显示进度条控制操作

    在当我们需要控制时间前台实际项目页面datagrid显示进度条的数据加载时运行,和datagrid默认情况下只在有url加载运行时的数据显示方式的进度条.下面的代码手动控制: 打开一个进度条: $(' ...

  8. nginx配置文件中的location详解

    location 语法:location [=|~|~*|^~] /uri/ { … } 默认:否 上下文:server 这个指令随URL不同而接受不同的结构.你可以配置使用常规字符串和正则表达式.如 ...

  9. 【转】在PC上测试移动端网站和模拟手机浏览器的5大方法

    查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模 ...

  10. 远程连接mysql速度慢的解决方法

    最近在公司内部连mysql速度非常慢,一直还以为公司的网络有问题,后经查发现出现这种问题的主要原因是mysql默认开启了DNS的反向解析功能,连接时反向解析计算机名称时耗时严重,导致连接超慢.解决方法 ...