2013-08-20 96 views
3

我在joomla2.5模板中找到以下代码令人惊讶的惊讶:beez5为什么必须使用html5?

<?php if(!$templateparams->get('html5', 0)): ?> 
     <div id="header"> 
      <?php else: ?> 
     <header id="header"> 
      <?php endif; ?> 

呀!这是HTML5的年龄,但代码是询问浏览器是否支持html5,然后添加<header id="header">标签,否则添加<div id="header">。为什么模板不使用<div id="header">而不是两者?

问题:旧标记<div id="header">和新标记<header id="header">有什么区别?如果浏览器支持html5,那么当使用<header id="header">时,它的行为与<div id="header">不同吗?

+0

Afaik的主要区别在于它更清晰这种方式。一个div可以是任何东西,但是标题是标题,并且不应该在某个页面上更频繁地出现。此外,它可能会帮助你的CSS,但我不太确定这个...。 – Shimu

+1

“但代码是问浏览器是否支持html5” - 这看起来不像是检查浏览器,它看起来像检查配置(仅适用于服务器端配置)。 – hvd

+0

[W3C本身说](http://www.w3.org/wiki/Generic_containers_-_the_div_and_span_elements)(关于div和span)“它们是”最后一招“的标记,只能用于没有其他HTML元素符合法案,因为它们对于辅助技术,搜索引擎等毫无意义。“ –

回答

5

PHP是一种服务器端语言,它不会在客户端进行任何检查,只在服务器端进行。

HTML 5更语义正确的,使用<header>而不是使用<div>ID头提供更好SEO,是更容易网络爬虫发现,并提供更好的易用性(即屏幕阅读器或一些其它装置可以很容易地涉及以什么headers,footers,sections表示)。

+1

很好的答案。另外不要忘记网络爬虫。 – freakish

+0

它只是语义。如果浏览器不支持某个标签,它会以不同的方式处理它。这可能会导致布局组成问题。 – Krasimir

+0

@freakish - 将其添加到 - 谢谢 –

-1

不久,当浏览器看到一个不支持的标记为的未知元素。这意味着它会以不同的方式对待它。它将改变它的DOM树构造,它不会应用你认为该元素具有的默认样式。更多关于这个here

-2

<div id="header"><header id="header">之间没有区别。这是为了帮助代码清晰,并且调用标签而不是id。通常你可以使用<header>,它的工作原理是一样的。小心,只有支持html5的新浏览器才会支持我的想法。

相关问题