2020年12月-第02阶段-前端基础-品优购项目规范

代码规范

1. 概述

欢迎使用品优购代码规范, 这个是我借鉴京东前端代码规范,组织的品优购内部规范。旨在增强团队开发协作、
提高代码质量和打造开发基石的编码规范,

以下规范是团队基本约定的内容,必须严格遵循。

HTML规范

基于 W3C苹果开发者 等官方文档,并结合团队业务和开发过程中总结的规范约定,让页面HTML代码更具语义
性。

图片规范

了解各种图片格式特性,根据特性制定图片规范,包括但不限于图片的质量约定、图片引入方式、图片合并处理
等,旨在从图片层面优化页面性能。

CSS规范

统一规范团队 CSS 代码书写风格和使用 CSS 预编译语言语法风格,提供常用媒体查询语句和浏览器私有属性引
用,并从业务层面统一规范常用模块的引用。

命名规范

目录图片HTML/CSS文件ClassName 的命名等层面约定规范团队的命名习惯,增强团队代码的可读性。

2. HTML 规范

DOCTYPE 声明

HTML文件必须加上 DOCTYPE 声明,并统一使用 HTML5 的文档声明:

<!DOCTYPE html>

HTML5标准模版

<!DOCTYPE html>
  <html lang="zh-CN">
  <head>
  <meta charset="UTF-8">
  <title>HTML5&#x6807;&#x51C6;&#x6A21;&#x7248;</title>
  </head>
  <body>

  </body>
</html>

页面语言lang

推荐使用属性值 cmn-Hans-CN(简体, 中国大陆),但是考虑浏览器和操作系统的兼容性,目前仍然使用 zh-CN
属性值

<html lang="zh-CN">
</html>

更多地区语言参考:

zh-SG &#x4E2D;&#x6587; (&#x7B80;&#x4F53;, &#x65B0;&#x52A0;&#x5761;)   &#x5BF9;&#x5E94; cmn-Hans-SG &#x666E;&#x901A;&#x8BDD; (&#x7B80;&#x4F53;, &#x65B0;&#x52A0;&#x5761;)
zh-HK &#x4E2D;&#x6587; (&#x7E41;&#x4F53;, &#x9999;&#x6E2F;)     &#x5BF9;&#x5E94; cmn-Hant-HK &#x666E;&#x901A;&#x8BDD; (&#x7E41;&#x4F53;, &#x9999;&#x6E2F;)
zh-MO &#x4E2D;&#x6587; (&#x7E41;&#x4F53;, &#x6FB3;&#x95E8;)     &#x5BF9;&#x5E94; cmn-Hant-MO &#x666E;&#x901A;&#x8BDD; (&#x7E41;&#x4F53;, &#x6FB3;&#x95E8;)
zh-TW &#x4E2D;&#x6587; (&#x7E41;&#x4F53;, &#x53F0;&#x6E7E;)     &#x5BF9;&#x5E94; cmn-Hant-TW &#x666E;&#x901A;&#x8BDD; (&#x7E41;&#x4F53;, &#x53F0;&#x6E7E;)

charset 字符集合

一般情况下统一使用 “UTF-8” 编码

<meta charset="UTF-8">

由于历史原因,有些业务可能会使用 “GBK” 编码

<meta charset="GBK">
  • 请尽量统一写成标准的 “UTF-8″,不要写成 “utf-8” 或 “utf8” 或 “UTF8″。根据IETF对UTF-8的定义,其编码标准的写
    法是 “UTF-8″;而 UTF8 或 utf8 的写法只是出现在某些编程系统中,如 .NET framework 的类
    System.Text.Encoding 中的一个属性名就叫 UTF8。

书写风格

HTML代码大小写

HTML标签名、类名、标签属性和大部分属性值统一用小写

推荐:

不推荐:


类型属性

不需要为 CSS、JS 指定类型属性,HTML5 中默认已包含

