一、C#中方法的提取和变量的智能修改

protected void Button2_Click(object sender, EventArgs e)
{
        System.Collections.ArrayList alist =
        new System.Collections.ArrayList();
        int i;
        string arrayValue;
        for (i = 0; i < 5; i++)
        {
            arrayValue = "i = " + i.ToString();
            alist.Add(arrayValue);
        }
        for (i = 0; i < alist.Count; i++)
        {
            Response.Write("<br />" + alist[i]);
        }
}

需要将其中的以下代码提取成一个方法,供其他地方调用。

for(i=0; i<alist.Count; i++)
{
    Response.Write("<br />" + alist[i]);
}

右击所选内容,单击“重构”,再选择“提取方法”。出现“提取方法”对话框。

使用变量和对象(二者也称为符号)时,您可能希望在代码中引用符号后对其进行重命名。 但是,如果漏了重命名某个对符号的一个引用,重命名符号会导致代码中断。 因此,可以使用重构来执行重命名。

右击变量名 alist,选择“重构”,再选择“重命名”

因为网页开发人员需要频繁地执行许多编码任务,所以代码编辑器提供了一个代码段库或预先编写好的代码块。 可以将这些代码段插入页面中。Ctrl+K和S或X。

二、通过代码分离创建基本页(CodeFile和Inherits的解释)

确保选中了将代码放在单独的文件中复选框。

确保清除了选择母版页复选框。

切换到视图。该页顶部是一条将此页绑定到代码文件的 @ Page 指令。 该指令看起来类似下面的代码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebPageSeparated.aspx.cs" Inherits="WebPageSeparated" %>

页运行时,ASP.NET 动态创建表示页的类的实例。 Inherits 特性标识在从中派生 .aspx 页的代码隐藏文件中定义的类。 默认情况下,Visual Studio 使用页名称作为代码隐藏文件中的类名的基础。CodeFile 特性标识此页的代码文件。 简单地说,代码隐藏文件包含页的事件处理代码。

三、验证类控件的使用(验证控件的使用)

双击 Submit Request 按钮以为其 Click 事件创建一个处理程序,然后添加下面的示例所示的代码:

protected void buttonSubmit_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
      labelMessage.Text = "Your reservation has been processed.";
    }
}

双击 CustomValidator 控件以为其 ServerValidate 事件创建一个处理程序,然后添加下面示例所示的代码:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{try{DateTime.ParseExact(args.Value, "d",System.Globalization.DateTimeFormatInfo.InvariantInfo);args.IsValid = true;}catch{args.IsValid = false;}
}

在用户提交该页时运行该代码。 该代码使用传入处理程序的 ServerValidateEventArgs (args) 对象与该验证程序控件交互。 用户在 textPreferredDate 文本框中所输入的值作为 args 对象的 Value 属性传递。在检查用户输入是否有效后,将 args 对象的 IsValid 属性相应地设置为 true 或 false。 如果将该属性设置为 false,则该验证程序将显示其错误消息。在本示例中,该代码使用 try-catch 块确定用户输入是否可以转换为 DateTime 对象。 如果用户输入一个无效值(不符合 m/d/yyyy 日期格式的任何值),则 DateTime 对象的ParseExact 方法会引发一个异常,并执行 Catch 块。

在使用 CustomValidator 控件时,必须在任何服务器端处理期间检查 Page.IsValid属性,以确定是否通过了所有验证检查。 IsValid 属性返回该页上所有验证程序控件的累积状态。 此属性用于确保任何服务器端处理都已通过所有验证检查。

参考:http://msdn.microsoft.com/zh-cn/library/a0z2h4sw

四、使用输出缓存增强网站性能(页指令OutputCache的使用)

性能是任何 Web 应用程序的关键方面。 必须减少 Web 服务器的处理量,以便使单个请求结果响应速度更快、服务器有能力处理更多并发请求并减少中间和后端数据系统的负荷。
使用输出缓存以减少服务器的工作负荷,能够实现更佳的 ASP.NET 性能。 输出缓存是一种优化方案,可以缩短 Web 服务器响应的时间。
    通常,浏览器请求 ASP.NET 页时,ASP.NET 将创建该页的实例,运行该页中的任何代码,运行数据库查询(如果有),动态汇编此页,然后将产生的输出发送到浏览器。 输出缓存使ASP.NET 能够发送该页的预处理副本,而不用为每个请求完成此过程。 这个区别降低了 Web 服务器的处理量,从而提高了性能并获得更大的可伸缩性。

