HTML的隐藏功能


110

HTML是最广泛使用的语言(至少作为一种标记语言)尚未得到应有的重视。
考虑到它已经存在了很多年,因此FORM / INPUT控件之类的东西仍然保持不变,没有添加任何新控件。

因此,至少从现有功能中,您知道不为人所知但非常有用的任何功能。

当然,这个问题是基于以下方面:

JavaScript的
隐藏功能CSS的
隐藏功能C#的
隐藏功能VB.NET的
隐藏功能Java的
隐藏功能经典ASP的
隐藏功能ASP.NET的
隐藏功能Python的
隐藏功能Python的隐藏功能TextPad的
隐藏功能Eclipse的隐藏功能

不要提及HTML 5.0的功能,因为它正在起草中

请为每个答案指定一项功能

Answers:


244

使用与协议无关的绝对路径:

<img src="//domain.com/img/logo.png"/>

如果浏览器正在通过HTTPS使用SSL查看页面,则它将使用https协议请求该资产,否则将通过HTTP请求该资产。

这样可以防止IE中出现可怕的“此页面同时包含安全和非安全项目”错误消息,从而使所有资产请求都保持在同一协议内。

警告:在样式表的<link>或@import上使用时,IE7和IE8 将文件下载两次。但是,所有其他用途都很好。


29
那不是HTML功能,而是URL / URI功能。
Gumbo

44
@Gumbo:的确,这是URI功能,但我认为它足以弯曲规则并将其包含在此处。而且我不希望URI规范的任何隐藏功能很快就会出现。:)
Paul Irish

2
一个斜线是相对于域部分而不是协议部分的
斜线

2
IE实在是太笨了!为什么f ***会两次将文件DL删除?

5
有一个主要缺点:将文件保存到磁盘并使用file:协议进行访问时,浏览器将无法找到资源(例如CDN或其他外部服务器的资源)。
马塞尔·科佩尔

138

标签标记使用“ for”属性在逻辑上将标签与表单元素链接。大多数浏览器都将其转换为激活相关表单元素的链接。

<label for="fiscalYear">Fiscal Year</label>
<input name="fiscalYear" type="text" id="fiscalYear"/>

24
是的,令人惊讶的是很少有网站积极使用此功能。我见过使用js来执行此操作的网站...
Boris Callens

2
是最近才发现的。
阿尼斯·拉普萨

4
cagdas,HTML中没有真正隐藏的功能,这是指定的标准。
眼睑失明

54
要扩展答案,还可以在输入上加上标签,并省略for属性:<label>财政年度<input name =“ fiscalYear” type =“ text” /> </ label>
眼睑失明2009年

32
不使用复选框和单选按钮将构成犯罪。
Kornel

136

(IE,Firefox和Safari)的contentEditable属性

<table>
    <tr>
      <td><div contenteditable="true">This text can be edited<div></td>
      <td><div contenteditable="true">This text can be edited<div></td>
    </tr>
</table>

这将使单元格可编辑!继续吧,如果您不相信我,请尝试一下。


7
这些问题需要未通过HTML5引入的新特性
昆廷-

15
David Dorward,说它是HTML5引入的,这是不公平的,因为contentEditable是MS在IE 5.5中引入的,但是是的,直到HTML5才被标准化。Tyson&Steve,contentEditable是在2.0版中引入Safari的,但是直到3.x才添加了许多重要的格式化方法。Victor H Valle,取决于您的文档类型。HTML 4折叠时应将其扩展为=“ true”。
眼睑失明

2
try it链接没有找到合适的例子
Gordon Gustafson

4
@Binoj-绝对不是。“ contenteditable属性是一个枚举属性,其关键字为空字符串,true和false” -w3.org/TR/html5/editing.html
Quentin

2
更好的是,将以下内容添加为书签,以便编辑您正在访问的任何网页:javascript:document.body.contentEditable ='true'; document.designMode ='on'; void(0);
Amro,

102

