HTML5的结构和语义——语义性的块级元素(三)

     HTML 5 还增加了一些纯语义性的块级元素: 
aside figure  dialog
我在文章和书中一直使用前两个元素。第三个元素我不经常用,它主要用于书面文本。 
aside
aside 元素代表说明、提示、边栏、引用、附加注释等,也就是叙述主线之外的内容。例如,在 developerWorks 文章中,常常会看到用表格形式编写的边栏,见代码3 用 HTML 4 编写的 developerWorks 边栏。

   1: <table align="right" border="0" cellpadding="0" cellspacing="0" width="40%">
   2: <tbody><tr><td width="10">
   3: <img alt="" src="//www.ibm.com/i/c.gif" height="1" width="10"></td>
   4: <td>
   5: <table border="1" cellpadding="5" cellspacing="0" width="100%">
   6: <tbody><tr><td bgcolor="#eeeeee">
   7: <p><a name="xf-value"><span class="smalltitle">.xf-value</span></a></p>
   8: <p>
   9: The <code type="inline">.xf-value</code> selector used here styles the input
  10: field value but not its label. This is actually inconsistent
  11: with the current CSS3 draft. The example really should use the
  12: <code type="inline">::value</code> pseudo-class instead like so:
  13: </p>
  14: <table border="0" cellpadding="0" cellspacing="0" width="100%">
  15: <tbody><tr><td class="code-outline">
  16: <pre class="displaycode">input::value { width: 20em; }
  17: #ccnumber::value { width: 18em }
  18: #zip::value { width: 12em }
  19: #state::value { width: 3em  }</pre>
  20: </td></tr></tbody></table><br>
  21:  
  22: <p>
  23: However, Firefox doesn't yet support this syntax. 
  24: </p>
  25: </td></tr></table>

  在 HTML 5 中,可以按照更有意义的方式编写这个边栏,见代码4 用 HTML 5 编写的 developerWorks 边栏。

   1: <aside>
   2: <h3>.xf-value</h3>
   3: <p>
   4: The <code type="inline">.xf-value</code> selector used here styles the input
   5: field value but not its label. This is actually inconsistent
   6: with the current CSS3 draft. The example really should use the
   7: <code type="inline">::value</code> pseudo-class instead like so:
   8: </p>
   9:   
  10: <pre class="displaycode">input::value { width: 20em; }
  11: #ccnumber::value { width: 18em }
  12: #zip::value { width: 12em }
  13: #state::value { width: 3em  }</pre>
  14:  
  15: <p>
  16: However, Firefox doesn't yet support this syntax. 
  17: </p>
  18: </aside>

  浏览器可以决定把这个边栏放在哪里(可能需要用一点儿 CSS 代码)。 
figure

figure 元素代表一个块级图像,还可以包含说明。例如,在许多 developerWorks 文章中,可以看到代码5 用 HTML 4 编写的 developerWorks 图 这样的标记其结果见图1。

   1: <a name="fig2"><b>Figure 2. Install Mozilla XForms dialog</b></a><br />
   2: <img alt="A Web site is requesting permission to install the following item: 
   3:    Mozilla XForms 0.7 Unsigned" 
   4:   src="installdialog.jpg" border="0" height="317" hspace="5" vspace="5" width="331" />
   5: <br />

图 1. Install Mozilla XForms dialog 

   在 HTML 5 中,可以按照更有语义性的方式编写这个图,见代码6 用 HTML 5 编写的 developerWorks 图。

   1: <figure id="fig2">
   2:   <legend>Figure 2. Install Mozilla XForms dialog</legend>
   3:   <img alt="A Web site is requesting permission to install the following item: 
   4:     Mozilla XForms 0.7 Unsigned" 
   5:     src="installdialog.jpg" border="0" height="317" hspace="5" vspace="5" width="331" />
   6: </figure>

    最重要的是,浏览器(尤其是屏幕阅读器)可以明确地将图和说明联系在一起。 
