荣一娱乐有多少钱 当前位置:首页>荣一娱乐有多少钱>正文

荣一娱乐有多少钱

发布时间:2019-03-20

原标题:前端代码相关规范

他很清楚二人见到彼此为什么会不自在℃对此情此景,他也很是尴尬。

乐虎国际手机网页登录|官网

他们吃完东西,然后叶扬陪着林珂前往公司请假去了。请完假之后,叶扬带着林珂便是去广平最著名的景点——太山。
“不愧是擅长空间之力的太虚古龙麻烦。”面对一星斗圣的太虚古龙刘皓也不敢小看,毕竟对方的肉体实在是强横被拍一掌的话不受伤那才叫奇怪。

“焱炎焚天!”炎烬知道刚才自己能躲过是凑巧的,继续躲的话,自己必死无疑,二话不说立刻跳动体内庞大的斗气引动天地之间的能量化作了一道擎天火柱。

总结一下目前在用的前端代码规范,可作为开发参考

 

一、基础规范

开发规范

项目目录和文件的命名使用小写字母,避免使用大写或驼峰,多个单词以下划线 _ 分隔  如:my_project/cast_detail.js

目录有复数意义的时候,使用复数命名  如 scripts  images

某些第三方插件可直接使用中划线 - 作为文件名单词的间隔 如 bootstrap-datepicker

某些特殊文件可以使用点号 . 作为文件名单词的间隔 如  webpack.config.dev.js  jquery.cookie.min.js

使用有意义的英文单词式命名,避免使用拼音式(如 tupian.png )命名

 

编辑器设置文件保存格式为 utf-8,以四个空格作为缩进(包括HTML,CSS,JS等),文件末尾空一行,行尾去掉空格

单个函数行数,以不超过一个屏幕为宜(50行左右),超出一个屏幕的,就要考虑拆分成更少的函数

每行代码量不要太长,要适当进行分行(自己也可以在编辑器设置超长自动换行)

在 sublime 中的配置

{
    "default_encoding": "UTF-8",
    "ensure_newline_at_eof_on_save": true,
    "trim_trailing_white_space_on_save": true,
    "tab_size": 4,
    "translate_tabs_to_spaces": true,
    "word_wrap": "auto"
}

尽量做到代码的整齐美观

 

HTML规范

在页面开头使用DOCTYPE声明启用标准模式

不要忘了设置语言 language 和编码 charset格式

各层元素应该换行,嵌套的元素节点应该缩进,缩进使用4个空格

属性名统一使用小写,使用中划线 - 作为单词的分隔;属性值统一使用双引号,避免使用单引号

不要在自动闭合标签结尾处使用斜线(HTML5规范 指出他们是可选的,如 <img >)

不要忽略可选的闭合标签(如 </li> )

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>Page title</title>
        <!-- 选择性地使用IE兼容模式 -->
        <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    </head>
    <body>
        <img src="images/company_logo.png" alt="Company">
 
        <h1 class="hello-world">Hello, world!</h1>
    </body>
</html>

引入CSS和JS时不需要指名type属性

因为 text/css 和 text/javascript 已经是它们的默认值
另外,时刻牢记应该在 <head>中引入外部CSS,在<body>末尾引入外部JS

<!-- External CSS -->
<link rel="stylesheet" href="code_guide.css">
 
<!-- In-document CSS -->
<style>
    ...
</style>
 
<!-- External JS -->
<script src="code_guide.js"></script>
 
<!-- In-document JS -->
<script>
    ...
</script>

boolean值的属性,不需要声明值的属性

在HTML5中,该属性存在即为true,不存在即为false

<!-- 不建议 -->
<input type="text" disabled="disabled">
<!-- 建议 -->
<input type="text" disabled>
 
<!-- 不建议 -->
<input type="checkbox" value="1" checked="checked">
<input type="checkbox" value="1" checked>
 
<select>
    <option value="1" selected>1</option>
</select>

语义化,避免使用不需要的标签,使用有意义的标签

<!-- Not well -->
<p class="title">我是标题</p>
<span class="avatar">
    <img src="...">
</span>
 
<!-- Better -->
<h3>我是标题</h3>
<img class="avatar" src="...">

不要省略表格table 的 thead  tbody

<table>
    <thead>
        <tr>
            <th>ABC</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>abc</td>
        </tr>
    </tbody>
</table>

尽量使用HTML实体符而不是直接使用符号

使用<a>标签作为JS事件处理时,统一使用 href="javascript:;" 伪协议。