我认为optgroup标签是人们不经常使用的功能之一。我与之交谈的大多数人并不倾向于意识到它的存在。

例:

<select>
  <optgroup label="Swedish Cars">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
  </optgroup>
  <optgroup label="German Cars">
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </optgroup>
</select>

不幸的是,菜单层次结构的浏览器实现还有很多不足之处。我怀疑optgroup没有太多用处,因为它的相关用例很少而且相去甚远。
眼睑失明

1
所有浏览器都应支持一级。我是一个网络论坛,在某些屏幕中,它用于在其他屏幕上将论坛列表划分为与首页相同的部分。
staticsan

@staticsan。我同意这对于将多个项目进行小分类很有用。
RichardOD

5
@eyelidlessness:我总是会看到缩进元素或使用诸如的“标题”文本的下拉列表---category---
DisgruntledGoat

4
这是我不知道的功能!
克里斯布(Chrisb)2009年

100

我最喜欢的位是基本标记,如果要使用路由或URL重写,它可以节省生命。

假设您位于:

www.anypage.com/folder/subfolder/

以下是此页面链接的代码和结果。

常规锚点:

<a href="test.html">Click here</a>

导致

www.anypage.com/folder/subfolder/test.html

现在,如果您添加基本标签

<base href="http://www.anypage.com/" />
<a href="test.html">Click here</a>

锚点现在导致:

www.anypage.com/test.html

48
您也可以只使用/images/image.png并加上一个斜杠。:-)
molf

46
基本标记是一个核心选​​项-等同于#define:如果您不对其进行跟踪,请对将来的开发人员说清楚,并使其成为站点体系结构的一个非常低级的部分,这可能会导致令人沮丧非显而易见的错误。我从不需要此,请谨慎使用。
annakata

2
是的,在尝试将CS​​S文件动态加载到页面中时,我还看到了基本标签会干扰我的JavaScript。另外,IE6中的错误要求您显式关闭标记(</ base>),该标记无效。有条件的评论可以帮助您。
avdgaag

4
请注意,基本URL不仅应用于相对URL路径,还应用于每个相对URL。因此,该引用#top将解析为根索引文档中的“顶部”和同一文档中的“顶部”。
Gumbo

17
在必须“查看源代码”并下载页面的HTML才能使用它的情况下,我发现这非常方便。下载源文件后,您可以添加具有适当href属性的BASE元素。这样,您可以在仅下载源HTML之后就可以在本地工作……而无需下载所有的javascript,css和图像。
Andy Ford

99
<img onerror="{javascript}" />

onerror 是一个JavaScript事件,将在显示小红叉(在IE中)图片之前立即触发。

您可以使用它来编写一个脚本,该脚本将使用一些有效的替代内容替换损坏的图像,从而使用户不必处理红十字会问题。

乍一看,这完全没有用,因为您以前不知道该图像是否一开始可用吗?但是,如果您考虑的话,这件事有完美的有效应用。例如:假设您正在从不受控制的第三方资源提供图像。就像我们这里的gravatar ...一样,它是从http://www.gravatar.com/提供的,尽管stackoverflow团队是可靠的,但它根本无法控制该资源。如果http://www.gravatar.com/掉线,stackoverflow可以通过使用解决此问题onerror


啊哈...如果这就是我想的那样,那么当我真正需要它时,我应该早点知道。:/
Arnis Lapsa

需要说明的是,onerror是一个javascript事件(就像onclick一样),当图像无法加载时,您可以使用它来执行操作。
耶希亚

1
Daniel Silveira,您能否澄清一下,如果图像损坏(例如404),这确实会运行错误代码吗?无论如何,这本身就是DOM功能,而不是HTML功能。
眼睑失明

2
我小气地使用了这个,指向一个不存在的图像,递归任何人???
帕拉布斯


85
<blink>

必须用于网站上的任何重要事项。最重要的网站会一瞬间将所有内容包装起来。

<marquee>

创建逼真的滚动效果,非常适合电子书等。