figure 元素不只可以显示图片。还可以使用它给 audio、video、iframe、object 和 embed 元素加说明。 
dialog

dialog 元素表示几个人之间的对话。HTML 5 dt 元素可以表示讲话者,HTML 5 dd 元素可以表示讲话内容。所以,在老式浏览器中也可以以合理的方式显示对话。代码7 显示在 Galileo 的  “Dialogue Concerning the Two Chief World Systems” 上的一段著名对话。 
代码7. 用 HTML 5 编写的 Galilean 对话

   1: <dialog>
   2:     <dt>Simplicius </dt> 
   3:     <dd>According to the straight line AF,
   4:     and not according to the curve, such being already excluded
   5:     for such a use.</dd>
   6:  
   7:     <dt>Sagredo </dt> 
   8:     <dd>But I should take neither of them,
   9:     seeing that the straight line AF runs obliquely. I should
  10:     draw a line perpendicular to CD, for this would seem to me
  11:     to be the shortest, as well as being unique among the
  12:     infinite number of longer and unequal ones which may be
  13:     drawn from the point A to every other point of the opposite
  14:     line CD. </dd>
  15:  
  16:     <dt>Salviati </dt> 
  17:     <dd><p> Your choice and the reason you
  18:     adduce for it seem to me most excellent. So now we have it
  19:     that the first dimension is determined by a straight line;
  20:     the second (namely, breadth) by another straight line, and
  21:     not only straight, but at right angles to that which
  22:     determines the length. Thus we have defined the two
  23:     dimensions of a surface; that is, length and breadth. </p>
  24:  
  25:     <p> But suppose you had to determine a height—for
  26:     example, how high this platform is from the pavement down
  27:     below there. Seeing that from any point in the platform we
  28:     may draw infinite lines, curved or straight, and all of
  29:     different lengths, to the infinite points of the pavement
  30:     below, which of all these lines would you make use of? </p>
  31:     </dd>
  32: </dialog>

   对于这个元素的准确语法还有争议。一些人希望在 dialog 元素中嵌入非对话文本(比如剧本中的舞台说明),还有人不喜欢扩展 dt 和 dd 元素的作用。尽管在具体语法方面有争议,但是大多数人都认为以这样的语义性方式表达对话是好事情。

Read More

HTML5的结构和语义——结构

转载 52CSS

    由于缺少结构,即使是形式良好的 HTML 页面也比较难以处理。必须分析标题的级别,才能看出各个部分的划分方式。边栏、页脚、页眉、导航条、主内容区和各篇文章都由通用的 div 元素来表示。HTML 5 添加了一些新元素,专门用来标识这些常见的结构: 
· section:这可以是书中的一章或一节,实际上可以是在 HTML 4 中有自己的标题的任何东西 
· header:页面上显示的页眉;与 head 元素不一样 
· footer:页脚;可以显示电子邮件中的签名 
· nav:指向其他页面的一组链接 
· article:blog、杂志、文章汇编等中的一篇文章 
我们来考虑一个典型的 blog 主页,它的顶部有页眉,底部有页脚,还有几篇文章、一个导航区和一个边栏,见代码

  1 典型的 blog 页面

   1: <html>
   2:   <head>
   3:     <title>Mokka mit Schlag </title>
   4:  </head>
   5: <body>
   6: <div id="page">
   7:   <div id="header">
   8:     <h1><a href="http://www.elharo.com/blog">Mokka mit Schlag</a></h1>
   9:   </div>
  10:   <div id="container">
  11:     <div id="center" class="column">               
  12:       <div class="post" id="post-1000572">
  13:         <h2><a href=
  14:       "/blog/birding/2007/04/23/spring-comes-and-goes-in-sussex-county/">
  15:       Spring Comes (and Goes) in Sussex County</a></h2>
  16:         
  17:         <div class="entry">
  18:           <p>Yesterday I joined the Brooklyn Bird Club for our
  19:           annual trip to Western New Jersey, specifically Hyper
  20:           Humus, a relatively recently discovered hot spot. It
  21:           started out as a nice winter morning when we arrived
  22:           at the site at 7:30 A.M., progressed to Spring around
  23:           10:00 A.M., and reached early summer by 10:15. </p>
  24:         </div>
  25:       </div>
  26:  
  27:  
  28:       <div class="post" id="post-1000571">
  29:         <h2><a href=
  30:           "/blog/birding/2007/04/23/but-does-it-count-for-your-life-list/">
  31:            But does it count for your life list?</a></h2>
  32:         
  33:         <div class="entry">
  34:           <p>Seems you can now go <a
  35:           href="http://www.wired.com/science/discoveries/news/
  36:           2007/04/cone_sf">bird watching via the Internet</a>. I
  37:           haven't been able to test it out yet (20 user
  38:           limit apparently) but this is certainly cool.
  39:           Personally, I can't imagine it replacing
  40:           actually being out in the field by any small amount.
  41:           On the other hand, I've always found it quite
  42:           sad to meet senior birders who are no longer able to
  43:           hold binoculars steady or get to the park. I can
  44:           imagine this might be of some interest to them. At
  45:           least one elderly birder did a big year on TV, after
  46:           he could no longer get out so much. This certainly
  47:           tops that.</p>
  48:         </div>
  49:       </div>
  50:  
  51:       </div>
  52:     
  53:     <div class="navigation">
  54:       <div class="alignleft">
  55:          <a href="/blog/page/2/">« Previous Entries</a>
  56:        </div>
  57:       <div class="alignright"></div>
  58:     </div>
  59:   </div>
  60:  
  61:   <div id="right" class="column">
  62:     <ul id="sidebar">
  63:       <li><h2>Info</h2>
  64:       <ul>
  65:         <li><a href="/blog/comment-policy/">Comment Policy</a></li>
  66:         <li><a href="/blog/todo-list/">Todo List</a></li>
  67:       </ul></li>
  68:       <li><h2>Archives</h2>
  69:         <ul>
  70:           <li><a href='/blog/2007/04/'>April 2007</a></li>
  71:           <li><a href='/blog/2007/03/'>March 2007</a></li>
  72:           <li><a href='/blog/2007/02/'>February 2007</a></li>
  73:           <li><a href='/blog/2007/01/'>January 2007</a></li>
  74:         </ul>
  75:       </li>
  76:     </ul>
  77:   </div>
  78:   <div id="footer">
  79:     <p>Copyright 2007 Elliotte Rusty Harold</p>
  80:   </div>
  81: </div>
  82:   
  83: </body>
  84: </html>

    即使有正确的缩进,这些嵌套的 div 仍然让人觉得非常混乱。在 HTML 5 中,可以将这些元素替换为语义性的元素,见代码2 用 HTML5编写的典型blog页面

   1: <html>
   2:  <head>
   3:     <title>Mokka mit Schlag </title>
   4:  </head>
   5: <body>
   6:   <header>
   7:     <h1><a href="http://www.elharo.com/blog">Mokka mit Schlag</a></h1>
   8:   </header>
   9:   <section>               
  10:       <article>
  11:         <h2><a href=
  12:         "/blog/birding/2007/04/23/spring-comes-and-goes-in-sussex-county/">
  13:          Spring Comes (and Goes) in Sussex County</a></h2>
  14:         
  15:         <p>Yesterday I joined the Brooklyn Bird Club for our
  16:         annual trip to Western New Jersey, specifically Hyper
  17:         Humus, a relatively recently discovered hot spot. It
  18:         started out as a nice winter morning when we arrived at
  19:         the site at 7:30 A.M., progressed to Spring around 10:00
Read More