推荐:

<link rel="stylesheet" href>
<script src></script>

不推荐:

<link rel="stylesheet" type="text/css" href>
<script type="text/javascript" src></script>

元素属性

  • 元素属性值使用双引号语法
  • 元素属性值可以写上的都写上

推荐:

<input type="text">
<input type="radio" name="name" checked="checked">

不推荐:

<input type="text">
<input type="text">
<input type="radio" name="name" checked>

特殊字符引用

文本可以和字符引用混合出现。这种方法可以用来转义在文本中不能合法出现的字符。

在 HTML 中不能使用小于号 “

推荐:

<a href="#">more>></a>

不推荐:

<a href="#">more>></a>

代码缩进

统一使用四个空格进行代码缩进,使得各编辑器表现一致(各编辑器有相关配置)

代码嵌套

元素嵌套规范,每个块状元素独立一行,内联元素可选

推荐:


<p></p>

不推荐:


<p>

</p>

段落元素与标题元素只能嵌套内联元素

推荐:

<h1></h1>
<p></p>

不推荐:

<h1></h1>
<p></p>

3. 图片规范

内容图

内容图多以商品图等照片类图片形式存在,颜色较为丰富,文件体积较大

  • 优先考虑 JPEG 格式,条件允许的话优先考虑 WebP 格式
  • 尽量不使用PNG格式,PNG8 色位太低,PNG24 压缩率低,文件体积大
  • *PC平台单张的图片的大小不应大于 200KB。

背景图

背景图多为图标等颜色比较简单、文件体积不大、起修饰作用的图片

  • PNG 与 GIF 格式,优先考虑使用 PNG 格式,PNG格式允许更多的颜色并提供更好的压缩率
  • 图像颜色比较简单的,如纯色块线条图标,优先考虑使用 PNG8 格式,避免不使用 JPEG 格式
  • 图像颜色丰富而且图片文件不太大的(40KB 以下)或有半透明效果的优先考虑 PNG24 格式
  • 图像颜色丰富而且文件比较大的(40KB – 200KB)优先考虑 JPEG 格式
  • 条件允许的,优先考虑 WebP 代替 PNG 和 JPEG 格式

4. CSS规范

代码格式化

样式书写一般有两种:一种是紧凑格式 (Compact)

.jdc{ display: block;width: 50px;}

一种是展开格式(Expanded)

.jdc {
    display: block;
    width: 50px;
}

团队约定

统一使用展开格式书写样式

代码大小写

样式选择器,属性名,属性值关键字全部使用小写字母书写,属性字符串允许使用大小写。

/* &#x63A8;&#x8350; */
.jdc{
    display:block;
}

/* &#x4E0D;&#x63A8;&#x8350; */
.JDC{
    DISPLAY:BLOCK;
}

选择器

  • 尽量少用通用选择器 *
  • 不使用 ID 选择器
  • 不使用无具体语义定义的标签选择器
/* &#x63A8;&#x8350; */
.jdc {}
.jdc li {}
.jdc li p{}

/* &#x4E0D;&#x63A8;&#x8350; */
*{}
#jdc {}
.jdc div{}

代码缩进

统一使用四个空格进行代码缩进,使得各编辑器表现一致(各编辑器有相关配置)

.jdc {
    width: 100%;
    height: 100%;
}

分号

每个属性声明末尾都要加分号;

.jdc {
    width: 100%;
    height: 100%;
}

代码易读性

左括号与类名之间一个空格,冒号与属性值之间一个空格

推荐:

.jdc {
    width: 100%;
}

不推荐:

.jdc{
    width:100%;
}

逗号分隔的取值,逗号之后一个空格

推荐:

.jdc {
    box-shadow: 1px 1px 1px #333, 2px 2px 2px #ccc;
}

不推荐:

.jdc {
    box-shadow: 1px 1px 1px #333,2px 2px 2px #ccc;
}