编辑:轻松的伙计们,这只是幽默的尝试


62
也许这个问题应该已经表明您不应该列出我们希望保持隐藏的功能。
本·布兰克

12
...我已经使用<blink>作为div的伪终端样式的一部分,该div显示代码(:before {content:“ drthomas @ house:〜$”;}:after {content:“ _”; text -decoration:眨眼;} ...太好了,我可能应该寻求帮助。=]
David说要

2
<marquee> <blink>有史以来最令人讨厌的HTML标记!!! </ blink> </ marquee>这些没有隐藏,只是出于某种原因而没有使用。
您的朋友肯

2
我将整个页面都包装在Marquee和Blink中,因为我很酷
Sphvn 2010年

3
请。<blink>的唯一合法用途是:Schroedinger的猫<blink>未</ blink>死亡。(我以为它在xkcd上,但目前无法找到。)
Christopher Creutzig,2010年

84

不太知名,但是您可以指定lowsrclowsrc在加载图片时显示src的图片:

<img lowsrc="monkey_preview.png" src="monkey.png" />

对于那些不喜欢隔行扫描图像的人来说,这是一个不错的选择。

一点琐事:暂时,此属性晦涩难懂,以至于大约2000年被用来开发Hotmail


这我不知道。可以用于“加载”动画吗?
鲍里斯·卡伦斯

2
我从Opera的“漏洞Hotmail”链接中收到欺诈警告。:o
jrista

2
这是一个安全网站,很安全。
乔伊·罗伯特

27

17
自HTML4起,该属性已被弃用-您不应在生产网站中使用该属性。
本·赫尔

67

DELINS标记删除和插入的内容:

HTML <del>sucks</del> <ins>rocks</ins>!

10
绝对不够用。
眼睑失明

2
@eyelidlessness:在标记已删除/插入的文本的情况下,根本没有足够的用处。
DisgruntledGoat

2
我可以发誓在某些时候使用StackOverflow <ins><del>在Revisions页面上,但是现在它使用<span class="diff-add"><span class="diff-delete">。:(
系统暂停

1
@DisgruntledGoat Wiki修订历史?很多用例
HorusKol 2010年

3
@Horus:肯定可以找到用途,但在宏伟的计划中,仍然不是很多情况。
DisgruntledGoat 2010年

58

按钮的标签是新的input submit标签,很多人仍然不熟悉它。例如,可以使用button标记来设置按钮中的文本样式。

<button>
    <b>Click</b><br />
    Me!
</button>

将呈现一个带有两行的按钮,第一行以粗体显示“ Click ”,第二行以“ Me!”显示。在这里尝试。


15
对于在IE <8中被破坏的漏洞感到羞耻。可以解决这些问题,但这可能很痛苦,有时您会遇到在Web服务器和服务器端编程环境之间运行的安全保护问题。
昆汀2009年

6
但是IE <8将提交元素的内容,而不是其值。我相信某些版本也会始终将其视为成功的控件(即使未单击也是如此)。
昆汀2009年

4
如果将其设置为<button contenteditable>,您也可以更改按钮文本!指向任何可以找到有效用途的人。:)
加文

4
我从来不明白为什么会有“输入”类型的提交。它不需要输入任何内容,只需提交您在其他字段上输入的内容即可。
DisgruntledGoat

3
@DisgruntledGoat:其名称/值对实际上将被发送。如果您在表单中有多个按钮(例如,编辑,删除,上移等)并且想要区分所按下的按钮,则很有用。不幸的是button,这在IE <8中不起作用,它惊人地发送了ALL button元素的名称/值对。
BalusC,2009年

56

指定要打印的CSS

<link type="text/css" rel="stylesheet" href="screen.css" media="screen" />
<link type="text/css" rel="stylesheet" href="print.css"  media="print" />

1
在几周前发现
Daniel Moura,2009年

41
不是真正隐藏的imo。
Dmitri Farkov 09年

这是常见用法。
UpTheCreek 2010年