因为设置了href之后的<a>标签才具有默认 cursor: pointer 的样式,才能支持Tab切换;

防止点击跳转可以使用 href="#",但页面锚点hash会改变;可以使用 javascript:void(0) 但稍长;可以使用事件处理 return false;  event.preventDefault() 但略微麻烦

<!-- Not well -->
<a href="#">more>></a>
 
<!-- Better -->
<a href="javascript:;">more&gt;&gt;</a>

属性应该按照特定的顺序来保证易读性

  • class
  • id
  • name
  • data-*
  • srcfortypehrefvalue , max-lengthmaxminpattern
  • placeholdertitlealt
  • aria-*role
  • requiredreadonlydisabled

class是为高可复用组件设计的,所以应处在第一位;

id更加具体且应该尽量少使用,所以将它放在第二位。

<a class="..." id="..." data-modal="toggle" href="#">Example link</a>
 
<input class="form-control" type="text">
 
<img src="..." alt="...">

使用Smarty,Handlebars模板时,注意代码的整洁美观

尽量使用Map映射的结构,而不是条件判断

<!-- Not well -->
<{if $title == "one"}>
<h2>标题一</h2>
<{elseif $title == "two"}>
<h2>标题二</h2>
<{elseif $title == "three"}>
<h2>标题三</h2>
<{/if}>
 
<!-- Better -->
<{assign var="titleText" value=[
    "one" => "标题一",
    "two" => "标题二",
    "three" => "标题三"
]}>
<h2><{$titleText[$title]}></h2>

模板里面符号两端适当地加空格(逗号前不用)

<!-- 逗号后面有空格 -->
<li <{if in_array($beforeAction.currentUrl, $url)}>class="active"<{/if}> 列表 </li>
 
<!-- 等号两边有空格 -->
<{if $abc == "cdf"}>
<{/if}>

自定义属性统一使用 data- 前缀

一行标签代码不宜过长,超长时需要适当地按照属性进行分行

但也不是说每个属性都分行

<a class="r-btn r-btn-blue eva-content-btnSave" href="javascript:;"
   data-commentID="{{commentID}}"
   data-commentType="{{commentType}}"
   data-evaID="{{evaID}}"
   data-roleStaffID="{{roleStaffID}}"
>确认提交</a>

CSS规范

样式文件头部加上编码规则 统一使用 UTF-8

@charset "UTF-8";

使用四个空格的缩进

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

关于空行

  • 文件最后保留一个空行
  • "}"后最好跟一个空行,包括scss中嵌套的规则
  • 属性之间需要适当的空行
/* not good */
.element {
    ...
}
.dialog {
    color: red;
    &:after {
        ...
    }
}
 
/* good */
.element {
    ...
}
 
.dialog {
    color: red;
 
    &:after {
        ...
    }
}

关于换行

以下几种情况不需要换行:

  • "{" 前

以下几种情况需要换行:

  • "{" 后和 "}" 前
  • 每个属性独占一行
  • 多个规则的分隔符 "," 后
/* not good */
.element
{color: red; background-color: black;}
 
/* good */
.element {
    color: red;
    background-color: black;
}
 
/* not good */
.element, .dialog {
    ...
}
 
/* good */
.element,
.dialog {
    ...
}

关于空格

以下几种情况不需要空格:

  • 属性名后
  • 多个规则的分隔符","前
  • !important "!" 后
  • 属性值中 "(" 后和 ")" 前
  • 行末不要有多余的空格

以下几种情况需要空格:

  • 属性值前
  • 选择器 ">",  "+",  "~" 前后
  • "{" 前
  • !important "!" 前
  • @else 前后
  • 属性值中的 "," 后
  • 注释 "/*" 后和 "*/" 前
/* not good */
.element {
    color :red! important;
    background-color: rgba(0,0,0,.5);
}
 
/* good */
.element {
    color: red !important;
    background-color: rgba(0, 0, 0, .5);
}
 
/* not good */
.element ,
.dialog{
    ...
}
 
/* good */
.element,
.dialog {
 
}
 
/* not good */
.element>.dialog{
    ...
}
 
/* good */
.element > .dialog{
    ...
}
 
/* not good */
.element{
    ...
}
 
/* good */
.element {
    ...
}
 
/* not good */
@if{
    ...
}@else{
    ...
}
 
/* good */
@if {
    ...
} @else {
    ...
}

属性选择器的属性值需要引号,url 里的内容需要引号

.element:after {
    content: "";
    background-image: url("logo.png");
}
 
