前端开发规范
Posted 嘴巴嘟嘟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端开发规范相关的知识,希望对你有一定的参考价值。
注意此文章来自于腾讯开发文档官网 腾讯前端开发文档
页面头部
本章将介绍页面的标签含有的内容。包含页面的基本信息、SEO优化、双端页面跳转等。
DOCTYPE 设置
文档类型统一使用html5的doctype:
<!DOCTYPE html>
页面编码
编码默认使用GBK,特定情况下有指定要求也可以是UTF-8
<meta charset="GBK">
<meta charset="UTF-8">
页面标题(Title)
页面名称-产品中文全称-官方网站-腾讯游戏-产品slogan,28个汉字以内
<title>抓金角银角大王每周末放送装备 - 地下城与勇士官方网站 - 腾讯游戏</title>
使用场景:PC端官网及专题
显示在页面顶部,腾讯游戏所有官网以及专题需添加的TOP条,如游戏业务无特殊说明,在页面上引用组件CDN地址。
<script src="//ossweb-img.qq.com/images/js/title.js"></script>
页面关键字(Keywords)
Keywords为产品名、专题名、专题相关名词,之间用英文半角逗号隔开
<meta name="keywords" content="英雄联盟,lol,lol新手礼包,lol攻略,lol视频,lol视频攻略,英雄资料,英雄联盟战争学院,明星解说视频,101战争学院,英雄,攻略,WCG,点亮图标,赛事" />
页面描述(Description)
不超过150个字符,描述内容要和页面内容相关。
<meta name="description" content="英雄联盟官方网站,海量风格各异的英雄,丰富、便捷的物品合成系统,游戏内置的匹配、排行和竞技系统,独创的“召唤师”系统及技能、符文、天赋等系统组合,必将带你进入一个崭新而又丰富多彩的游戏世界。" />
页面Meta
- PC端Meta:
<meta charset="gbk" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="robots" content="all">
<meta name="author" content="Tencent-CP" />
<meta name="Copyright" content="Tencent" />
<meta name="Description" content="页面的描述内容" />
<meta name="Keywords" content="页面关键字" />
- 移动端Meta:
<meta charset="gbk" />
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
<!-- 为了防止页面数字被识别为电话号码,可根据实际需要添加: -->
<meta name="format-detection" content="telephone=no">
<!-- 让添加到主屏幕的网页再次打开时全屏展示,可添加: -->
<meta content="yes" name="mobile-web-app-capable">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta name="robots" content="all">
<meta name="author" content="Tencent-CP" />
<meta name="Copyright" content="Tencent" />
<meta name="Description" content="页面的描述内容" />
<meta name="Keywords" content="页面关键字" />
- 页面跳转
如为双端页面,需要自动判断跳转,PC访问移动端页面,跳转到对应的PC专题上,反之亦然。
PC端添加:
(function()
if(/android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent))var a=document.referrer,b="baidu.com":"seo_baidu","sogou.com":"seo_sogou","sm.cn":"seo_sm","so.com":"seo_360","bing.com":"seo_bing","google.com":"seo_google",c;for(c in b)if(-1!=a.indexOf(c))a=b[c];if(window.sessionStorage)sessionStorage.setItem("channel",a)elsevar d=d||0,b="";0!=d&&(b=new Date,b.setTime(b.getTime()+1000*d),b="; expires="+b.toGMTString());document.cookie="channel="+escape(a)+b+"; path=/"breakwindow.location.href="/m/"+location.search;
)();
注意
window.location.href
跳转地址 /m/
,默认为移动端官网地址;
如是专题或其他需求,需要根据实际情况将 /m/ 替换为相对应的移动端地址;
移动端添加:
if(!/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent))
window.location.href = "PC端专题地址"+location.search;
HTML规范
HTML标签
- 标签必须合法且闭合、嵌套正确,标签名需小写
- 标签语法无错误,需要符合语义化
- 标签的自定义属性以data-开头,如:
<a href="#" data-num='18'></a>
除非有特定的功能、组件要求等,禁止随意使用id来定义元素样式
链接
- 给<a> 标签加上title属性
- <a>标签的href属性必须写上链接地址,暂无的加上javascript:alert(‘敬请期待!’)
- 非本专题的页面间跳转,采用打开新窗口模式:target="_blank"
https协议自适应
将调用静态域名 ossweb-img.qq.com 以及 game.gtimg.cn 的外部请求,写法上一律去掉协议http:部分,采用自适应的写法。具体方法如下:
<style>
//CSS背景图片
.bgbackground: url(//game.gtimg.cn/images/cf/cp/a20161021sqjs/hd.jpg) no-repeat;
</style>
//链接URL
<a href="//cf.qq.com/main.shtml">进入官网</a>
//图片SRC
<img src="//game.gtimg.cn/images/cf/web201610/logo.png">
//JS链接
<script src="//ossweb-img.qq.com/images/js/title.js"></script>
FLASH
注意
页面禁止使用flash,动画使用video、CSS3、canvas等方式实现,低版本浏览器使用背景图片降级。
CSS规范
选择器
-
CSS类名命名参考注释与命名
-
禁止使用层级过深的选择器,最多3级。
错误示范:
.without-animation .book-body .body-inner .book-header .dropdown .dropdown-menu .buttons
.without-animation .book-body .body-inner .book-header .dropdown .dropdown-right .buttons
.without-animation .book-body .body-inner .book-header .pull-left .dropdown-menu .buttons
.without-animation .book-body .body-inner .book-header .pull-left .dropdown-right .buttons
.without-animation .book-body .body-inner .book-header .font-settings .dropdown-menu .buttons
.without-animation .book-body .body-inner .book-header .font-settings .dropdown-right .buttons
.without-animation .book-body .body-inner .book-header .js-toolbar-action .dropdown-menu .buttons
.without-animation .book-body .body-inner .book-header .js-toolbar-action .dropdown-right .buttons
-
除非有特定的功能、组件要求等,禁止随意使用id来定义元素样式
-
除非是样式reset需要,禁止对纯元素选择器设置特定样式,避免样式污染
错误示范:
//会导致页面所有的a标签都被加上背景
abackground:url(xxx);
//后期修改可能会添加一些span标签,如果刚好在div里面,会被污染;不利于后期维护
div spandisplay:block
pc端示例
body,dl,dd,ul,ol,h1,h2,h3,h4,h5,h6,p,form,header,section,article,footermargin:0;
body,button,input,select,textareafont:12px/1.5 tahoma,'\\5FAE\\8F6F\\96C5\\9ED1',sans-serif
h1,h2,h3,h4,h5,h6font-size:100%
em,bfont-style:normal
atext-decoration:none
a:hovertext-decoration:underline
imgborder:0
bodypadding-top:42px
button,input,select,textareafont-size:100%;outline:none
tableborder-collapse:collapse;border-spacing:0
td,th,ul,olpadding:0
移动端
/** 有较多文字的文章类页面:*/
/* 移动端常用reset.css (文字版本) */
/* reset */
html,body,div,p,ul,li,dl,dt,dd,em,i,span,a,img,input,h1,h2,h3,h4,h5 margin:0;padding:0
a,img,input border:none;
bodyfont: 14px/1.75 -apple-system, "Helvetica Neue", Helvetica, Arial, sans-serif;
a text-decoration:none;
ul,lilist-style: none
如果页面无文字,或者不希望文字被长按选中,可使用下面的reset;适合于大多数专题页面
/* 移动端常用reset.css (无文字版本) */
/* reset */
html,body,div,p,ul,li,dl,dt,dd,em,i,span,a,img,input,h1,h2,h3,h4,h5 margin:0;padding:0
a,img,input border:none;
bodyfont: 14px/1.75 -apple-system, "Helvetica Neue", Helvetica, Arial, sans-serif;-webkit-tap-highlight-color: rgba(0,0,0,0);
a text-decoration:none;
ul,lilist-style: none
a, img -webkit-touch-callout: none; /* 禁止长按链接与图片弹出菜单 */
html, body
-webkit-user-select: none; /* 禁止选中文本(如无文本选中需求,此为必选项) */
user-select: none;
提示
移动端页面不需要设置微软雅黑、宋体等字体,终端浏览器字体取决于设备上的系统字体。
图片处理
本章将介绍图片的优化、以及图片地址如何替换为上线后的CDN服务器地址。
图片优化
-
图片体积不能超过300K
-
JPG图片必须压缩,一般80%品质即可,保证文字清晰
-
JPG图片必须使用渐进式图片:使用Photoshop的“存储为web所用格式”时候,勾选“连续”
-
透明PNG图片必须使用压缩工具压缩后提供
图片标签
-
PC端img图片必须填写width、height、alt属性
-
移动端必须填写alt属性
-
alt不能为无意义字符,需要能表现出图片的含义,如图片为道具图,则应该为道具的名称
合理切图
-
需要变动的文字禁止切到图片中,如果不确定是否需要变动,请咨询接口人
-
需要程序后台动态生成的图片,如道具图片、头像、奖品,必须单独切割出来
-
装饰性图片合并成精灵图,减少页面请求
图片地址分离
专题完成,需进行图片地址分离
把图片放到ossweb-img文件夹里面,图片引用的时候src为game.gtimg.cn域名下的特定地址。
分离后示例:
/*分离前*/
.bgbackground: url(ossweb-img/hd.jpg) no-repeat;
/*分离后*/
.bgbackground: url(//game.gtimg.cn/images/xiangqi/cp/a20150730avatar/hd.jpg) no-repeat;
提示
图片必须分离;css文件、js文件可视情况,不是必须分离。
为了本地正常预览,分离前文件请使用相对路径或补全
http://
如何知道分离路径
如现在专题的是天天爱消除的一个预约活动专题,专题目录是a20090817booking,那采取下列步骤将获得分离地址:
-
百度搜索官方域名,找到官网http://peng.qq.com/地址,其中peng就是项目名的简写;确保一级域名是qq.com
-
查看官网首页源码样式表中的图片的地址,确认其中含有上一步得到的项目名;否则请找接口人确认
-
图片分离地址示例:
//game.gtimg.cn/images/peng/cp/a20090817booking/
,其中peng就是项目名的简写 -
分离地址只有项目名和专题名需要修改
-
图片跨域问题的解决:设置图片crossOrigin属性为Anonymous,同时把图片域名game.gtimg.cn换为ossweb-img.qq.com
注释与命名
本章包含页面的注释规范与文件命名、样式表类名命名规范。
注释
提示 可通过编辑器的语法高亮功能,确保HTML、CSS、JS文件中注释语法正确
页面头部需要添加制作时间等信息。
在head区域中,title标签下方的注释,按照下方格式分别加上页面设计、页面制作的公司名称,创建的年-月-日
<head>
<title>页面名称-产品中文全称-官方网站-腾讯游戏-产品slogan</title>
<!-- 页面设计:公司名称 | 页面制作:公司名称 | 创建:2017-09-09 -->
</head>
页面设计、页面制作填写具体公司名称,创建:填写页面创建的时间。
禁止注释中出现制作者的个人信息,如姓名、QQ号、邮箱等。
合理的注释有助于后期维护。
较长的的HTML文件,请在板块之间加入注释,使得结构更清晰:
...
<!-- 活动板块 开始 -->
<div class="part-act">
...
</div>
<!-- 活动板块 结束 -->
...
如果是需要和后台开发联调的自定义函数。请注明函数的调用方式,包括函数的用途、参数类型等。
// 转盘初始化
// 参数1:是奖品的个数,数字类型
// 参数2:用来旋转的圆盘元素,可为dom元素 或 选择器字符串
var panel=new PanelLotery(
length:8,
el:'#ltpanel'
);
命名
样式命名
- class、id都需小写
- 命名使用英文,禁止使用特殊字符
- 样式名不能包含ad、guanggao、ads、gg是广告含义的关键词,避免元素被网页拓展、插件屏蔽
- 名称间隔使用-符号
- 涉及数据、交互等需要联调的部分,禁止通过id选择器定义样式,以免开发过程中id名变化,引起页局错乱
- 类名命名需要语义化,参考下面的示例:
.wrap //外层容器
.mod-box //模块容器
.btn-start //开始
.btn-download-ios //ios下载
.btn-download-andriod //安卓下载
.btn-head-nav1 //头部导航链接1
.btn-news-more //更多新闻
.btn-play //播放视频
.btn-ico //按钮ico
.btn-lottery //开始抽奖
.side-nav //侧栏导航
.side-nav-btn1 //侧栏导航-链接1
.btn-more //更多
提示 命名词穷了怎么办?试下这个工具:codelf
图片命名
- 图片名称必须小写,禁止使用特殊字符、中文
- 使用英文或拼音缩写,禁止特殊字符
- 名称间隔使用-符号
- 命名需要能体现图片的大概用途
常用示例:
bg.jpg //背景图片
mod-bg.jpg //模块背景
sprites.png //精灵图
btn-start.png //开始按钮
ico-play.png //修饰性图片
禁止文件名和实际图片内容不符。反面例子:图片名为'weixin-qrcode',图片内容却是头像。
文件命名
文件命名参照文件命名详细说明
文件目录
- 图片文件夹:ossweb-img
- CSS文件夹:css
- JS文件夹:js
- include页面片段文件夹:inc
路径分离前文件图片、CSS、JS引用的资源路径保留http:或者使用相对路径,不然本地无法预览。 路径 分离后 的CSS、JS引用的资源路径使用相对域名根目录的路径/cp/专题目录/。
include
- 多页面专题,提取页面相同HTML代码片段,页面中include载入使用
- 路径需要从域名根目录开始,引用方式必须为virtual,不能为file
- include推荐使用.html格式,可以在文件中再次include其他文件
正确
<!--#include virtual="/web201801/inc/nav.html" -->
<!--#include virtual="/m/m2018/inc/nav.html" -->
<!--#include virtual="/cp/a20160112music/inc/nav.html" -->
专题目录命名
专题目录就是重构包文件夹名称,使用 a+日期+专题英文或拼音 统一使用小写字母,例如:a20090817avatar,文件名禁止以数字开头。 重构包命名优先使用有意义的英文名,如使用拼音,拼音字符超过10个,请使用首个拼音的全称+后面拼音的简写
浏览器兼容
浏览器兼容性测试
- 兼容IE8及以上、Firefox、chrome、QQ浏览器
- 页面如无指定,不需要兼容IE6、7
- 不兼容IE6、7的情况下,需要在页面顶部加入提示,并对.browser-tips使用醒目的颜色标识样式
<!--[if lt IE 8]><p class="browser-tips">您的浏览器版本过低,请升级浏览器获得更好的体验<p><![endif]-->
分辨率兼容
1366x768~1920x1080,拖大和缩小窗口,页面布局不会发生错位。
页面分享
PC端QQ 客户端分享规范(预约、邀请类活动专题必加,相关信息请联系需求产品接口人):
<meta itemprop="name" content="标题:必填 长度至少为4" />
<meta itemprop="description" content="摘要:必填 长度至少为10" />
<meta itemprop="image" content="图片地址:可为空" />
SNS页面分享
页面如需要分享到多个社交平台时候,请使用SNS组件实现,
以上是关于前端开发规范的主要内容,如果未能解决你的问题,请参考以下文章