如果您以前没有处理过,我希望您之前没有建立任何生产网站...
Kzqai 2010年

如何将其视为隐藏的?
马林(Marin)

54

<dl> <dt><dd>项目往往被人们遗忘,他们代表定义列表,定义术语与定义。

它们的工作方式类似于无序列表(<ul>),但它更像是键/值列表,而不是单个条目。

<dl>
  <dt>What</dt><dd>An Example</dd>
  <dt>Why</dt><dd>Examples are good</dd>
</dl>

另外,dl / dt / dd语义适用于类似的列表(例如,建议将结构用于对话)。
眼睑失明

2
默认的显示效果不是很好,但是人们忘记了可以使用CSS对元素进行多种样式设置。
DisgruntledGoat

18
经常被忘记的更有趣的事情是格式是键/值/值/值/值/值/键/值
Quentin

1
@D_N,我认为分歧之处在于,我认为建议的用法是定义和语义的一部分,而不是与之分离和自相矛盾。
眼睑失明

1
@D_N和@eyelidlessness-查阅布鲁斯·劳森(Bruce Lawson)关于以语义方式标记对话的说明...另外,陪审团仍在HTML5对话框元素中... brucelawson.co.uk/2006/…–
芬顿(Fenton)

52

没有完全隐藏,但是(这是IE的错),人们了解的不足 thead,tbody和tfoot以符合我的口味。你们当中有多少人知道踩脚应该出现在标记上方


1
鲍里斯·卡伦斯(Boris callens),是的,如果thead,tbody和tfoot不存在,则意味着tbody。
眼睑失明

2
如果IE5正确实施了TBODY,那么会有更多的人使用它。这是几年前的主要问题。Mozilla和Opera支持滚动TBODY,这真的很棒。不幸的是,IE5没有。
staticsan

9
它们对于打印很有用,因为它应该在每个页面的顶部和底部放置theadtfoot。遗憾的thead是,当您的表较长时,浏览器中没有重复的机制。
DisgruntledGoat

1
我知道脚踩不住脚,我觉得这很愚蠢。我将脚踩到合理的位置,出现验证器错误,将脚踩到车身上方(困惑但始终合规),然后猜猜是什么?!当您尝试突出显示表格时,浏览器(至少为FF)突出显示身体前的脚,即使它在视觉上位于身体下方!然后!!!当您将其复制到文本编辑器时,它在外观上位于主体上方。完全任意的规则。
安东尼

3
@Anthony:如果连接速度较慢,这很有意义,这意味着您可以在表格内容仍在加载时看到所有页眉和页脚。
me_and

50

wbr字断标签。从Quirksmode:

(断字)表示:“浏览器可以根据需要在此处插入换行符。” 如果浏览器认为不需要换行,则什么也不会发生。

<div class="name">getElements<wbr>ByTagName()</div>

我为浏览器提供了添加换行符的选项。当桌子有足够的空间时,对于非常大的分辨率,这将不是必需的。但是,在较小的分辨率下,这种策略性放置的换行符使表格无法变得比窗口大,从而导致水平滚动条。

&shy;在同一页面上还提到了HTML实体。这与wbr插入中断时相同,但是-添加了连字符()表示中断。有点像如何完成印刷。

一个例子:

TextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextObject


2
请注意,因为此浏览器支持不佳
ChristopheEblé09年

7
“ IE8 as IE8”不支持它,并且在Windows的Safari 3.0中存在错误。除此之外,它的支持还不错。请参阅链接中的兼容性表。
aleemb

嗯,站点参考引用将该标签标记为已弃用且无用,谁对?reference.sitepoint.com/html/wbr
ChristopheEblé,2009年

它很可能已被弃用为HTML规范的一部分,但仍可在浏览器中使用。如有疑问,请使用QuirksMode裁决(兼容性表现在由Google赞助)。
aleemb

看起来这将是下一个CSS标准中非常有用的东西!
詹姆斯

43

一个未得到充分利用的功能是,几乎每个在页面上提供可见内容的元素都可以具有'title'属性。

添加此类属性时,将鼠标“悬停”在元素上时会出现“工具提示”,并且可以用来提供非必要但有用的信息,而不会导致页面过于拥挤。(或者它可以是一种将信息添加到已经拥挤的页面的方法)


是的,“标题”属性非常有用-特别是对于要单击的元素。
史蒂夫·哈里森

6
出现的工具提示是特定于浏览器的。并非所有浏览器都会显示相同的title属性。但这是我肯定使用的不错的功能。
特拉维斯,2009年

8
title属性是有用的,但只有在适当使用时才有用。大多数浏览器在工具提示消失前仅渲染几秒钟。当设计人员感到需要用3或4行文本填充title属性,导致您不得不将鼠标悬停在上面,然后再次按下鼠标以阅读其余内容时,我会讨厌它。
priestc

将此与jQuery结合使用就等于很棒。
李维·莫里森

列维-您能举一些例子吗?
belugabob 2011年

38

将多个html / css类应用于一个标签。同样的帖子在这里

<p class="Foo Bar BlackBg"> Foo, Bar and BlackBg are css classes</p>

22
这些是HTML类,而不是CSS类。CSS没有类(它具有类选择器)。HTML类可用于CSS以外的事物。
昆汀2009年

36
哇!我根本无法克服人们发现这是“隐藏”功能的事实。我对发布某些“真正隐藏的”功能感到很愚蠢,因为对此表示支持的人甚至可能无法完全理解扩展DTD的含义。
aleemb

5
d03boy,p.foo,p.var与p.foo.bar不同。前者选择类别为“ foo”或“ var”的任何段落,后者选择两个类别的段落。
眼睑失明

5
关于HTML类的事情是一个好主意,因为它带给我一个要点-不应使html意识到css。需要更改html(尚不完全正确;))..这取决于您的命名方式和使用类的方式..不要创建以CSS属性为目标的类..使用类来标识元素是什么'。
Meandmycode

1
从技术上讲,“ Foo Bar BlackBg”是单个类,而p.foo只是p [class〜= foo]的语法糖(请参见spec)。不过,将其视为具有多个类更容易。
Tgr 2010年

34

我们都知道DTD或文档类型声明(那些使您无法使用W3C验证程序进行页面编程的声明)。但是,可以扩展DTD通过声明自定义元素的属性列表。

例如,W3C验证将这个网页失败,因为behavior="mouseover"加入<p>标签。但是,您可以通过执行以下操作使其通过:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
[
<!ATTLIST p behavior CDATA #IMPLIED>
]>

有关更多信息,请参见QuirksMode上的有关Custom DTD


10
当然,这使它成为“有效:您的自定义标记语言”,而不是“ XHTML 1.0 Transitional”
Quentin

3
+1。我不知道为什么是-1。无论如何,应该指出,浏览器支持几乎为零。
眼睑失明2009年

可以肯定的是Opera支持这一点。
Rich Bradshaw

2
@eyelidlessness它仅在XHTML中有效。在以文本/ HTML格式发送的XHTML中不起作用。
Kornel

2
esh,不是这个的粉丝。对我来说,HTML的价值在于,地球上的每个人(或多或少)都知道它的含义,因为我们所有人都使用相同的标记和属性。我不确定为什么该class属性没有足够的可扩展性。
Paul D. Waite,2009年

28

我们可以将base 64编码的字符串分配为image,JavaScript,iframe,link的source / href属性

例如

<img alt="Embedded Image" width="297" height="246" 
  src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkA..." />

div.image {
  width:297px;
  height:246px;
  background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkA...);
}

<image>
  <title>An Image</title>
  <link>http://www.your.domain</link>
  <url>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkA...</url>
</image>

<link rel="stylesheet" type="text/css"
  href="data:text/css;base64,LyogKioqKiogVGVtcGxhdGUgKioq..." />