为单个css选择器或新申明开启新行

推荐:

.jdc,
.jdc_logo,
.jdc_hd {
    color: #ff0;
}
.nav{
    color: #fff;
}

不推荐:

.jdc,jdc_logo,.jdc_hd {
    color: #ff0;
}.nav{
    color: #fff;
}

颜色值 rgb() rgba() hsl() hsla() rect() 中不需有空格,且取值不要带有不必要的 0

推荐:

.jdc {
    color: rgba(255,255,255,.5);
}

不推荐:

.jdc {
    color: rgba( 255, 255, 255, 0.5 );
}

属性值十六进制数值能用简写的尽量用简写

推荐:

.jdc {
    color: #fff;
}

不推荐:

.jdc {
    color: #ffffff;
}

不要为 0 指明单位

推荐:

.jdc {
    margin: 0 10px;
}

不推荐:

.jdc {
    margin: 0px 10px;
}

属性值引号

css属性值需要用到引号时,统一使用单引号

/* &#x63A8;&#x8350; */
.jdc {
    font-family: 'Hiragino Sans GB';
}

/* &#x4E0D;&#x63A8;&#x8350; */
.jdc {
    font-family: "Hiragino Sans GB";
}

属性书写顺序

建议遵循以下顺序:

1.&#x5E03;&#x5C40;&#x5B9A;&#x4F4D;&#x5C5E;&#x6027;&#xFF1A;display / position / float / clear / visibility / overflow&#xFF08;&#x5EFA;&#x8BAE; display &#x7B2C;&#x4E00;&#x4E2A;&#x5199;&#xFF0C;&#x6BD5;&#x7ADF;&#x5173;&#x7CFB;&#x5230;&#x6A21;
&#x5F0F;&#xFF09;
2.&#x81EA;&#x8EAB;&#x5C5E;&#x6027;&#xFF1A;width / height / margin / padding / border / background
3.&#x6587;&#x672C;&#x5C5E;&#x6027;&#xFF1A;color / font / text-decoration / text-align / vertical-align / white- space / break-word
4.&#x5176;&#x4ED6;&#x5C5E;&#x6027;&#xFF08;CSS3&#xFF09;&#xFF1A;content / cursor / border-radius / box-shadow / text-shadow / background:linear-
gradient &#x2026;
.jdc {
    display: block;
    position: relative;
    float: left;
    width: 100px;
    height: 100px;
    margin: 0 10px;
    padding: 20px 0;
    font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
    color: #333;
    background: rgba(0,0,0,.5);
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    -o-border-radius: 10px;
    -ms-border-radius: 10px;
    border-radius: 10px;
}

mozilla官方属性顺序推荐

命名规范

由历史原因及个人习惯引起的 DOM 结构、命名不统一,导致不同成员在维护同一页面时,效率低下,迭代、维护
成本极高。

目录命名

  • 项目文件夹:pinyougou
  • 样式文件夹:css
  • 脚本文件夹:js
  • 样式类图片文件夹:img
  • 产品类图片文件夹: upload
  • 字体类文件夹: fonts

ClassName命名

ClassName的命名应该尽量精短、明确,必须以 字母开头命名,且 全部字母为小写,单词之间 统一使用下划线 “_”
连接

.nav_top

常用命名推荐

注意

ad、banner、gg、guanggao 等有机会和广告挂勾的字眠不建议直接用来做ClassName,因为有些浏览器
插件(Chrome的广告拦截插件等)会直接过滤这些类名,因此

这种广告的英文或拼音类名不应该出现

另外, 敏感不和谐字眼也不应该出现,如:


...

ClassName 含义