配置页级别缓存

<%@ OutputCache Duration="15" VaryByParam="none" %>

如果没有上面的配置。此页面在浏览器中出现时,将看到当前日期和时间。 按浏览器的刷新按钮,可注意到时间戳每次都会改变。

此指令配置页面以进行缓存。 Duration 特性指定页将在缓存中保留 15 秒。请注意,无论您刷新了多少次浏览器,时间显示仅每 15 秒更新一次。 这是因为请求从缓存完成,直至持续时间过时为止,此时页代码再次执行。

配置应用程序级别缓存:

将以下 XML 添加为 system.web 元素的子项:

<!-- caching section group -->
<caching>
<outputCacheSettings>
    <outputCacheProfiles>
        <add name="AppCache1" enabled="true" duration="60"/>
    </outputCacheProfiles>
</outputCacheSettings>
</caching>

将 @ OutputCache 指令更改为以下内容:

   <%@ OutputCache CacheProfile="AppCache1" VaryByParam="none" %>

这次,日期将在缓存配置文件中指定的持续时间(为 60 秒)内保持不变。

使用参数进行缓存:

@ OutputCache 指令要求您设置 VaryByParam 特性,到目前为止,此特性设置为“none”。 VaryByParam 特性使您能够配置缓存,以便 ASP.NET 根据参数(如查询字符串、窗体发布值、请求标头等)存储不同版本的页面。 您可以使用 VaryByControl 特性缓存控件的不同版本,而不是缓存页面的不同版本。

  1. 从工具箱的“标准”组中,将 TextBox 控件拖动到页面上,并将其 ID 设置为“Color”。

  2. 将 Button 控件拖动到页面上,保留默认值 Button1。

  3. 将 Button 控件的 Text 属性设置为“Change Color”。

    双击 Button 控件以创建 Click 事件处理程序。

protected void Button1_Click(Object sender, System.EventArgs e)
{
    Label1.BackColor = System.Drawing.Color.FromName(Server.HtmlEncode(Color.Text));
}

将 form 元素的 defaultbutton 特性设置为“Button1”。这会导致按下 Enter 键时将引发按钮的 Click 事件处理程序。

<%@ OutputCache Location="Server" Duration="60" VaryByParam="Color" %>

在文本框中键入颜色名称,如“红”或“蓝”,然后单击“更改颜色”。ASP.NET 缓存使用您指定的颜色的页面版本。

  1. 多次刷新页面。

    如果没有键入新的颜色名称,则日期和时间将至少有一分钟不变(在 @ OutputCache 指令的 Duration 特性中指定)。

  2. 输入新颜色,如“绿”或“紫”,然后提交页。

    这次将看到时间和新颜色一起更新。

五、创建网站导航

 

   (1)在网页上显示菜单(Menu控件和Sitemap的使用)

无论网站的复杂性如何,都需要包含一个导航菜单。 可以使用 ASP.NET 中的 Menu 控件方便地设置复杂的导航菜单,而无需编写任何代码。

Menu 控件支持多种显示模式,包括静态显示模式(完全显示菜单)和动态显示模式(当鼠标指针滑过父菜单项时显示部分菜单)。 该控件还提供静态和动态显示模式的组合,借此可将一系列根菜单项设置为静态的,而将子菜单项动态显示。

可以在设计器中为 ASP.NET Menu 控件配置一些指向网页的静态链接,也可以自动将该控件绑定到一个分层数据源(如 XmlDataSource 或 SiteMapDataSource 控件)。

1、将 Menu 控件添加到页
    2、水平放置 Menu 控件
    3、编辑 Menu 控件的项

创建绑定到站点地图的菜单

这段 XML 代码表示菜单的结构。 嵌套节点成为父节点菜单项的子菜单项。

<siteMap>
  <siteMapNode title="Home" description="Home" url="default.aspx" >
    <siteMapNode title="Products" description="Our products" 
     url="Products.aspx">
      <siteMapNode title="Hardware" 
       description="Hardware choices"
       url="Hardware.aspx" />
      <siteMapNode title="Software" 
       description="Software choices" 
       url="Software.aspx" />
    </siteMapNode>
    <siteMapNode title="Services" 
     description="Services we offer" 
     url="Services.aspx">
      <siteMapNode title="Training" 
       description="Training classes" 
       url="Training.aspx" />
      <siteMapNode title="Consulting" 
       description="Consulting services" 
       url="Consulting.aspx" />
      <siteMapNode title="Support" 
       description="Support plans" 
       url="Support.aspx" />
    </siteMapNode>
  </siteMapNode>