<script type="text/javascript"
  href="data:text/javascript;base64,dmFyIHNjT2JqMSA9IG5ldyBzY3Jv..."></script>

参考资料

如何使用HTML标记构造图像?

二进制文件到Base64编码器/转换器


4
遗憾的是,IE <8不支持此功能。但是,您可以在以下浏览器中使用MHTML代替:phpied.com/mhtml-when-you-need-data-uris-in-ie7-and-
Mathias Bynens 2010

26

我最近发现了关于字段集和标签的标签。如上所述,不是隐藏的,但对表单有用。

<fieldset>说明

例:

<form>
  <fieldset>
    <legend>Personalia:</legend>
    Name: <input type="text" size="30" /><br />
    Email: <input type="text" size="30" /><br />
    Date of birth: <input type="text" size="10" />
  </fieldset>
</form>

请提供使用示例。
Binoj Antony 2009年


从aspnet mvc示例页面发现的字段集。^^
Arnis Lapsa,2009年

2
对此一无所知。以下是W3c规范:w3.org/TR/html401/interact/forms.html#h-17.10
MitMaro

字段集和图例很棒。标记表单的一种非常不错的方法。
尼尔·艾特肯

25

您可以使用object标记代替iframe来在页面中包含另一个文档:

<object data="data/test.html" type="text/html" width="300" height="200">
  alt : <a href="data/test.html">test.html</a>
</object>

57
最后,它的工作方式几乎与iframe完全一样,只是它的支持程度较低且功能较少。
昆汀2009年

IFRAME已过时,我希望我们很快就会得到更好的支持,
戈登·古斯塔夫森

12
IFRAME不会被弃用的HTML 5
扎克

是否可以防止来自嵌入式页面的XSS攻击?
匿名co夫2009年

1
我相信它与iframe一样使用SOP。
Zach

25

<optgroup>这是人们在细分<select>列表时经常会错过的一个很棒的工具。

<select>
  <optgroup label="North America">
    <option value='us'>United States</option>
    <option value='ca'>Canada</option>
  </optgroup>
  <optgroup label="Europe">
    <option value='fr'>France</option>
    <option value='ir'>Ireland</option>
  </optgroup>
</select>

是您应该使用而不是

<select>
  <option value=''>----North America----</option>
  <option value='us'>United States</option>
  <option value='ca'>Canada</option>
  <option value=''>----Europe----</option>
  <option value='fr'>France</option>
  <option value='ir'>Ireland</option>
</select>

25

大多数人也不知道您可以通过给它们一个名称/值对来区分所按下的表单按钮。例如

<form action="process" method="post">
     ...
     <input type="submit" name="edit" value="Edit">
     <input type="submit" name="delete" value="Delete">
     <input type="submit" name="move_up" value="Move up">
     <input type="submit" name="move_up" value="Move down">
</form>

在服务器端,仅通过检查与按钮名称关联的请求参数的存在即可获得按下的实际按钮。如果不是null,则按下按钮。

我见过很多不必要的 JS黑客/解决办法对于,例如,改变的形式作用或改变隐藏输入值预先根据按钮按压。简直令人惊讶。

另外,我已经看到与表格行中一样多的JS hacks /解决方法来收集多个复选框的已选中复选框。每次对表行进行选择/检查时,JS都会将行索引添加到隐藏输入元素中某个逗号分隔的值中,然后在服务器端将其进一步拆分/解析。这是由于您不知道可以为多个输入元素指定相同的名称,但使用不同的值,并且仍然可以在服务器端以数组的形式访问它们。例如

<tr><td><input type="checkbox" name="rowid" value="1"></td><td> ... </td></tr>
<tr><td><input type="checkbox" name="rowid" value="2"></td><td> ... </td></tr>
<tr><td><input type="checkbox" name="rowid" value="3"></td><td> ... </td></tr>
...

如果不了解,则会为每个复选框指定一个不同的名称,并忽略整个value属性。在某些JS-hack / free-around情况下,我还看到服务器端代码中不必要的压倒性魔术来区分已检查项目。


