最近整理了一份HTML/CSS/JS编码规范,供大家参考。 目录: 一、HTML编码规范1. img标签要写alt属性根据W3C标准,img标签要写alt属性,如果没有就写一个空的。但是一般要写一个有内容的,根据图片想要表达的意思,因为alt是在图片无法加载时显示的文字。如下不太好的写法: <img src="company-logo.svg" alt="ABC Company Logo">
更好的写法: <img src="chime-logo.svg" alt="ABC Company">
这里就不用告诉用户它是一个Logo了,直接告诉它是ABC Compay就好了。再如: <img src="user-head.jpg" alt="User Portrait">
可改成: <img src="user-head.jpg" alt="Bolynga Team">
如果图片显示不出来,就直接显示用户的名字。 有些人偷懒就直接写个空的alt那也可以,但是在一些重要的地方还是要写一下,毕竟它还是有利于SEO. 2. 单标签不要写闭合标签为什么?因为写了也没用,还显得你不懂html规范,我们不是写XHTML。常见的单标签有img、link、input、hr、br,如下不好的写法: <img src="test.jpg">img><br/>
<input type="email" value=""/>
应改成: <img src="test.jpg"><br>
<input type="email" value="">
如果你用React写jsx模板,它就要求每个标签都要闭合,但是它始终不是原生html. 3. 自定义属性要以data-开头自己添加的非标准的属性要以data-开头,否则 w3c validator 会认为是不规范的,如下不好的写法: <div count="5">div>
应改成: <div data-count="5">div>
4. td要在tr里面,li要在ul/ol里面如下不好的写法: <div>
<li>li>
<li>li>
div>
更常见的是td没有写在tr里面: <table>
<td>td>
<td>td>
table>
如果你写得不规范,有些浏览器会帮你矫正,但是有些可能就没有那么幸运。因为标准并没有说如果写得不规范应该怎么处理,各家浏览器可能有自己的处理方式。 5. ul/ol的直接子元素只能是li有时候可能会直接在ul里面写一个div或者span,以为这样没关系: <ol>
<span>123span>
<li>ali>
<li>bli>
ol>
这样写也是不规范的,不能直接在ol里面写span,ol是一个列表,它的子元素应该都是display: list-item的,突然冒出来个span,你让浏览器如何自处。所以写得不规范就会导致在不同的浏览器会有不同的表现。 同样,tr的直接子元素都应该是td,你在td里面写tr那就乱了。 6. section里面要有标题标签如果你用了section/aside/article/nav这种标签的话,需要在里面写一个h1/h2/h3之类的标题标签,因为这四个标签可以划分章节,它们都是独立的章节,需要有标题,如果UI里面根本就没有标题呢?那你可以写一个隐藏的标题标签,如果出于SEO的目的,你不能直接display: none,而要用一些特殊的处理方式,如下套一个hidden-text的类: <style>.hidden-text{position: absolute; left: -9999px; right: -9999px}style>
<section>
<h1 class="hidden-text">Listing Detailh1>
section>
7. 使用section标签增强SEO使用section的好处是可以划分章节,如下代码: <body>
<h1>Listing Detailh1>
<section>
<h1>House Infomationh1>
<section>
<h1>LOCATIONh1>
<p>p>
section>
<section>
<h1>BUILDINGh1>
<p>p>
section>
section>
<section>
<h1>Listing Pictureh1>
section>
body>
就会被outline成这样的大纲: Listing Detail
可以使用 html5 outliner 进行实验,可以看到,我们很任性地使用了多个h1标签,这个在html4里面是不合法的。 8. 行内元素里面不可使用块级元素例如下面的写法是不合法的: <a href="/listing?id=123">
<div>div>
a>
a标签是一个行内元素,行内元素里面套了一个div的标签,这样可能会导致a标签无法正常点击。再或者是span里面套了div,这种情况下需要把inline元素显式地设置display为block,如下代码: <a href="/listing?id=123" style="display: block">
<div>div>
a>
这样就正常了。 9. 每个页面要写设置页面的渲染模式为标准模式,如果忘记写了会怎么样?忘记写了会变成怪异模式,怪异模式下很多东西渲染会有所不同,怪异模式下input/textarea的默认盒模型会变成border-box,文档高度会变成可视窗口的高度,获取window的高度时就不是期望的文档高度。还有一个区别,父容器行高在怪异模式下将不会影响子元素,如下代码: <div><img src="test.jpg" style="height:100px">div>
在标准模式下div下方会留点空白,而在怪异模式下会。这个就提醒我们在写邮件模板时需要在顶部加上,因为在本地开发邮件模板时是写html片段,没有这个的话就会变成怪异模式。 10. 要用table布局写邮件模板由于邮件客户端多种多样,你不知道用户是使用什么看的邮件,有可能是用的网页邮箱,也有可能用的gmail/outlook/网易邮箱大师等客户端。这些客户端多种多样,对html/css的支持也不一,所以我们不能使用高级的布局和排版,例如flex/float/absolute定位,使用较初级的table布局能够达到兼容性最好的效果,并且还有伸缩的效果。 另外邮件模板里面不能写媒体查询,不能写script,不能写外联样式,这些都会被邮件客户端过滤掉,样式都得用内联style,你可以先写成外联,然后再用一些工具帮你生成内联html。 写完后要实际测一下,可以用QQ邮箱发送,它支持发送html格式文本,发完后在不同的客户端打开看一下,看有没有问题,如手机的客户端,电脑的客户端,以及浏览器。 由于你不知道用户是用手机打开还是电脑打开,所以你不能把邮件内容的宽度写死,但是完全100%也不好,在PC大屏幕上看起来可能会太大,所以一般可以这样写: "border-collapse:collapse;font-family: Helvetica Neue,Helvetica,Arial;font-size:14px;width:100%;height:100%">
<tr><td align="center" valign="top"><table style="border:1px solid #ececec;border-top:none; max-width:600px;border-collapse:collapse">
<tr><td>内容1td>tr>
<tr><td>内容2td>tr>table>td>tr>table>
特别是像©这种符号,不要从UI里面直接拷一个unicode的字符过去,如果直接拷过去会比较丑,它取的是用的字体里面的符号。 17. img空src的问题有时候可能你需要在写一个空的img标签,然后在JS里面动态地给它赋src,所以你可能会这么写: <img src="" alt>
但 | ||||||||||||||
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|