在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Bootstrap 栅格(Grid)系统在移动互联网的今天,越来越多的网站被手机设备访问,移动流量在近几年猛增。Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。 栅格参数Bootstrap 3提供了一系列的预定义class来指定列的尺寸,如下所示: Bootstrap 栅格系统被分割为12列,当布局你的网页时,记住所有列的总和应该是12。为了图示,请看如下HTML所示: <div class="container"> <div class="row"> <div class="col-md-3" style=""> <h3>green</h3> </div> <div class="col-md-6" style=""> <h3>red</h3> </div> <div class="col-md-3" style=""> <h3>blue</h3> </div> </div> </div> 注:Bootstrap 需要为页面内容和栅格系统包裹一个 .container 容器。 在上述代码中,我添加了一个class为container的div容器,并且包含了一个子的div元素row(行)。row div元素依次有3列。其中2列包含了col-md-3的class、一列包含了col-md-6的class。当他们组合在一起时,他们加起来总和是12.但这段HTML代码只作用于显示器分辨率>=992的设备。所以为了更好的响应低分辨率的设备,我们需要结合不同的CSS栅格class。故添加对平板、手机、低分辨率的PC的支持,需要加入如下class: <div class="container"> <div class="row"> <div class="col-xs-3 col-sm-3 col-md-3" style=""> <h3>green</h3> </div> <div class="col-xs-6 col-sm-6 col-md-6" style=""> <h3>red</h3> </div> <div class="col-xs-3 col-sm-3 col-md-3" style=""> <h3>blue</h3> </div> </div> </div> Bootstrap HTML元素Bootstrap已经为我们准备好了一大堆带有样式的HTML元素,如:
Bootstrap Tables(表格)Bootstrap为HTML tables提供了默认的样式和自定义他们布局和行为的选项。为了更好的演示,我使用精典的Northwind示例数据库以及如下技术:
打开Visual Studio,创建一个ASP.NET MVC的项目,默认情况下,VS已经为我们添加了Bootstrap的文件。为了查看效果,按照如下的步骤去实施:
public class ProductViewModel { public int ProductId { get; set; } public string ProductName { get; set; } public decimal? UnitPrice { get; set; } public int? UnitsInStock { get; set; } public bool Discontinued { get; set; } public string Status { get; set; } }
Mapper.CreateMap<Product, ProductViewModel>() .ForMember(dest => dest.Status, opt => opt.MapFrom (src => src.Discontinued ? "danger" : src.UnitPrice > 50 ? "info" : src.UnitsInStock < 20 ? "warning" : ""));
public class ProductController : Controller { // // GET: /Product/ private readonly ApplicationDbContext _context; public ProductController(ApplicationDbContext context) { this._context = context; } public ActionResult Index() { var products = _context.Products.Project().To<ProductViewModel>().ToArray(); return View(products); } }
View Code
呈现的数据如下所示: Bootstrap Tables 其余样式Bootstrap提供了额外的样式来修饰table。比如使用table-bordered来显示边框,table-striped显示奇偶数行间颜色不同(斑马条纹状),table-hover顾名思义,当鼠标移动行时高亮,通过添加 .table-condensed 类可以让表格更加紧凑,单元格中的内补(padding)均会减半,修改后的代码如下所示: <table class="table table-bordered table-striped table-hover"> </table> 显示的效果如下: Bootstrap上下文Table 样式Bootstrap提供了额外的class能让我们修饰<td>和<tr>的样式,提供的class如下:
修改上述代码,为<tr>动态添加样式: @foreach (var item in Model) { <tr class="@item.Status"> <td> @Html.DisplayFor(modelItem => item.ProductName) </td> <td> @Html.DisplayFor(modelItem => item.UnitPrice) </td> <td> @Html.DisplayFor(modelItem => item.UnitsInStock) </td> <td> @Html.DisplayFor(modelItem => item.Discontinued) </td> </tr> } 更新过后的效果如下所示: Bootstrap ButtonsBootstrap提供了许多各种不同颜色和大小的buttons,为核心的buttons提供6种颜色和4种尺寸可以选择,同样通过设置class属性来显示不同的风格: • btn btn-primary btn-xs • btn btn-default btn-sm • btn btn-default • btn btn-sucess btn-lg 可以为Button设置颜色的class: • btn-default • btn-primary • btn-success • btn-info • btn-warning • btn-danger 所以可以使用如下代码来呈现效果: <div class="row"> <!-- default按钮 --> <button type="button" class="btn btn-default btn-xs"> Default & Size=Mini </button> <button type="button" class="btn btn-default btn-sm"> Default & Size=Small </button> <button type="button" class="btn btn-default">Default</button> <button type="button" class="btn btn-default btn-lg"> Default & Size=Large </button> </div> 显示效果如下: Bootstrap Form(表单)表单常见于大多数业务应用程序里,因此统一的样式有助于提高用户体验,Bootstrap提供了许多不同的CSS样式来美化表单。
使用ASP.NET MVC的HTML.BeginForm可以方便的创建一个表单,通过为<form>添加名为form-horizontal的class来创建一个Bootstrap 水平显示表单。
View Code
上述代码中,使用class为form-group的<div>元素包裹了2个Html方法(Html.LabelFor、Html.TextboxFor),这能让Bootstrap 验证样式应用在form 元素上,当然你也可以使用Bootstrap 栅格col-* class来指定form 中元素的宽度,效果如下显示:
Bootstrap基础表单默认情况下是垂直显示内容,在Html.BeginForm帮助方法里移除class为form-horizontal和class col-*后,显示的效果如下:
内联表单表示所有的form 元素一个接着一个水平排列,只适用于视口(viewport)至少在 768px 宽度时(视口宽度再小的话就会使表单折叠)。 记得一定要添加 label 标签,如果你没有为每个输入控件设置 label 标签,屏幕阅读器将无法正确识别。对于这些内联表单,你可以通过为label 设置 .sr-only 类将其隐藏。详细代码如下:
View Code
显示效果如下: Bootstrap Image在 Bootstrap 3.0中,通过为图片添加 .img-responsive 类可以让图片支持响应式布局。其实质是为图片设置了 max-width: 100%;、 height: auto; 和 display: block; 属性,从而让图片在其父元素中更好的缩放。 通过为 <img> 元素添加以下相应的类,可以让图片呈现不同的形状。
请看如下代码: <div class="row"> <h3>Our Team</h3> @foreach (var item in Model) { <div class="col-md-4"> <img src="@Url.Content("~/Images/employees/" + item.EmployeeID + ".png")" alt="@[email protected]" class="img-circle img-responsive"> <h3> @item.FirstName @item.LastName <small>@item.Title</small> </h3> <p>@item.Notes</p> </div> } </div> Bootstrap 验证样式默认情况下ASP.NET MVC项目模板支持unobtrusive 验证并且会自动添加需要的JavaScript库到项目里。然而默认的验证不使用Bootstrap指定的CSS。当一个input元素验证失败,JQuery validation插件会为元素添加input-validation-error class(存在Site.css中)。那怎样不修改JQuery Validation插件而且使用Bootstrap内置的错误样式呢? Bootstrap提供了class为has-error中的样式(label字体变为红色,input元素加上红色边框)来显示错误: <div class="form-group has-error"> @Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" }) <div class="col-md-10"> @Html.TextBoxFor(m => m.UserName, new { @class = "form-control" }) </div> </div> 所以,我需要动态来为<div class=' from-group'>元素动态绑定/移除has-error。为了不修改JQuery.validation插件,我在Scripts文件夹中添加jquery.validate.bootstrap文件: $.validator.setDefaults({ highlight: function (element) { $(element).closest('.form-group').addClass('has-error'); }, unhighlight: function (element) { $(element).closest('.form-group').removeClass('has-error'); }, }); 这段脚本的通过调用setDefaults方法来修改默认的JQuery validation 插件设置。看以看到我使用highlight和unhighlight方法来动态添加/移除has-error class。 最后将它添加到打包文件中 bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( "~/Scripts/jquery.validate.js", "~/Scripts/jquery.validate.unobtrusive.js", "~/Scripts/jquery.validate.bootstrap.js"));
ASP.NET MVC创建包含Bootstrap样式编辑模板
编辑模板(Editor Template)指的是在ASP.NET MVC应用程序中,基于对象属性的数据类型通过Razor视图渲染后,自动产生表单Input元素。ASP.NET MVC包含了若干的编辑模板,当然我们也可以实现扩展。编辑模板类似于局部视图,不同的是,局部视图通过name来渲染,而编辑模板通过类型来渲染。 举个栗子,@Html.EditorFor(model => model.Property),如果Property类型为string,那么@Html.Editor 会创建一个Type=Text的Input元素;如果Property类型为Password,那么会创建一个Type=Password的Input元素。所以EditorFor helper是基于model 属性的数据类型来渲染生成HTML。 不过美中不足的是,默认产生的HTML如下所示:
可以看到class=”text-box single-line”,但先前提到过,Bootstrap Form元素class必须是 form-control。 所以,为了让Editor helper生成class为form-control的表单元素,我们需要创建一个自定义的编辑模板来重写旧的模板。你需要如下操作:
@model string @Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "form-control" }) 在上述代码中,我们调用 @Html.TextBox方法,并且传递了一个空的字符串作为textbox的name。这将会让model的属性名作为生成的textbox的name,并且textbox显示的内容是model的值,最后追加了名为class的attribute,而且其值为”form-control”。 重新生成项目,发现新生成的input元素它的class已经改为”form-control“了。如下所示:
ASP.NET MVC能让开发者创建根据自定义DataType的编辑模板,比如自动生成多行文本框并且规定行数为3行,也是同样的操作:
@model string @Html.TextArea("", ViewData.TemplateInfo.FormattedModelValue. ToString(), new { @class = "form-control", rows = 3 })
[DataType(DataType.MultilineText)] public string Description { get; set; } 最终显示如下所示:
小结
Bootstrap 栅格(Grid)系统在移动互联网的今天,越来越多的网站被手机设备访问,移动流量在近几年猛增。Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。 栅格参数Bootstrap 3提供了一系列的预定义class来指定列的尺寸,如下所示: Bootstrap 栅格系统被分割为12列,当布局你的网页时,记住所有列的总和应该是12。为了图示,请看如下HTML所示: <div class="container"> <div class="row"> <div class="col-md-3" style=""> <h3>green</h3> </div> <div class="col-md-6" style=""> <h3>red</h3> </div> <div class="col-md-3" style=""> <h3>blue</h3> </div> </div> </div> 注:Bootstrap 需要为页面内容和栅格系统包裹一个 .container 容器。 在上述代码中,我添加了一个class为container的div容器,并且包含了一个子的div元素row(行)。row div元素依次有3列。其中2列包含了col-md-3的class、一列包含了col-md-6的class。当他们组合在一起时,他们加起来总和是12.但这段HTML代码只作用于显示器分辨率>=992的设备。所以为了更好的响应低分辨率的设备,我们需要结合不同的CSS栅格class。故添加对平板、手机、低分辨率的PC的支持,需要加入如下class: <div class="container"> <div class="row"> <div class="col-xs-3 col-sm-3 col-md-3" style=""> <h3>green</h3> </div> <div class="col-xs-6 col-sm-6 col-md-6" style=""> <h3>red</h3> </div> <div class="col-xs-3 col-sm-3 col-md-3" style=""> <h3>blue</h3> </div> </div> </div> Bootstrap HTML元素Bootstrap已经为我们准备好了一大堆带有样式的HTML元素,如:
Bootstrap Tables(表格)Bootstrap为HTML tables提供了默认的样式和自定义他们布局和行为的选项。为了更好的演示,我使用精典的Northwind示例数据库以及如下技术:
打开Visual Studio,创建一个ASP.NET MVC的项目,默认情况下,VS已经为我们添加了Bootstrap的文件。为了查看效果,按照如下的步骤去实施:
public class ProductViewModel { public int ProductId { get; set; } public string ProductName { get; set; } public decimal? UnitPrice { get; set; } public int? UnitsInStock { get; set; } public bool Discontinued { get; set; } public string Status { get; set; } }
Mapper.CreateMap<Product, ProductViewModel>() .ForMember(dest => dest.Status, opt => opt.MapFrom (src => src.Discontinued ? "danger" : src.UnitPrice > 50 ? "info" : src.UnitsInStock < 20 ? "warning" : ""));
public class ProductController : Controller { // // GET: /Product/ private readonly ApplicationDbContext _context; public ProductController(ApplicationDbContext context) { this._context = context; } public ActionResult Index() { var products = _context.Products.Project().To<ProductViewModel>().ToArray(); return View(products); } }
View Code
呈现的数据如下所示: Bootstrap Tables 其余样式Bootstrap提供了额外的样式来修饰table。比如使用table-bordered来显示边框,table-striped显示奇偶数行间颜色不同(斑马条纹状),table-hover顾名思义,当鼠标移动行时高亮,通过添加 .table-condensed 类可以让表格更加紧凑,单元格中的内补(padding)均会减半,修改后的代码如下所示: <table class="table table-bordered table-striped table-hover"> </table> 显示的效果如下: Bootstrap上下文Table 样式Bootstrap提供了额外的class能让我们修饰<td>和<tr>的样式,提供的class如下:
修改上述代码,为<tr>动态添加样式: @foreach (var item in Model) { <tr class="@item.Status"> <td> @Html.DisplayFor(modelItem => item.ProductName) </td> <td> @Html.DisplayFor(modelItem => item.UnitPrice) </td> <td> @Html.DisplayFor(modelItem => item.UnitsInStock) </td> <td> @Html.DisplayFor(modelItem => item.Discontinued) </td> </tr> } 更新过后的效果如下所示: Bootstrap ButtonsBootstrap提供了许多各种不同颜色和大小的buttons,为核心的buttons提供6种颜色和4种尺寸可以选择,同样通过设置class属性来显示不同的风格: • btn btn-primary btn-xs • btn btn-default btn-sm • btn btn-default • btn btn-sucess btn-lg 可以为Button设置颜色的class: • btn-default • btn-primary • btn-success • btn-info • btn-warning • btn-danger 所以可以使用如下代码来呈现效果: <div class="row"> <!-- default按钮 --> <button type="button" class="btn btn-default btn-xs"> Default & Size=Mini </button> <button type="button" class="btn btn-default btn-sm"> Default & Size=Small </button> <button type="button" class="btn btn-default">Default</button> <button type="button" class="btn btn-default btn-lg"> Default & Size=Large </button> </div> 显示效果如下: Bootstrap Form(表单)表单常见于大多数业务应用程序里,因此统一的样式有助于提高用户体验,Bootstrap提供了许多不同的CSS样式来美化表单。
使用ASP.NET MVC的HTML.BeginForm可以方便的创建一个表单,通过为<form>添加名为form-horizontal的class来创建一个Bootstrap 水平显示表单。
View Code
上述代码中,使用class为form-group的<div>元素包裹了2个Html方法(Html.LabelFor、Html.TextboxFor),这能让Bootstrap 验证样式应用在form 元素上,当然你也可以使用Bootstrap 栅格col-* class来指定form 中元素的宽度,效果如下显示:
Bootstrap基础表单默认情况下是垂直显示内容,在Html.BeginForm帮助方法里移除class为form-horizontal和class col-*后,显示的效果如下:
内联表单表示所有的form 元素一个接着一个水平排列,只适用于视口(viewport)至少在 768px 宽度时(视口宽度再小的话就会使表单折叠)。 记得一定要添加 label 标签,如果你没有为每个输入控件设置 label 标签,屏幕阅读器将无法正确识别。对于这些内联表单,你可以通过为label 设置 .sr-only 类将其隐藏。详细代码如下:
View Code
显示效果如下: Bootstrap Image在 Bootstrap 3.0中,通过为图片添加 .img-responsive 类可以让图片支持响应式布局。其实质是为图片设置了 max-width: 100%;、 height: auto; 和 display: block; 属性,从而让图片在其父元素中更好的缩放。 通过为 <img> 元素添加以下相应的类,可以让图片呈现不同的形状。
请看如下代码: <div class="row"> <h3>Our Team</h3> @foreach (var item in Model) { <div class="col-md-4"> <img src="@Url.Content("~/Images/employees/" + item.EmployeeID + ".png")" alt="@[email protected]" class="img-circle img-responsive"> <h3> @item.FirstName @item.LastName <small>@item.Title</small> </h3> <p>@item.Notes</p> </div> } </div> Bootstrap 验证样式默认情况下ASP.NET MVC项目模板支持unobtrusive 验证并且会自动添加需要的JavaScript库到项目里。然而默认的验证不使用Bootstrap指定的CSS。当一个input元素验证失败,JQuery validation插件会为元素添加input-validation-error class(存在Site.css中)。那怎样不修改JQuery Validation插件而且使用Bootstrap内置的错误样式呢? Bootstrap提供了class为has-error中的样式(label字体变为红色,input元素加上红色边框)来显示错误: <div class="form-group has-error"> @Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" }) <div class="col-md-10"> @Html.TextBoxFor(m => m.UserName, new { @class = "form-control" }) </div> </div> 所以,我需要动态来为<div class=' from-group'>元素动态绑定/移除has-error。为了不修改JQuery.validation插件,我在Scripts文件夹中添加jquery.validate.bootstrap文件: $.validator.setDefaults({ highlight: function (element) { $(element).closest('.form-group').addClass('has-error'); }, unhighlight: function (element) { $(element).closest('.form-group').removeClass('has-error'); }, }); 这段脚本的通过调用setDefaults方法来修改默认的JQuery validation 插件设置。看以看到我使用highlight和unhighlight方法来动态添加/移除has-error class。 最后将它添加到打包文件中 bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( "~/Scripts/jquery.validate.js", "~/Scripts/jquery.validate.unobtrusive.js", "~/Scripts/jquery.validate.bootstrap.js"));
ASP.NET MVC创建包含Bootstrap样式编辑模板
编辑模板(Editor Template)指的是在ASP.NET MVC应用程序中,基于对象属性的数据类型通过Razor视图渲染后,自动产生表单Input元素。ASP.NET MVC包含了若干的编辑模板,当然我们也可以实现扩展。编辑模板类似于局部视图,不同的是,局部视图通过name来渲染,而编辑模板通过类型来渲染。 举个栗子,@Html.EditorFor(model => model.Property),如果Property类型为string,那么@Html.Editor 会创建一个Type=Text的Input元素;如果Property类型为Password,那么会创建一个Type=Password的Input元素。所以EditorFor helper是基于model 属性的数据类型来渲染生成HTML。 不过美中不足的是,默认产生的HTML如下所示:
可以看到class=”text-box single-line”,但先前提到过,Bootstrap Form元素class必须是 form-control。 所以,为了让Editor helper生成class为form-control的表单元素,我们需要创建一个自定义的编辑模板来重写旧的模板。你需要如下操作:
@model string @Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "form-control" }) 在上述代码中,我们调用 @Html.TextBox方法,并且传递了一个空的字符串作为textbox的name。这将会让model的属性名作为生成的textbox的name,并且textbox显示的内容是model的值,最后追加了名为class的attribute,而且其值为”form-control”。 重新生成项目,发现新生成的input元素它的class已经改为”form-control“了。如下所示:
ASP.NET MVC能让开发者创建根据自定义DataType的编辑模板,比如自动生成多行文本框并且规定行数为3行,也是同样的操作:
@model string @Html.TextArea("", ViewData.TemplateInfo.FormattedModelValue. ToString(), new { @class = "form-control", rows = 3 })
[DataType(DataType.MultilineText)] public string Description { get; set; } 最终显示如下所示:
小结
|
请发表评论