</siteMap>

绑定到站点地图:

现在即可创建指向 Web.sitemap 文件的导航数据源,并将 Menu 控件绑定到该数据源。

  1. 打开 Default.aspx 文件,然后切换到“设计”视图。

  2. 单击新“菜单”控件的智能标记,以显示“菜单任务”对话框。

  3. 在“菜单任务”对话框中,在“选择数据源”下拉列表中单击“新建数据源”。

    出现“数据源配置向导”对话框。

  4. 单击“站点地图”。

    在“为数据源指定 ID”下出现默认名称“SiteMapDataSource1”。

  5. 单击“确定”。

    调整静态和动态级别

Menu 控件具有两种显示模式:静态模式和动态模式。 静态显示意味着 Menu 控件始终是完全展开的。 整个结构都是可视的,用户可以单击任何部位。 在动态显示的菜单中,只有指定的部分是静态的,而只有用户将鼠标指针放置在父节点上时才会显示其子菜单项。

在上一节中创建的垂直菜单使用完全动态的显示模式,只有顶级菜单项仍为静态。 对于 Menu 控件,您能够基于鼠标指针暂停操作指定行为,并可指定菜单应为动态还是静态的。 在本节中,您将调整 Menu 控件的动态和静态质量。

将 Menu 控件的两个级别设为静态

  1. 在“设计”视图中,在 Default.aspx 页上右击第二个“Menu”控件,然后单击“属性”。

  2. 将“StaticDisplayLevels”设置为 2。

   (2)向网站添加站点导航(导航控件TreeView、SiteMapPath,数据控件SiteMapDataSource,母板页ContentPlaceHolder)

在含有大量页的任何网站中,构造一个可使用户随意在页间切换的导航系统可能颇有难度,尤其是在您更改网站时。 ASP.NET 网站导航可使您创建页的集中网站地图。本演练向您演示如何配置网站地图,以及如何使用依赖于网站地图的控件向网站中的页添加导航。

  • 创建含有示例页以及描述页布局的网站地图文件的网站。

  • 使用 TreeView 控件作为可使用户跳转到网站中任何页的导航菜单。

  • 使用 SiteMapPath 控件添加导航路径(也称为 breadcrumb),导航路径使用户能够查看从当前页向前的网站层次结构,并可沿着层次结构向回移动。

  • 使用 Menu 控件添加可使用户一次查看一级节点的导航菜单。 将鼠标指针悬停在含有子节点的节点上方会生成子节点的子菜单。

  • 在母版页上使用网站导航和控件,这样您就只需定义网站导航一次。

在 Home.aspx 页上,键入“主页”,然后将其格式设置为“标题 1”。

重复此过程,另外创建四个页,分别名为 Products.aspx、Hardware.aspx、Software.aspx 和 Training.aspx。 将页的名称(例如,“产品”)用作标题,这样当页显示在浏览器中时,您就能识别各页。

现在您有了一个网站地图和一些页,接下来可向网站添加导航。 您将使用 TreeView 控件作为可折叠的导航菜单。

  1. 打开 Home.aspx 页。

  2. 从工具箱的“数据”组中,将“SiteMapDataSource”控件拖动到页面上。

    在其默认配置中,SiteMapDataSource 控件从您在“创建网站地图”(本演练的前面部分)中创建的 Web.sitemap 文件中检索其信息,这样您就不必为该控件指定任何额外信息。

  3. 从工具箱的“导航”组中,将 TreeView 控件拖动到页面上。

  4. 在“TreeView 任务”菜单上,在“选择数据源”框中单击“SiteMapDataSource1”。

  5. 保存页。

在网站的当前状态下,导航菜单仅出现在“主页”上。 可以向应用程序中的每个页添加相同的 SiteMapDataSource 和 TreeView 控件,以便在每个页上都显示导航菜单。 但是,在本演练的稍后部分,您将看到如何将导航菜单放置在母版页上,这样导航菜单就会自动出现在每一页中。