about 关于 account 账户 arrow 箭头图标 article 文章 aside 边栏 audio 音频 avatar 头像 bg,background 背景 bar 栏(工具类) branding 品牌化 crumb,breadcrumbs 面包屑 btn,button 按钮 caption 标题,说明 category 分类 chart 图表 clearfix 清除浮动 close 关闭 col,column 列 comment 评论 community 社区 container 容器 content 内容 copyright 版权 current 当前态,选中态 default 默认 description 描述 details 细节 disabled 不可用 entry 文章,博文 error 错误 even 偶数,常用于多行列表或表格中 fail 失败(提示) feature 专题 fewer 收起 field 用于表单的输入区域 figure 图 filter 筛选 first 第一个,常用于列表中 footer 页脚 forum 论坛 gallery 画廊 group 模块,清除浮动 header 页头 help 帮助 hide 隐藏 hightlight 高亮 home 主页 icon 图标 info,information 信息 last 最后一个,常用于列表中 links 链接 login 登录 logout 退出 logo 标志 main 主体 menu 菜单 meta 作者、更新时间等信息栏,一般位于标题之下 module 模块 more 更多(展开) msg,message 消息 nav,navigation 导航 next 下一页 nub 小块 odd 奇数,常用于多行列表或表格中 off 鼠标离开 on 鼠标移过 output 输出 pagination 分页 pop,popup 弹窗 preview 预览 previous 上一页 primary 主要 progress 进度条 promotion 促销 rcommd,recommendations 推荐 reg,register 注册 save 保存 search 搜索 secondary 次要 section 区块 selected 已选 share 分享 show 显示 sidebar 边栏,侧栏 slide 幻灯片,图片切换 sort 排序 sub 次级的,子级的 submit 提交 subscribe 订阅 subtitle 副标题 success 成功(提示) summary 摘要 tab 标签页 table 表格 txt,text 文本 thumbnail 缩略图 time 时间 tips 提示 title 标题 video 视频 wrap 容器,包,一般用于最外层 wrapper 容器,包,一般用于最外层

拓展阅读@

扫一扫下面的二维码,关注我们,获取更多精彩活动资讯,有好礼相送哦~

2020年12月-第02阶段-前端基础-品优购项目规范

【腾讯云】618云上GO!云服务器限时秒杀,1核2G首年95元!

2020年12月-第02阶段-前端基础-品优购项目规范

【华为云】特惠专区,多款产品限时特价!

2020年12月-第02阶段-前端基础-品优购项目规范

【阿里云】上新必买抢先知,劲爆优惠不错过!

2020年12月-第02阶段-前端基础-品优购项目规范

【七牛云】优惠专区,多款云产品限时抢购!

2020年12月-第02阶段-前端基础-品优购项目规范

【又拍云】免费CDN专区,10G免费大放送!

2020年12月-第02阶段-前端基础-品优购项目规范

【知识星球】一个资料分享的站点,各种学习资料,随时分享

2020年12月-第02阶段-前端基础-品优购项目规范

微信赞助; 微信打赏 支付宝打赏 支付宝赞助

免责声明:本文所有内容均为互联网上收集而来,仅供学习交流,整理文章为传播相关技术,如有侵权,请联系删除