HTML 5.0 新一代的HTML标准~

      新千年以来,超文本标记语言(HTML)5 第一次向 HTML 中引入新的元素。新的结构元素包括 aside、figure 和section。新的内联元素包括time、meter和progress。新的内嵌元素有 video 和 audio。新的交互元素有 details、datagrid 和command
超文本标记语言(HTML)的开发到 1999 年 HTML 4 就停止了。万维网联盟(W3C)把重点转向将 HTML 的底层语法从标准通用标记语言(SGML)改为可扩展标记语言(XML),以及可缩放向量图型(SVG)、XForms 和 MathML 这些全新的标记语言。浏览器厂商则把精力放到选项卡和富站点摘要(RSS)阅读器这类浏览器特性上。Web 设计人员开始学习使用异步 JavaScript + XML(Ajax),在现有的框架下通过层叠样式表(CSS)和 JavaScript™ 语言建立自己的应用程序。但是在接下来的八年中,HTML 本身没有任何变化。

    最近,它又复活了。三家重要的浏览器厂商 — Apple、Opera 和 Mozilla Foundation — 成立了 Web Hypertext Application Technology Working Group(WhatWG)来开发传统 HTML 的新版本。最近,W3C 也注意到了这些活动,也启动了自己的新一代 HTML 项目,双方的成员有很多是相同的。这两个项目最终很可能合并。虽然很多细节还在争论之中,但下一版本 HTML 的大体轮廓已经清楚了。

     Web 开发人员从 1999 年就一直期待 HTML 的新版本(通常称为 HTML 5,但是也称为 Web Applications 1.0),现在它终于发布了。它保持了 HTML 原来的特色:没有名称空间或模式。元素不必结束。浏览器会宽容地对待错误。p 仍然是 ptable 仍然是 table

     如果在 1999 年将一位 Web 开发人员冷冻起来,现在再解冻,那么他会遇到一些新的让人迷惑的元素。是的,他熟悉的元素(比如 div)仍然保留了;但是,HTML 现在还包含 sectionheaderfooternav 等新元素。emcodestrong 仍然存在,但是增加了 metertimemimgembed 仍然可用,但是还增加了 videoaudio。但是,他仔细观察一下就会发现,这些元素实际上没什么区别。其中许多元素可能在 1999 年是开发人员需要而没有得到的。通过与他已经掌握的元素进行简单的类比,这些新元素都很容易理解。实际上,与 Ajax 或 CSS 相比,它们非常容易掌握。

     最后,当他打开 300MHz 的笔记本(运行的是 Windows 98,也是在 1999 年冷冻起来的)时,他可能对 Netscape 4 和 Windows® Internet Explorer® 5 中显示的新页面效果很吃惊。当然,这些老式浏览器不认识新元素,会完全忽略它们,但是页面仍然会显示,内容仍然是完整的。

      这并不是什么虚构的故事。HTML 5 的设计原则就是在不支持它的浏览器中能够平稳地退化。原因很简单:我们都是这样的 “原始人”。浏览器现在有选项卡、CSS 和 XmlHttpRequest,但是它们的 HTML 显示引擎仍然停留在 1999 年的水平。除了用户量大大增加之外,Web 其实在本质上没什么进步。HTML 5 考虑到了这一点。它目前为 Web 开发人员一些真正的好处,随着浏览器的缓慢升级,页面浏览者会逐渐享受到这些好处。

Read More

CSS Hacks 和 问题解决

 

这篇文章包括了8个非常有用的解决办法, 在进行css设计遇到问题时你就会用到它们.

 

———————————————————————————————————————————–

目录

  • 介绍
  • 针对浏览器的选择器
  • 让IE6支持PNG透明
  • 移除超链接的虚线
  • 给行内元素定义宽度
  • 让固定宽度的页面居中
  • 图片替换技术
  • 最小宽度
  • 隐藏水平滚动条

———————————————————————————————————————————–

一. 介绍