使用 SiteMapPath 控件显示导航历史记录:

除了使用 TreeView 控件创建导航菜单外,您还可以在每个页上添加显示页位于当前层次结构中哪个位置的导航。 此类导航控件也称为 breadcrumb。 ASP.NET 提供了可自动实现页导航的SiteMapPath 控件。

  1. 打开 Products.aspx 页并切换至“设计”视图。

  2. 从工具箱的“导航”组中将 SiteMapPath 控件拖动到页面上,将光标放置在 SiteMapPath 控件前面,然后按 Enter 创建一个新行。

    SiteMapPath 控件显示当前页在页层次结构中的位置。 默认情况下,SiteMapPath 控件表示在 Web.sitemap 文件中创建的层次结构。 例如,当您显示 Products.aspx 页时,SiteMapPath 控件显示下面的路径:

    “主页”>“产品”

  3. 对您在本演练中创建的其他页重复此过程,“主页”除外。

    即使您未在每个页上放置 SiteMapPath 控件,出于测试目的,您需要在网站层次结构的每一级的页(例如,Products.aspx 和 Hardware.aspx 页)上放置一个控件。

在母版页中使用网站导航

在本演练目前为止所创建的页中,您已将网站导航控件逐个添加到了每个页。 执行此操作并不特别复杂,因为您无需以不同的方式为每个页配置控件。 但是,这可能增加网站的维护成本。 例如,若要更改网站中页的 SiteMapPath 控件的位置,您将不得不逐个更改每页。

通过在母版页中使用网站导航控件,您可以创建在一个位置包含导航控件的布局。 然后您可以将其他页显示为母版页中的内容。

  1. 在解决方案资源管理器中,右击网站的名称,然后单击“添加新项”。

  2. 在“添加新项 <路径>”对话框中:

    1. 在“Visual Studio 已安装的模板”之下单击“母版页”。

    2. 在“名称”框中,键入“Navigation.master”,然后单击“添加”。

  3. 切换到“设计”视图。

    母版页出现,其中含有默认的 ContentPlaceHolder 控件。

在下面的过程中,您将创建带有导航控件简单布局的母版页。 在实际应用程序中,您可能使用更为复杂的格式设置,但是在母版页中使用导航控件的技术都是相似的。

  1. 选择“ContentPlaceHolder”控件,按向左键,然后按 Enter。

    这将在 ContentPlaceHolder 控件的前面插入一个空行。

  2. 从工具箱中的“数据”组中,将“SiteMapDataSource”控件拖至母版页上,并将其定位在“ContentPlaceHolder”控件上方。

     注意

    不要将 SiteMapDataSource 控件放置在 ContentPlaceHolder 控件上。

    默认情况下,SiteMapDataSource 控件将使用您在“创建网站地图”(本演练的前面部分)中创建的“Web.sitemap”文件。

  3. 单击“SiteMapDataSource”控件,按向右键,然后按 Enter。

    这将在 SiteMapDataSource 控件下面插入一个空行。

  4. 在“表”菜单中,单击“插入表”,然后插入一个含有一行两列且宽度为 100% 的表。

  5. 从工具箱的“导航”组中,将“TreeView”控件拖动到表的左单元格中。

  6. 在“TreeView 任务”菜单上,在“选择数据源”框中单击“SiteMapDataSource1”。

  7. 从工具箱的“导航”组中,将“SiteMapPath”控件拖动到表的右单元格中。

  8. 在右单元格中,单击空白区域,然后按 Shift+Enter 创建一个新行。

  9. 将“ContentPlaceholder”控件拖至表的右单元格,并将其定位在“SiteMapPath”控件下面。

如果您使用母版页,则将网站中的页作为内容页创建。 内容页使用 Content 控件定义在母版页的 ContentPlaceHolder 控件中显示的文本和控件。 因此,您将不得不将“主页”、“产品”和“硬件”页作为内容页重新创建。