Original: https://www.cnblogs.com/minvenus/p/Learning-webpage_project.html
Author: Destiny_Minvenus
Title: 2020年12月-第02阶段-前端基础-品优购项目规范

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/586128/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MyCAT实现MySQL读写分离

    用户连接到MySQL的中间件(代理),中间件接收用户的访问转发给后端的mysql数据库。 是MySQL的一个中间件软件,Mycat是一个开源的分布式数据库系统,是一个实现了MySQ…

    Linux 2023年6月7日
    088
  • 互斥锁与多线程间共享全局变量

    互斥锁 一、 代码展示 ① 没加锁(X) import threading num = 0 def write1(): global num i = 1 while i 运行结果 …

    Linux 2023年6月14日
    0115
  • 模拟MBR Grub故障修复

    1. MBR故障修复 破坏mrb 重启后镜像界面显示找不到引导系统, 连接光驱,进入紧急救援模式到shell字符界面还原备份 挂载硬盘并备份groub.conf文件 破坏grub并…

    Linux 2023年6月8日
    098
  • 55分钟学会正则表达式

    什么是正则正则表达式是一种用来描述一定数量文本的模式,用来匹配相同规范样式的文本。在JavaScript中用RegExp对象表示正则表达式( 即Regular Eexpressio…

    Linux 2023年6月13日
    094
  • spring-data-redis 2.0 的使用

    在使用Spring Boot2.x运行Redis时,发现百度不到顺手的文档,搞通后发现其实这个过程非常简单和简洁,觉得有必要拿出来分享一下。 Spring Boot2.x 不再使用…

    Linux 2023年5月28日
    0118
  • Linux目录操作(pwd、cd、ls、alias、du、mkdir、touch)

    pwd(打印当前目录) cd(### 切换目录) 命令 效果 cd 或 cd ~ 若不指定目标位置,切换到当前用户的宿主目录(家目录) cd – 到前一次目录 一个点号…

    Linux 2023年6月6日
    085
  • NO.2 Windows桌面图标-间距参数调整

    遇到如下问题: 桌面图标自动排序后间隔过大,且如图二这种指向图标能看到图标之间的间隔虚框,此方法可调整虚框的水平和垂直距离,即调整图标之间的间距。 测试电脑: 华为 mateboo…

    Linux 2023年6月7日
    0117
  • MySQL — 数据查询语言

    DQL 全称 Data Query Language。数据查询语言,用来查询数据库中表的记录。 语法: select 查询列表(字段、常量、函数、表达式) from 表名; 字段别…

    Linux 2023年6月8日
    094
  • Centos7安装Redis

    下载 wget http://download.redis.io/releases/redis-5.0.0.tar.gz 解压 tar xvf redis-5.0.0.tar.gz…

    Linux 2023年5月28日
    092
  • gitlab拉取指定目录

    1.新建目录 mkdir git 2.初始化本地目录 git init 3.启用过滤的配置项 git config core.sparsecheckout true 4.想要拉取哪…

    Linux 2023年6月6日
    091
  • 唯一主键方案之数据库维护区间分配

    我们介绍一种基于数据库维护自增 ID 区间,结合内存分配的策略,这也是淘宝的 TDDL 等数据库中间件使用的主键生成策略。 使用这种方式首先在数据库中创建 sequence 表,其…

    Linux 2023年6月16日
    0215
  • jarwarSpringBoot加载包内外资源的方式,告别FileNotFoundException吧

    工作中常常会用到文件加载,然后又经常忘记,印象不深,没有系统性研究过,从最初的war包项目到现在的springboot项目,从加载外部文件到加载自身jar包内文件,也发生了许多变化…

    Linux 2023年6月6日
    0108
  • 4.5 Linux压缩文件或目录中文件为.gz格式(gzip命令)

    gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令,通过此命令压缩得到的新文件,其扩展名通常标记为”.gz”。 再强调一下,gzip 命令…

    Linux 2023年6月7日
    086
  • sql server查询(SELECT ,where,distinct,like 查询,in,is null,group by 和having,order by,as)

    基本查询: 实例表 1 示例表 2 –部门表 3 4 create table dept( 5 6 deptno int primary key,–部门编号 7 8 dname…

    Linux 2023年6月7日
    0101
  • shell 变量的默认值

    在 shell 脚本中,如果要使用某个变量又想给它设置默认值,可以用 XX=${YY-ZZ} 的方式,其中 ZZ 会是 YY 没有设置时的默认值 另一种用法是 XX=${YY:-Z…

    Linux 2023年5月28日
    0106
  • CentOS 用户与群组

    Linux 系统中存在一个超级用户 root ,可以做任何操作。Linux 系统中每个用户都有自己独立的账户,有些命令运行需要切换 root 身份,用户是分组的。 1.1、切换用户…

    Linux 2023年6月8日
    089
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球