这篇文章包括了8个非常有用的解决办法, 在进行css设计遇到问题时你就会用到它们.

二. 针对浏览器的选择器

这些选择器在你需要针对某款浏览器进行css设计时将非常有用.

IE6及其更低版本

* html {}

IE7及其更低版本

*:first-child+html {} * html {}

仅针对IE7

*:first-child+html {}

IE7和当代浏览器

html>body{}

仅当代浏览器(IE7不适用)

html>/**/body{}

Opera9及其更低版本

html:first-child {}

Safari

html[xmlns*=""] body:last-child {}

要使用这些选择器,请将它们放在样式之前. 例如:

#content-box {
width: 300px;
height: 150px;
}
* html
#content-box {
width: 250px;
} /* overrides the above style and changes the width to 250px in IE 6 and below */

三. 让IE6支持PNG透明

一个IE6的Bug引起了大麻烦, 他不支持透明的PNG图片.

你需要使用一个css滤镜

*html #image-style {
background-image: none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="fil
ename.png", sizingMethod="scale");
}

四. 移除超链接的虚线(仅对FF有效)

FireFox下,当你点击一个超链接时会在外围出现一个虚线轮廓. 这很容易解决, 只需要在标签样式中加入 outline:none .

a{
outline: none;
}

五. 给行内元素定义宽度

如果你给一个行内元素定义宽度,那么它只是在IE6下有效. 所有的HTML元素要么是行内元素要么就好是块元素. 行内元素包括: <span>, <a>, <strong> 和 <em>. 块元素包括<div>, <p>, <h1>, <form>和<li> . 你不能定义行内元素的宽度, 为了解决这个问题你可以将行内元素转变为块元素.

span { width: 150px; display: block }

六. 让固定宽度的页面居中

为了让页面在浏览器居中显示, 需要相对定位外层div, 然后把margin设置为auto.

#wrapper {
margin: auto;
position: relative;
}

七. 图片替换技术

用文字总比用图片做标题好一些. 文字对屏幕阅读机和SEO都是非常友好的.

HTML:

<h1><span>Main heading one</span></h1>

CSS:

h1 { background: url(heading-image.gif) no-repeat; }
h1 span {
position:absolute;
text-indent: -5000px;
}
你可以看到我们对标题使用了标准的<h1>作为标签并且用css来将文本替换为图片. text-indent属性将文字推到了浏览器左边5000px处, 这样对于浏览者来说就看不见了.

关掉css,然后看看头部会是什么样子的.

八. 最小宽度

IE6另外一个bug就是它不支持 min-width 属性. min-width又是相当有用的, 特别是对于弹性模板来说, 它们有一个100%的宽度,min-width 可以告诉浏览器何时就不要再压缩宽度了.

除IE6以外所有的浏览器你只需要一个 min-width: Xpx; 例如:

.container {
min-width:300px;
}

为了让他在IE6下工作, 我们需要一些额外的工作. 开始的时候我们需要创建两个div, 一个包含另一个:

<div class="container">
<div class="holder">Content</div>
</div>

然后你需要定义外层div的min-width属性

.container {
min-width:300px;
}

这时该是IE hack大显身手的时候了. 你需要包含如下的代码:

* html .container {
border-right: 300px solid #FFF;
}
* html .holder {
display: inline-block;
position: relative;
margin-right: -300px;
}

As the browser window is resized the outer div width reduces to suit until it shrinks to the border width, at which point it will not shrink any further. The holder div follows suit and also stops shrinking. The outer div border width becomes the minimum width of the inner div.

九. 隐藏水平滚动条

为了避免出现水平滚动条, 在body里加入 overflow-x:hidden .

body { overflow-x: hidden; }

当你决定使用一个比浏览器窗口大的图片或者flash时, 这个技巧将非常有用.

———————————————————————————————————————————–

原作者: Chris Thomas 原文    译者: Rlog 

Read More