创建网站的内容页

  1. 在解决方案资源管理器中,右击“Home.aspx”页,单击“删除”,然后单击“确定”。

  2. 对 Products.aspx、Software.aspx、Training.aspx 和 Hardware.aspx 页以及您创建的任何其他页重复步骤 1。

    您将把这些页作为使用母版页的内容页重新创建。

  3. 在解决方案资源管理器中,右击网站的名称,然后单击“添加新项”。

  4. 在“添加新项”对话框中:

    1. 在“Visual Studio 已安装的模板”下单击“Web 窗体”。

    2. 在“名称”框中键入 Home.aspx。

    3. 选择“选择母版页”复选框。

    4. 单击“添加”。

    出现“选择母版页”对话框。

  5. 在“文件夹内容”下单击“Navigation.master”,然后单击“确定”。

    绑定到母版页(您已在前面部分创建)的内容页即已创建。

  6. 切换到“设计”视图。

    在“设计”视图中,您会看到为母版页创建的布局,其中带有对应于母版页上的 ContentPlaceHolder1 控件的可编辑区域。

  7. 单击 Content 窗口内部。

    这里是可为此特定页添加内容的地方。

  8. 键入“主页”,然后将文本格式设置为“标题 1”。

    这样,您就为“主页”创建了静态文本(具体而言就是标题)。

  9. 重复步骤 3 到 8 创建 Products.aspx 内容页和 Hardware.aspx 内容页。 在步骤 8 中,分别键入“产品”和“硬件”,而不是“主页”。

六、创建和修改 CSS 文件(div块的margin,padding,clear,width,length)

     为了使您能够将注意力集中在格式和样式的设置工具上,而不是集中在创建要进行样式设置的元素上,本节提供了一组页面元素。 您可以将这些元素复制并粘贴到页面上。 该代码包含多个由div 元素组成的代码段,其中包括标题区、左右侧栏部分、主要内容部分和页脚。 这些简单元素包含可以处理的文本和元素 ID。 在某些情况下,这些元素包含可用于设置页面上特定元素的样式的 CSS 类。

在 form 元素内,移除默认创建的空 div 元素。 在开始标记 <form> 之后添加以下代码:

<div id="pagecontainer"><div id="banner"><h1>AdventureWorks Styling Page</h1><h2>Making CSS Styling Easier in Design View</h2><div id="search">Find:<input id="searchbox" type="text" /><input id="searchbutton" type="button" value="Go" /></div>
</div>
<div id="leftsidebar" class="column"><h3>Matters of the Web</h3><p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur in sem. Vivamus adipiscing vulputate lacus. Sed enim
lorem, fringilla eget, nonummy sed, ullamcorper sit amet, diam. Sed a justo. Curabitur quis nibh sit amet nunc malesuada
rutrum.</p>
</div>
<div id="rightsidebar" class="column"><h3>Matters of the Web</h3><p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur in sem. Vivamus adipiscing vulputate lacus. Sed enim
lorem, fringilla eget, nonummy sed, ullamcorper sit amet, diam. Sed a justo. Curabitur quis nibh sit amet nunc malesuada
rutrum.</p>
</div>
<div id="maincontent" class="column"><h2>Matters of the Web</h2><p> Pellentesque mattis tincidunt ipsum. Donec tempus, nunc vitae rhoncus imperdiet, eros turpis accumsan risus, ut luctus ipsum
lacus a felis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean convallis euismod
nulla. Suspendisse potenti. Donec in mi nec odio tincidunt luctus. Donec euismod, mauris cursus molestie convallis, quam
pede tempus magna, mollis dapibus quam est et magna. Aenean eros massa, elementum vehicula, dapibus eget, lobortis non,
mauris. Vivamus nisl ante, interdum eget, sagittis vel, scelerisque nec, magna. Praesent placerat nibh vel metus viverra
tincidunt.</p><p>Fusce magna urna, gravida non, sodales vehicula, consequat ac, lacus. Ut sed eros sit amet neque malesuada
malesuada. Fusce porttitor cursus eros. Maecenas libero odio, convallis vel, tristique id, sodales vel, leo. Curabitur nibh
neque, interdum eget, convallis id, adipiscing nec, risus. Suspendisse rutrum dui sed urna. Pellentesque leo felis, tempor eu,
convallis venenatis, auctor vitae, justo. In at massa.</p>
</div>
<div id="footer"><p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit 2007.</p>
</div>
</div>

设计视图效果如下:

您可以通过以下方式将样式设置应用于页面中的各个元素:

  • 使用内联样式,它们是作为单个元素的 style 特性编写的。 这些样式规则只能应用于该元素。

  • 在页面的 HTML head 元素的 style 元素中编写样式规则。 这些样式规则只能应用于当前页中的元素。

  • 将样式规则写入外部 CSS 文件。 在这种情况下,这些样式规则可以应用于该网站中的所有页。