1
嘿..显然这是HTML的另一个隐藏功能:/;)
BalusC,2010年

1
如果表单具有多个提交按钮,并且用户单击了一个按钮,则Internet Explorer的某些版本会欣慰地告诉您的服务器它们都已被单击。精彩。
精美的2010年

1
@detly:仅当您使用<button type="submit">代替<input type="submit">:)时
BalusC 2010年

1
... buuuuut IE6也不存在问题<input type="submit">吗?(我对这个问题的记忆很模糊-我早就说服雇主不必担心IE与内部Web应用程序的兼容性,所以这不再是我的问题。但是我似乎想起了使此问题在IE6中可解决的一些障碍。 )
不错,2010年

2
这对i18n不太友好。
zneak 2010年

22

Colgroup标签

<table width="100%">
    <colgroup>
        <col style="width:40%;" />
        <col style="width:60%;" />
    </colgroup>
    <thead>
        <tr>
            <td>Column 1<!--This column will have 40% width--></td>
            <td>Column 2<!--This column ill have 60% width--></td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Cell 1</td>
            <td>Cell 2</td>
        </tr>
    </tbody>
</table>

15
以我的经验,colgroup支持充其量是最好的。
眼睑失明

WPF网格非常相似
-Binoj Antony

18

如果未指定标签的for属性<label>,则将其隐式设置为第一个孩子<input>,即

<label>Alias: <input name="alias" id="alias"></label>

相当于

<label for="alias">Alias:</label> <input name="alias" id="alias">

4
但是,此浏览器所支持的浏览器少于for属性
Quentin

4
@David-您是否有任何文档来支持这一点?我认为我从未见过浏览器不支持这种用法。我已经在IE6 / 7,FF2 / 3,Safari 3和Chrome 1/2中进行了个人测试。我没有在Opera中测试过自己,但是如果它不起作用,我会感到非常惊讶。此行为是11年前首次发布的原始HTML 4.0规范的一部分:w3.org/TR/1998/REC-html40-19980424/interact/forms.html#adef-for
Ben Blank

另外,将输入内容放在标签内也是无效的,而且在任何一个示例中,您都没有关闭输入标签!
安东尼

5
您在两个方面都错了:这是正确的做法,并且禁止输入元素的结束标记。
moo

15

按钮为链接,没有JavaScript

您可以将任何类型的文件放入表格中操作中,并且有一个充当链接的按钮。无需使用onclick事件等。您甚至可以通过在表单中​​粘贴“目标”来在新窗口中打开文件。我在应用中看不到该技术很多。

取代这个

<a href="myfile.pdf" target="_blank">Download file</a>

有了这个:

<form method="get" action="myfile.pdf" target="_blank">
    <input type="submit" value="Download file">
</form>

27
Button不会具有“将文件另存为”选项,这可能是不喜欢Adobe Acrobat接管其浏览器的用户所需要的。
Kornel

访问PDF文件时,它将具有默认浏览器行为。它可以是HTML文件,Word文件,ZIP文件或其他任何您想要的文件。
Wadih M.

锚标记在什么情况下需要onclick事件?为什么HTML的3行比1行更好?您是否可以使用按钮而不是链接的想法,这样很好,就像按钮一样?即使我对此表示怀疑,但实际上我有一个页面使用按钮而不是链接,因为该文件是在用户请求时动态创建的,所以我不希望链接到:blah.php?stuff =“ userdata”即使我走了那条路,我也不想冒险使用以文件生成脚本作为名称而不是脚本提供文件的文件名的文件名。
安东尼

1
为什么不只是将<a>标记设置为按钮样式?您的标记中似乎有很多垃圾。
UpTheCreek 2010年

2
@UpTheCreek一些Web应用程序希望与OS外观相同。例如,当用户使用Windows一个丑陋的按钮,当用户使用Mac OS X的一个美丽的按钮

13

在X秒内刷新页面的最简单方法 -META刷新