li[data-type="single"] {
    ...
}

类名参考 BEM命名规范

ID以及SASS中相关的变量命名使用小驼峰

/* class */
.form-content {
    ...
}
 
/* id */
#myDialog {
    ...
}
 
/* 变量 */
$colorBlack: #000;
 
/* 函数 */
@function pxToRem($px) {
    ...
}
 
/* 混合 */
@mixin centerBlock {
    ...
}
 
/* placeholder */
%myDialog {
    ...
}

颜色16进制用小写字母,且尽量使用简写形式

/* not good */
.element {
    color: #ABCDEF;
    background-color: #001122;
}
 
/* good */
.element {
    color: #abcdef;
    background-color: #012;
}

不要为 0 指定单位,去掉小数点前后的 0

/* not good */
.element {
    color: rgba(0, 0, 0, 0.5);
}
 
/* good */
.element {
    color: rgba(0, 0, 0, .5);
}
 
/* not good */
.element {
    width: 50.0px;
}
 
/* good */
.element {
    width: 50px;
}
 
/* not good */
.element {
    width: 0px;
}
 
/* good */
.element {
    width: 0;
}

避免使用CSS中的@import ,应使用 <link>方式引入CSS文件

<!-- Not well -->
<style>
    @import url("more.css");
</style>
 
<!-- Better -->
<link rel="stylesheet" href="core.css">

@import 引入的文件不需要开头的 "_" 和结尾的".scss";

/* 引入 _variable.scss */
 
/* not good */
@import "_variable.scss";
 
/* good */
@import "variable";

尽量将媒体查询的规则靠近与他们相关的规则

不要将他们一起整个放到一个独立的样式文件中,或者丢在文档的最底部

使用前缀属性时,应通过缩进使取值垂直对齐

且私有属性在前,标准属性在后

.selector {
    -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
            box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
}

注意属性简写的使用,避免滥用导致覆盖某些样式

如果使用简写,需保证清楚相应顺序的影响,且不会导致其他问题

  • padding
  • margin
  • background
  • border
  • border-radius
  • transition
  • animation
  • font

选择器嵌套层数不宜过长

/* not good */
.table > thead > tr > th {}
.table > thead > tr > td {}
 
/* good */
.table > thead > tr {
    > th { … }
    > td {}
}

尽量不要在HTML中通过 style=... 内联样式

注意属性的声明顺序

相关的属性声明应当归为一组,参考按照下面的顺序排列,另参考

  1. Positioning  定位
  2. Box model  盒模型
  3. Typographic  排版
  4. Visual  外观
  5. 其他
.declaration-order {
    /* Positioning */
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 100;
 
    /* Box-model */
    display: block;
    float: right;
    width: 100px;
    height: 100px;
 
    /* Typography */
    font: normal 13px "Helvetica Neue", sans-serif;
    line-height: 1.5;
    color: #333;
    text-align: center;
 
    /* Visual */
    background-color: #f5f5f5;
    border: 1px solid #e5e5e5;
    border-radius: 3px;
 
    /* Other */
    opacity: 1;
}