设置页面标题区的格式

将要进行格式设置的第一个元素是标题区部分,它包括含在 <div ID="banner"> 标记中的元素。 在此示例中,您将使用“直接样式应用”工具栏更改标题的样式和位置。 还将设置标题区域的大小并添加背景色。

设置标题区文本的格式

  1. 在“设计”视图中,单击标题区部分中的标题文本“AdventureWorks Styling Page”。

    请注意,选中部分以蓝色框包围并有一个标签指示 h1 元素已选中。

  2. 在“样式应用”工具栏的“目标规则”列表中,单击“应用新样式”。

    此时将显示“新建样式”对话框。

  3. 在“选择器”列表中单击“h1”,以使您可以创建应用于所有 h1 元素的样式。

    请注意,“定义范围”列表设置为“当前页面”。 这指示该样式规则在当前页的 style 元素中创建。

  4. 在“字体系列”列表中,选择“Impact”或通常用于标题区的其他字体。

  5. 在“字号”框中,输入或选择“xx-large”。

  6. 在“字体变体”框中,输入或选择“小型大写字母”。

  7. 单击“确定”。

  8. 若要查看已创建的样式规则,请切换到“源”视图并滚动到 style 元素,该元素位于 head 元素内。

    您可以查看已为 h1 元素创建的 CSS 样式规则。

  9. 使用下列步骤以同样的方式设置标题区中 h2 元素的样式:

    1. 将指针放在显示为“Making CSS Styling Easier in Design View”的标题中,该标题是 h2 元素。

    2. 按步骤 2 中的说明打开“新建样式”对话框。

    3. 选择 h2 元素。

    4. 将“新建样式”框中的“选择器”值设置为“h2”。

    5. 将“字体系列”设置为“comic Sans MS”,“字号”设置为“small”。

    6. 单击“确定”。

选择页面元素

在 Visual Studio 中,可通过多种方式选择页面上的元素。 您可以使用快速标记选择器,它位于“设计”视图窗格的底部。 在将插入点放在页面上的任意位置时,快速标记选择器将显示一个标明该区域的基础 HTML 的标记。 在快速标记选择器栏中,包含当前标记的标记显示在当前标记的左侧。 例如,如果插入点位于表单元格中,则 td 标记会出现在快速标记选择器栏中,其前面将是一个表行标记 tr 和一个表标记 table。

将指针移到快速标记选择器中的标记上时,标记的内容在“设计”视图中突出显示,并且标记上出现一个箭头。 可以单击此箭头来选择标记及其内容或只选择标记内容。

您还可以使用 Esc 键上移元素的层次结构。 例如,h1 元素嵌套在标题区的 div 元素中。 若要选择整个 div 元素,请单击 h1 元素将其选中,然后使用 Esc 键选择标题区 div 元素。 请注意,第一次按 Esc 键时,会突出显示 h1 元素,并显示该元素的填充和边距。 (因为您未显式设置这些,所以它们的值是默认设置。)再次按 Esc 键时,则会选中整个 div 元素。 选中该元素后,标记显示“div#banner”。

调整标题区的大小并定位标题的内容
1、调整标题区的大小(大小,背景色)
2、定位标题区中的标题元素(对齐)
3、定位标题区中的搜索 div 元素(设置位置,拖动div)

创建灵活的三列布局
1、创建侧栏列
2、调整左右侧栏 div 元素的大小并定位
3、创建居中列
4、设置居中列的样式
5、调整页脚
6、调整页脚 div 元素

三列布局效果如下:

创建和使用样式表
1、创建一个样式表并将其附加到页面
2、将样式规则从页面移到样式表
3、使用“管理样式”窗格移动样式规则

创建和使用样式表
1、创建一个样式表并将其附加到页面
2、使用“管理样式”窗格移动样式规则

<div clear="both">xxxx</div>:当块设置了float属性时,它就会脱离文档流。大多数情况下,我们希望文档流能识别float,所以用到了clear属性。clear属性可以使当前块感知它左右的float块。

CSS中的class和id的区别

body{
font-family: Arial,sans-serif;
color: #333333;
line-height: 1.166;
margin: 0px;
padding: 0px;
}