<meta http-equiv="refresh" content="600">

内容中的值表示要刷新页面的秒数。
[编辑]

<meta http-equiv="refresh" content="0; url=foobar.com/index.html">

做一个简单的重定向!
(感谢@rlb)


13
当然,确定哪些元素需要刷新,然后通过AJAX进行更新可以带来更好的用户体验……
Steve Harrison

11
META刷新在还存在用户表单活动之王的页面中并不能真正起到任何作用,因为它会中断用户表单的填写并丢弃所有工作。我认为很少有这样的刷新效果最好的情况。通常,这只是简单的出路。
罗伯特·科里特尼克

11
/ me讨厌像这样刷新的页面...应该被禁止= /
Svish

3
如果将其设置为比会话超时少一点,以通知用户其会话已超时并已被删除,这也很有用。
fforw

1
短超时中断返回按钮。
Kornel

12

<html><head><body>标签都是可选的。如果您省略它们,则解析器将在适当的位置将它们静默插入。它的在HTML中这样做完全有效的(就像隐含的一样<tbody>)。

理论上讲, HTML 是SGML应用程序。这可能是最短的有效时间 HTML 4文档:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<title//<p/

除了W3C验证程序之外,以上所有方法均无效。但是,最短有效的HTML5 text/html文档可在任何地方使用:

<!DOCTYPE html><title></title>

4
您应该谨慎做广告。上面的代码将在w3c验证器处通过带有4条警告的验证,但是DocType是HTML 4.0。HTML 4是SGML的后裔,因此保持了这种宽松的验证标准,这很整洁,但是如果将DTD更改为XHTML 1.0 STRICT,则会出现15个错误,几乎等于字符数。之所以开发XHTML是因为HTML是如此的懒惰(因此不安全),因此我们不想再利用它了。
安东尼

3
如果将HTML / SGML文档的DOCTYPE更改为XHTML / XML,您将得到毫无意义的组​​合。这很明显,我不确定您为什么要指出这一点。
Kornel

3
从技术上讲,此示例可能是有效的HTML 4,但浏览器不支持该缩写SGML语法。以下是最短的有效HTML 5文档,浏览器确实支持该文档:<!DOCTYPE html><title></title>
Brian Campbell,2009年

知道不只是从验证的角度出发,head/的兼容性如何body
kibibu 2010年

@kibibu:浏览器对此没有问题。Opera的旧版本<head>有时会在DOM中省略,但是头部内容在DOM中仍然有效。我发现的最大问题是OpenID客户端需要<head>明确显示。
Kornel

11

lang属性不是很知名,但很有用。该属性用于标识整个文档或单个元素中内容的语言。语言代码以ISO 2个字母的语言代码给出(例如,英语为“ en”,法语为“ fr”)。

这对于可以调整引号显示的浏览器等很有用。屏幕阅读器还可以从lang 属性和搜索引擎中受益。

Sitepointlang属性。

例子

对于整个文档,将语言指定为英语,除非被langDOM中较低级别的另一个属性覆盖。

<html lang="en">

在以下段落中将语言指定为瑞典语。

<p lang="sv">Ät din morgongröt och bli stor och stark!</p>

10

“!DOCTYPE”声明。不要以为这是一个隐藏的功能,但它似乎并不为人所知,但却非常有用。

例如

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd">

10
别说“强制最新的标记语言,没有一个是不可能可靠地验证文档” ... validator.w3.org/docs/help.html#faq-doctype
Svish

我认为这不再是“众所周知”。在IE 6和IE 7之间的时间段内,文档类型使用率从〜1%变为> 50%。
眼睑失明

@eyelidlessness大多数IDE都包含此标记,这就是其使用量增加的原因。我认为这个标签不是很知名。
Daniel Moura

6
使用严格的doctype可修复95%的浏览器不一致问题。
DisgruntledGoat

3
标准的一部分,被99%的开发人员使用,听起来并不像“隐藏功能”。
WhyNotHugo 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.