sublime中可安装使用 CSSComb 插件进行格式转换

  1 {
  2     // If plugin has trouble finding Node.js, replace this string with path
  3     // to your `node` bin
  4     "node-path" : ":/usr/local/bin",
  5     // Full list of supported options and acceptable values can be found here:
  6     // https://github.com/csscomb/csscomb.js/blob/master/doc/options.md
  7     "config": {
  8         // Whether to add a semicolon after the last value/mixin.
  9         "always-semicolon": true,
 10         // Set indent for code inside blocks, including media queries and nested rules.
 11         "block-indent": "    ",
 12         // Unify case of hexadecimal colors.
 13         "color-case": "lower",
 14         // Whether to expand hexadecimal colors or use shorthands.
 15         "color-shorthand": true,
 16         // Unify case of element selectors.
 17         "element-case": "lower",
 18         // Add/remove line break at EOF.
 19         "eof-newline": true,
 20         // Add/remove leading zero in dimensions.
 21         "leading-zero": false,
 22         // Unify quotes style.
 23         "quotes": "double",
 24         // Remove all rulesets that contain nothing but spaces.
 25         "remove-empty-rulesets": true,
 26         // Set space after `:` in declarations.
 27         "space-after-colon": " ",
 28         // Set space after combinator (for example, in selectors like `p > a`).
 29         "space-after-combinator": " ",
 30         // Set space after `{`.
 31         "space-after-opening-brace": "
",
 32         // Set space after selector delimiter.
 33         "space-after-selector-delimiter": "
",
 34         // Set space before `}`.
 35         "space-before-closing-brace": "
",
 36         // Set space before `:` in declarations.
 37         "space-before-colon": "",
 38         // Set space before combinator (for example, in selectors like `p > a`).
 39         "space-before-combinator": " ",
 40         // Set space before `{`.
 41         "space-before-opening-brace": " ",
 42         // Set space before selector delimiter.
 43         "space-before-selector-delimiter": "",
 44         // Set space between declarations (i.e. `color: tomato`).
 45         "space-between-declarations": "
",
 46         // Whether to trim trailing spaces.
 47         "strip-spaces": true,
 48         // Whether to remove units in zero-valued dimensions.
 49         "unitless-zero": true,
 50         // Whether to align prefixes in properties and values.
 51         "vendor-prefix-align": true,
 52         // Sort properties in particular order.
 53         "sort-order": [
 54                 "font",
 55                 "font-family",
 56                 "font-size",
 57                 "font-weight",
 58                 "font-style",
 59                 "font-variant",
 60                 "font-size-adjust",
 61                 "font-stretch",
 62                 "font-effect",
 63                 "font-emphasize",
 64                 "font-emphasize-position",
 65                 "font-emphasize-style",
 66                 "font-smooth",
 67                 "line-height",
 68                 "position",
 69                 "z-index",
 70                 "top",
 71                 "right",
 72                 "bottom",
 73                 "left",
 74                 "display",
 75                 "visibility",
 76                 "float",
 77                 "clear",
 78                 "overflow",
 79                 "overflow-x",
 80                 "overflow-y",
 81                 "-ms-overflow-x",
 82                 "-ms-overflow-y",
 83                 "clip",
 84                 "zoom",
 85                 "flex-direction",
 86                 "flex-order",
 87                 "flex-pack",
 88                 "flex-align",
 89                 "-webkit-box-sizing",
 90                 "-moz-box-sizing",
 91                 "box-sizing",
 92                 "width",
 93                 "min-width",
 94                 "max-width",
 95                 "height",
 96                 "min-height",
 97                 "max-height",
 98                 "margin",
 99                 "margin-top",
100                 "margin-right",
101                 "margin-bottom",
102                 "margin-left",
103                 "padding",
104                 "padding-top",
105                 "padding-right",
106                 "padding-bottom",
107                 "padding-left",
108                 "table-layout",
109                 "empty-cells",
110                 "caption-side",
111                 "border-spacing",
112                 "border-collapse",
113                 "list-style",
114                 "list-style-position",
115                 "list-style-type",
116                 "list-style-image",
117                 "content",
118                 "quotes",
119                 "counter-reset",
120                 "counter-increment",
121                 "resize",
122                 "cursor",
123                 "-webkit-user-select",
124                 "-moz-user-select",
125                 "-ms-user-select",
126                 "user-select",
127                 "nav-index",
128                 "nav-up",
129                 "nav-right",
130                 "nav-down",
131                 "nav-left",
132                 "-webkit-transition",
133                 "-moz-transition",
134                 "-ms-transition",
135                 "-o-transition",
136                 "transition",
137                 "-webkit-transition-delay",
138                 "-moz-transition-delay",
139                 "-ms-transition-delay",
140                 "-o-transition-delay",
141                 "transition-delay",
142                 "-webkit-transition-timing-function",
143                 "-moz-transition-timing-function",
144                 "-ms-transition-timing-function",
145                 "-o-transition-timing-function",
146                 "transition-timing-function",
147                 "-webkit-transition-duration",
148                 "-moz-transition-duration",
149                 "-ms-transition-duration",
150                 "-o-transition-duration",
151                 "transition-duration",
152                 "-webkit-transition-property",
153                 "-moz-transition-property",
154                 "-ms-transition-property",
155                 "-o-transition-property",
156                 "transition-property",
157                 "-webkit-transform",
158                 "-moz-transform",
159                 "-ms-transform",
160                 "-o-transform",
161                 "transform",
162                 "-webkit-transform-origin",
163                 "-moz-transform-origin",

编辑:宗扁

发布时间:2019-03-20 06:15:30

当前文章://7zha8.html

龙虎娱乐app_(龙虎娱乐)【官方下载平台】 美高梅娱乐_美高梅娱乐场_美高梅娱乐场网站 千亿国际_qy888.com_qy888千亿国际 奇幻电玩城app下载 

责任编辑:王乙陵马