#masthead{ //id选择器
margin: 0;
padding: 10px 0px;
border-bottom: 1px solid #cccccc;
width: 100%;
}

.feature img{ //class派生选择器
float: left;
padding: 0px 10px 0px 0px;
margin: 0 5px 5px 0;
}

# 对应id
. 对应class
不加对应html 标签
一个Class是用来根据用户定义的标准对一个或多个元素进行定义的。
至于ID,通常用于定义页面上一个仅出现一次的标记。在对页面排版进行结构化布局时(比如说通常一个页面都是由一个页眉,一个报头,一个内容区域和一个页脚等组成),一般使用ID比较理想,因为一个ID在一个文档中只能被使用一次。而这些元素在同一页面中很少会出现大于一次的情况。
一句话,Class可以反复使用而ID在一个页面中仅能被使用一次。有可能在很大部分浏览器中反复使用同一个ID不会出现问题,但在标准上这绝对是错误的使用,而且很可能导致某些浏览器的现实问题。

  实际应用中,Class可能对文字的排版等比较有用,而ID则对宏观布局和设计放置各种元素较有用。

CSS中的class与id区别及用法:http://www.divcss5.com/rumen/r3.html

Learn CSS Positioning in Ten Steps:http://www.barelyfitz.com/screencast/html-training/css/positioning/

CSS Layers:http://www.echoecho.com/csslayers.htm

CSS id和class选择器和派生选择器:http://www.w3school.com.cn/css/css_syntax_id_selector.asp

参考:http://msdn.microsoft.com/zh-cn/library/bb398932

转载于:https://www.cnblogs.com/JCSU/articles/2549357.html

ASP.NET笔记(二)相关推荐

  1. ASP.NET MVC 2 学习笔记二: 表单的灵活提交

    ASP.NET MVC 2 学习笔记二:  表单的灵活提交 前面说到有做到公司内部的一个请假系统,用的是ASP.NET MVC 2+Entity Framework.虽然EF(Entity Frame ...

  2. pythonsze_python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...

  3. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  4. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  5. oracle直查和call哪个更快,让oracle跑的更快1读书笔记二

    当前位置:我的异常网» 数据库 » <>读书笔记二 <>读书笔记二 www.myexceptions.net  网友分享于:2013-08-23  浏览:9次 <> ...

  6. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  7. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  8. ASP 三十二条精华代码

    整理收藏: ASP 三十二条精华代码 1. οncοntextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键 <table b ...

  9. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  10. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

最新文章

  1. 符合自己的德国学校与专业
  2. html5日期不联动下拉框,下拉框联动问题 赋值时候失效
  3. 自定义sort函数第三个参数的规则
  4. 【HDU - 3394】Railway(点双连通分量,Tarjan算法,思维tricks)
  5. Pechkin:html - pdf 利器
  6. 【Qt开发】Qt让线程休息一段时间
  7. e生保等待期什么意思_买了保险不知道赔什么?一文看懂【保险责任】
  8. docker容器与大数据组件的冲突点
  9. 北大《人民日报》语料库标准
  10. 如何解决网站可能存在webshell网页木马,阿里云网站木马后门文件提醒
  11. CAD绘图软件_常用指令
  12. tcpClient的使用
  13. Cross-Modality Domain Adaptation
  14. 用python绘制万花筒_Python实现PS滤镜的万花筒效果示例
  15. 加强财务知识细节:营业利润,利润总额,净利润
  16. SVM之线性不可分与核技巧
  17. 梯度下降【无约束最优化问题】
  18. git基本命令与git基本命令-远程
  19. 数据库重组函数reorg
  20. matlab中yx是什么意思啊,matlab中怎样定义未知数,如x,syms是什么意思?

热门文章

  1. 资料下载:敏捷个人的成长思考.pptx(第1次线下活动2011.04)
  2. Oracle日期范围
  3. Openstak(M版)控制节点安装
  4. vsftpd 本地用户登录和上传设置
  5. Windows 编程[20] - 改变菜单项并换行
  6. QOS之NBAR 下
  7. 用户使用报告_【市场】最新手机用户使用报告 8+256GB成首选 小屏党哭了
  8. Python中的时间转换和时间获取
  9. 人工鱼群算法python_人工鱼群算法简介及应用
  10. FPGA 串口中断_一个严谨的STM32串口DMA发送amp;接收(1.5Mbps波特率)机制