首页 > 编程技术 > html

网页头部声明lang=”zh-cn”、lang=“zh”、lang=“zh-cmn-Hans”区别

发布时间:2016-9-20 18:58

我们现在使用的软件都会自动在前面加一个申明了,那么在网页头部声明lang=”zh-cn”、lang=“zh”、lang=“zh-cmn-Hans”区别是什么呢?下面我们就一起来看看吧.

 

单一的 zh 和 zh-CN 均属于废弃用法。

问题主要在于,zh 现在不是语言code了,而是macrolang,能作为语言code的是cmn(国语)、yue(粤语)、wuu(吴语)等。我通常建议写成 zh-cmn 而不是光写 cmn,主要是考虑兼容性(至少可匹配 zh),有不少软件和框架还没有据此更新。

zh-CN 的问题还在于,其实多数情况下标记的是简体中文,但是不恰当的使用了地区,这导致同样用简体中文的 zh-SG(新加坡)等无法匹配。更典型的是 zh-TW 和 zh-HK。所以其实应该使用 zh-Hans / zh-Hant 来表示简体和繁体。那么完整的写法就是 zh-cmn-Hans,表示简体中文书写的普通话/国语。一般而言没有必要加地区代码,除非要表示地区特异性,一般是词汇不一样(比如维基百科的大陆简体和新马简体)。

如何标记的例子:

简体中文页面:html lang=zh-cmn-Hans
繁体中文页面:html lang=zh-cmn-Hant
英语页面:html lang=en

需要加地区代码的情况一般比较少,除非为了强调不同地区汉语使用差异。比如:

<p lang="zh-cmn-Hans">
<b lang="zh-cmn-Hans-CN">菠萝</b>和<b lang="zh-cmn-Hant-TW">?梨</b>其实是同一种水果。只是大陆和台湾称谓不同,且新马一带的称谓也是不同的,称之为<b lang="zh-cmn-Hans-SG">黄梨</b>。
</p>
当然,由于历史原因,有时候不得不继续使用zh-CN。比如中文维基百科,沿用了传统的zh-CN/zh-HK/zh-SG/zh-TW(按照标准应该使用 zh-cmn-Hans-CN、zh-cmn-Hant-HK、zh-cmn-Hans-SG、zh-cmn-Hant-TW)。这时候,合理的软件行为,是将 zh-CN 等转化为 zh-cmn-Hans(即转化为最常见的误用所对应的实际标准写法)。

实际上,各相关标准,也存在一定的滞后。例如CSS的:lang选择器,不支持选择仅仅简体/繁体中文(而不管是cmn或是yue或是min等汉语方言)。理想情况是CSS3对:lang选择器的语法进行升级,即BCP 47中的高级匹配算法,支持 :lang(*-Hans)这样的写法。

表单元素对齐我碰到很多次都对不上去了,下文一聚教程小编来为各位整理一篇HTML实现表单元素对齐的例子,希望文章能够对各位带来帮助。

网页里,常见如下的表单代码:

<div>
  <label for='email'>邮箱地址:</label>
  <input name='email' type='text'/>
</div>
<div>
  <label for='password'>密码:</label>
  <input name='password' type='text'/>
</div>
通常,我们想达到下面这种排版效果:

邮箱地址:


密码:


Bootstrap 里是这么写1:

<form class="form-horizontal">
  <div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
    <div class="col-sm-10">
      <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
    </div>
  </div>
  <div class="form-group">
    <label for="inputPassword3" class="col-sm-2 control-label">Password</label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
    </div>
  </div>
</form>

代码中用到了 grid,然后两个 label 设定同样的宽度,并且 label 内的文本右对齐。

但如果不考虑移动端的情况的话,我觉得可以这样写:

<style>.u-textRight { text-align: right !important; }</style>

<div class='u-textRight'>
  <label for='email'>邮箱地址:</label>
  <input name='email' type='text'/>
</div>
<div class='u-textRight'>
  <label for='password'>密码:</label>
  <input name='password' type='text'/>
</div>


label 与 input 都是 inline 元素,我在它们的包含块上设定右对齐,这样不需要给 label 指定宽度,代码也更简洁。

HTML实现表单元素对齐的例子

由于国内好几个浏览器都是双核浏览器(蛋痛,做一个浏览器壳就说国产,而且使用率高),有时打开网页会出现不兼容模式,在极速模式下是好的,现在我们来用代码实现网页自动调用国内双核浏览器的极速模式。

国内的主流浏览器都是双核浏览器:基于Webkit内核用于常用网站的高速浏览。基于IE的内核用于兼容网银、旧版网站.
代码示例
在head标签中添加一行代码:

<html>
  <head>
    <meta name="renderer" content="webkit|ie-comp|ie-stand">
  </head>
  <body>
  </body>
</html>

content的取值为webkit,ie-comp,ie-stand之一,区分大小写,分别代表用webkit内核,IE兼容内核,IE标准内核。
若页面需默认用极速核,增加标签:<meta name="renderer" content="webkit">
若页面需默认用ie兼容内核,增加标签:<meta name="renderer" content="ie-comp">
若页面需默认用ie标准内核,增加标签:<meta name="renderer" content="ie-stand">

各渲染内核的技术细节

内核     Webkit     IE兼容     IE标准
文档模式     Chrome 21     IE6/7     IE9/IE10/IE11(取决于用户的IE)
HTML5支持     YES     NO     YES
ActiveX控件支持     NO     YES     YES

各内核UA示例

网页自动调用国内双核浏览器的极速模式的实现方法

 

刚来公司上班的时候,看到以前的程序员写的程序里面调用http地址是,不是用http而是用双斜杠//开头,刚开始不知道这样写有什么好处,虽然能够正常浏览,后来在网上找了资料,才发现原来是这么回事。

不知道大家有没有见过下面这种 url 写法:

<IMG" width=100% src="file://xxx.net/img/logo.png">

img 中的url是以双斜杠“//”开头的,这种写法有特殊的用途,它会判断当前的页面协议是http 还是 https 来决定请求 url 的协议。防止IE下出现“This Page Contains Both Secure and Non-Secure Items”的报错。

在img中以双斜杠//开头的URL是有何作用?

但是当你浏览本地文件的时候,它会解析为 file:// 协议。这种特性可以用来加载CDN:

也适用于CSS:

.omgomg { background: url(//lvtao.net/lvtao.gif); }

注意:如果在IE7,IE8中使用 和 @import 引入 CSS 的时候,会下载两次 CSS 文件。

参考:http://www.paulirish.com/2010/the-protocol-relative-url/

标签:[!--infotagslink--]

您可能感兴趣的文章: