Bootstrap基础运用示例

整   理:晋 哲

时   间:2016-11-15

说   明:整理后台常用到的Bootstrap元素结构,便于规范运用

本地示例:http://192.168.0.100/BootstrapDemo.html

1、标题及下面的按钮
想要上下元素有间距,使用【form-group】父类包裹起来

bootstrap_pic1

<div class="form-group">
    <h3>标题文字</h3>
</div>
<div class="form-group">
    <button class="btn btn-success">新增模版</button>
</div>

2、功能按钮,分别对应【primary、success、info、danger、warning、default】
bootstrap_pic2

<button class="btn btn-primary">保存/提交/确认</button>
<button class="btn btn-success">添加/新建/通过</button>
<button class="btn btn-info">信息/详情/查看数据</button>
<button class="btn btn-danger">删除</button>
<button class="btn btn-warning">修改/审核/警告</button>
<button class="btn btn-default">默认/普通</button>

元素右对齐,使用【pull-right】
bootstrap_pic2_1

<div class="form-group">
    <button class="btn btn-success">新增模版</button>
    <button class="btn btn-primary pull-right">保存</button>
</div>

3、用于表单中的文字按钮
bootstrap_pic3

<button class="btn btn-link">编辑</button>
<button class="btn btn-link">删除</button>

<a class="btn btn-link btn-sm" href="#">编辑</a>
<a class="btn btn-link btn-sm" href="#">删除</a>

<a class="btn btn-link btn-xs" href="#">编辑</a>
<a class="btn btn-link btn-xs" href="#">删除</a>

4、内页分类标题
bootstrap_pic4

<div class="breadcrumb">1、类目选择</div>
<div class="breadcrumb">2、基本信息</div>
<div class="breadcrumb">3、商品规格</div>

如果想要调整字体大小,可以改动<div>标签,使用标签<h3>、<h4>
bootstrap_pic4_2

<h3 class="breadcrumb">1、类目选择</h3>
<h4 class="breadcrumb">1、类目选择</h4>

5、表单,使用【form-horizontal】包裹起来
bootstrap_pic5

<div class="form-horizontal">
    <div class="form-group">
        <label class="col-sm-2 control-label">用户名:</label>
        <div class="col-sm-5"><input type="text" class="form-control"></div>
    </div>
    <div class="form-group">
        <label class="col-sm-2 control-label">密码:</label>
        <div class="col-sm-5"><input type="text" class="form-control"></div>
    </div>
</div>

如果没有label标题,又需要表单对齐的,使用【col-sm-offset-*】

<div class="form-group">
    <div class="col-sm-offset-2 col-sm-5">
        <button class="btn btn-primary">保存</button>
    </div>
</div>

6、水平排列的表单,使用【form-inline、radio-inline、checkbox-inline】
bootstrap_pic6

<div class="form-horizontal">
    <div class="form-group form-inline">
        <label class="col-sm-2 control-label">有效期:</label>
        <input type="text" class="form-control"> 至 <input type="text" class="form-control">
    </div>
    <div class="form-group">
        <label class="col-sm-2 control-label">单项选择:</label>
        <label class="radio-inline"><input type="radio" name="option1" value="选项一"> 选项一</label>
        <label class="radio-inline"><input type="radio" name="option1" value="选项二"> 选项二</label>
    </div>
    <div class="form-group">
        <label class="col-sm-2 control-label">多选选择:</label>
        <label class="checkbox-inline"><input type="checkbox" value="选项一"> 选项一</label>
        <label class="checkbox-inline"><input type="checkbox" value="选项二"> 选项二</label>
    </div>
</div>

7、多列展示,使用栅格样式
bootstrap_pic7

<div class="form-horizontal">
    <div class="form-group">
        <div class="form-group col-sm-4">
            <label class="col-sm-4 control-label">多列设置:</label>
            <div class="col-sm-8"><input type="text" class="form-control"></div>
        </div>
        <div class="form-group col-sm-4">
            <label class="col-sm-4 control-label">多列设置:</label>
            <div class="col-sm-8"><input type="text" class="form-control"></div>
        </div>
        <div class="form-group col-sm-4">
            <label class="col-sm-4 control-label">多列设置:</label>
            <div class="col-sm-8"><input type="text" class="form-control"></div>
        </div>
    </div>
</div>

8、分页
bootstrap_pic8

<nav>
    <ul class="pagination">
        <li><a href="#"><span>上一页</span></a></li>
        <li class="active"><a href="#">1</a></li>
        <li><a href="#">2</a></li>
        <li><a href="#">3</a></li>
        <li><a href="#">4</a></li>
        <li><a href="#">5</a></li>
        <li><a href="#"><span>下一页</span></a></li>
    </ul>
</nav>

9、开关控件
bootstrap_pic9

<!-- 引入开关控件CSS -->
<link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap-switch/3.3.2/css/bootstrap3/bootstrap-switch.min.css">

<!-- 开关控件HTML -->
<div class="switch" data-on="primary" data-off="info">
    <input type="checkbox" name="is_on" data-on-text="开启" data-off-text="关闭" checked />
</div>

<!-- 引入开关控件JS -->
<script src="http://cdn.bootcss.com/bootstrap-switch/3.3.2/js/bootstrap-switch.min.js"></script>
<script>
    $(function() {
        $('input[name="is_on"]').bootstrapSwitch();
        $('input[name="is_on"]').on('switchChange.bootstrapSwitch', function(event, state) {
            console.log(state);
        });
    })
</script>

10、模态框
bootstrap_pic10

<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">点击弹出模态框</button>

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
                <h4 class="modal-title" id="myModalLabel">标题</h4>
            </div>
            <div class="modal-body">
                显示内容
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default">关闭</button>
                <button type="button" class="btn btn-primary">保存</button>
            </div>
        </div>
    </div>
</div>

11、表格
bootstrap_pic11

<table class="table table-bordered table-striped table-hover">
    <thead>
        <tr>
            <th>First</th>
            <th>Second</th>
            <th>Third</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
    </tbody>
</table>

artTemplate模板引擎

整   理:晋 哲

时   间:2016-11-15

说   明:使用模板引擎代替原本数组的push()方法和字符串拼接方式

一、使用方式
1、基础引用

<div id="content"></div>
<script src="template.js"></script>

2、模板搭建
使用一个type="text/html"的script标签存放模板;

<script id="test" type="text/html">
<h1>{{title}}</h1>
<ul>
    {{each list as value i}}
        <li>{{i + 1}} :{{value}}</li>
    {{/each}}
</ul>
</script>

3、数据渲染

<script>
var data = {
    title: '一、基础用法',
    list: ['列表1', '列表2', '列表3', '列表4', '列表5']
};
var html = template('test', data);
document.getElementById('content').innerHTML = html;
</script>

二、语法
{{ 与 }} 符号包裹起来的语句则为模板的逻辑表达式。

1、输出表达式
对内容编码输出,如:{{ value }}

2、条件表达式

{{if admin}}
    <p>admin</p>
{{else if code > 0}}
    <p>master</p>
{{else}}
    <p>error!</p>
{{/if}}

3、遍历表达式

{{each list as value index}}
    <li>序列{{index}} :{{value.text}}</li>
{{/each}}

4、嵌入子模板

{{include 'template_name'}}

三、文档参考
https://github.com/aui/artTemplate

HTML5 history pushState/replaceState操纵浏览器的历史记录

整   理:晋 哲

时   间:2016-06-16

说   明:HTML5引进了history pushState()/replaceState()方法,可以操纵浏览器的历史记录

HTML5引进了history.pushState()方法和history.replaceState()方法,它们可以逐条地添加和修改历史记录条目。这些方法可以协同window.onpopstate事件一起工作。

一、pushState()方法
pushState()有三个参数:一个状态对象、一个标题(现在会被忽略),一个可选的URL地址。
状态对象(state object):一个JavaScript对象,设置状态对象之后会将其拷贝到popstate事件的state属性中,然后在popstate事件中可以通过获取state属性与创建的新历史记录条目关联。
标题(title):FireFox浏览器目前会忽略该参数,所以暂时可以传一个空字符串。
地址(URL):新的历史记录条目的地址。该参数是可选的,不指定的话则为文档当前URL。

二、replaceState()方法
history.replaceState()操作类似于history.pushState(),不同之处在于replaceState()方法会修改当前历史记录条目而并非创建新的条目。

三、popstate事件
每当激活的历史记录发生变化时都会触发popstate事件。如果被激活的历史记录条目是由pushState所创建,或是被replaceState方法影响到的,popstate事件的状态属性将包含历史记录的状态对象的一个拷贝。

实例:选项卡切换结合浏览器的前进与后退
普通的选项卡切换局部页面,点击“后退”会直接跳转到上一个页面;现结合history.pushState()方法和popstate事件,可以实现选项卡页面之间浏览器历史记录的前进与后退。

简易总结实现步骤:
1、使用pushState()方法添加一条新的历史记录条目,这时只是改变了浏览器URL内容;
2、每激活一次历史记录(比如点击后退),就会触发一次popstate事件,事件中获取的state属性就会随之改变,在这种状态下设置对应页面切换的代码即可。

示例代码:
history_pic

Ajax加载的页面同样存在无法前进与后退的状况,同理实现。

参考代码:
1、Ajax与HTML5 history pushState/replaceState实例-张鑫旭
http://www.zhangxinxu.com/wordpress/?p=3432
2、动漫酷网站
http://dmku.net
3、pjax是对ajax + pushState的封装
https://github.com/welefen/pjax

ECharts数据可视化图表库

一、使用体验
ECharts所提供的常规的图表样式简洁大方,默认的颜色配置不错,也可以自定义,丰富的配置项设置可交互,可个性化定制。

官网提供了很详细的入手文档,主要是配置项的熟悉使用。
官网:http://echarts.baidu.com
echarts-pic1

二、引用方式
1、最简单的引用方式是使用 script 标签引入,官网还提供了“在线构建”的选项,可以按需生成简化版js文件。
<script src="echarts.min.js">
echarts-pic4

2、HTML只需要一个具备高宽的dom容器。
<div id="container" style="width:600px;height:400px;"></div>

3、通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成图表,option指定图表的配置项和数据即可。
var mychart = echarts.init(document.getElementById('container'));
mychart.setOption(option);
echarts-pic2

三、配置项设置
ECharts提供了“配置项手册”,树状图的形式展现内部属性方法,并搭配示例说明。方面查询、理解和使用,入手起来很快。
配置项设置相对于搭建图表框架,设置完之后可以延续使用,每次只需调取不同数据进行展示。
echarts-pic3

四、细节功能
1、保存为图片,并可以设置保存的像素比;当前图表所用数据列表形式展现;
tool1
tool3
2、图表形式的切换,如折线图和柱状图因为数据形式相同可以切换展示;
tool2
3、多图表之间的切换、联动;
4、数据的动态更新,数据的改变驱动图表展现的改变;
5、数据区域缩放、拖动等交互组件;
6、地理坐标系展示,提供了世界、中国、各省地图的js和json引入方式;
echarts-pic6
7、各类主题样式的选择下载;
echarts-pic5
8、异步数据的加载和更新。
echarts-pic7

异步数据加载示例
http://shopdev.ci123.com/svn/jinzhe/webroot/echarts/echarts_ajax.php

定义SASS函数,方便WAP\PC端的样式数值快速切换

编    写:晋哲

时    间:2016-03-04

说    明:因移动端页面样式都是原尺寸的二分之一,PC专题页固定模板直接引用移动端页面的样式还需要返工去将所有的数值型属性值改回来,为方便两端之间的样式切换,提高效率,建议此类专题使用SASS去写样式,并使用下面定义的函数。

//定义函数
@function math($num) {
    @return $num / 2;
}

//SASS中使用函数,如以下常用的一些数值型属性
.icon {
    top: math(40%);
    margin: math(20px);
    width: math(100px);
    height: math(40px);
    font-size: math(30px);
    background-position: math(-10px) math(-20px);
    background-size: math(240px);
}

//生成的移动端CSS代码
.icon {
    top: 20%;
    margin: 10px;
    width: 50px;
    height: 20px;
    font-size: 15px;
    background-position: -5px -10px;
    background-size: 120px;
}

当需要生成PC端样式时,只需修改函数内的被除数即可。

【前端技术文档】PS快速切图方法

整    理:贾会迎、晋哲

时    间:2016-02-05

说    明:PS处理同类型不同尺寸图标的快捷方法

问题:当同一版块中的每个图标的宽高各异时,在切图时需要为这些图标设置一个统一的宽高,方便样式统一编写。如何快速准确的确定切图尺寸,同时分成两套不同状态样式?

例如以下按钮的图标:
p-1

操作步骤
一、同时选择几个图标的图层
p-2

二、复制图层—新建—裁切(透明像素部分)。得到如下图
p-3

三、统一颜色样式(将绿色图标改为灰色)
1、提取颜色值,可保存至背景色
p-4
2、在图层空白处双击,调出“图层样式”面板,设置“颜色叠加”
p-5
3、图标颜色改变为灰色(效果)
p-6

四、将图标水平垂直居中,多个图标重叠显示,来确定图标的准确尺寸。
p-7

五、确定图标大小,逐一显示并保存
1、裁切透明像素,获得图标的准确大小
p-8
2、查看此时“图像--画布”大小,根据图标实际需要设置最大宽高值,最好设置为偶数,以方便样式设置。如下图,高度可以设42px、46px、50px等等
p-9

p-10
3、按设计图顺序逐一显示图层并保存

六、设置第二套状态样式(如图绿色)。
1、提取交互图标的颜色,可保存在前景色中
p-11
2、在图层空白处双击,调出“图层样式”面板
p-12

p-13
3、选择打开“颜色叠加”面板,设置叠加的颜色
p-14
4、在图层区域右击,选择“拷贝图层样式”
p-15
5、选中其他图层,右击选择“粘贴图层样式”,后逐一显示并保存图片。
p-16

p-17

p-18

七、保存的图标文件效果,注意按照设计图顺序和统一的规则命名
p-19

前端半年水平

一、移动端
移动端dpr适配知识点
移动端性能优化

二、项目流程
团队协作完成流程页面能力
独立完成小型项目能力

三、CSS预处理器
Sass(项目实现统一使用Sass编写样式)
postCSS

四、前端标准/规范
ECMAScript3/5
ECMAScript6

五、编程语言
JavaScript
Node.js

六、包管理器 npm

七、JS框架
Angular
React

八、前端项目构建工具
gulp
grunt
FIS

九、代码组织(模块化)
类库模块化 CommonJS/webpack
业务逻辑模块化 bower
文件加载 Require
模块化预处理器 Browserify

十、软技能
知识管理/总结分享
沟通技巧/团队协作
需求管理/项目管理
交互设计/可用性/可访问性知识

前端半年水平树

专题页面上线及清缓存步骤

整 理:晋哲
时 间:2015-12-23
说 明:PC端和WAP端专题页面上线步骤及清除缓存操作

---------专题页面上线步骤---------

一、PC端专题上线步骤:

步骤一:进入PC端根目录
1、进入相应服务器:202.102.90.111
2、跳转到相应目录:cd /opt/ci123/www/html/view/

步骤二:创建新的专题目录:mkdir 目录名

步骤三:新的专题目录添加到版本库
1、svn add 目录名
2、svn ci -m '备注' 目录名

步骤四:获取新专题的svn地址
1、进入新专题目录:cd 目录名
2、获取svn地址:svn info
3、复制URL路径

步骤五:在本地checkout新的专题目录
1、回到本地磁盘,在统一存放专题文件目录的文件夹内,如:D:\appserv\www\pc
2、右击选择【SVN Checkout】,在本地生成新创建的svn文件夹

步骤六:本地专题提交到版本库
1、将专题文件代码拷贝到生成的svn文件夹
2、右击选择【SVN Commit】提交

步骤七:从版本库把新专题Up到服务器新建目录下
二、WAP端专题上线步骤:与PC专题上线步骤基本一致。
不同之处:
第一步:WAP端的相应目录:cd /opt/ci123/www/html/m/special/
第五步:因为PC和WAP的专题文件命名一样,所以在右击选择【SVN Checkout】的时候WAP页面应在不同的文件目录下,如:D:\appserv\www\m

---------专题页面更新文件及清缓存步骤---------

> 更新文件

情况一:在本地更新上传文件

1、在本地专题文件目录下右击选择【SVN Update】,从svn控制中心更新最新的程序到本地

2、修改完文件保存之后,该文件的状态不再是绿色的勾号,右击选择【SVN Commit】提交到svn版本库,状态也随之改变

3、回到linux界面,追溯至该专题文件目录下,将文件更新上传到svn版本库。执行:svn up 修改的文件名

情况二:在linux界面中直接修改文件

1、vim编辑修改文件后将文件更新,上传到svn版本库;

2、将改动过的内容提交到svn版本库,需填写本次修改的备注
执行:svn ci -m '填写修改备注' 修改的文件名
注:只有执行此提交操作后,在本地执行【SVN Update】才能更新到最新程序

如果更新的文件是CSS样式文件和图片,即会产生缓存。必须再执行清缓存操作

> 清缓存步骤

一、PC端专题清缓存步骤:

步骤一:dig项目域名得到前端代理的IP

步骤二:ssh 跳转到代理服务器

步骤三:打开nginx配置(squid等),获取静态文件缓存目录,查看IP端口号
1、打开nginx配置:vim /opt/ci123/nginx/conf/vhosts/www.ci123.com
2、找到【location ~ ^.*\.(css|js|swf|gif|png|jpg|jpeg|ico)$】
3、获得缓存目录proxy_temp_path的值【/tmp/www.ci123.com_cache/】
4、看最末尾的【proxy_pass】的IP端口是否为88。若是,则找到其上一级IP;若不是,则退出此配置文件。

步骤四:找到相应缓存目录(缓存目录一般为固定地址,不需要每次都去配置文件中查找)
1、进入固定缓存目录:cd /tmp/www.ci123.com_cache/
2、找到需要清除缓存的专题目录:cd special/专题文件名

步骤五:清除样式缓存(清除图片缓存等同操作)
1、打开相应目录:cd styles/
2、清除文件缓存:rm -f style.css

步骤六:回到第二步,循环操作,每个解析获得的服务器IP中都需要登陆进去清除缓存。
除了解析出来的服务器IP,一般还需要注意以下四个IP地址中是否存在缓存:
202.102.90.108
202.102.90.109
202.102.90.117
202.102.90.118

二、WAP端专题清缓存步骤:与PC专题清缓存步骤基本一致
不同之处:
第一步:WAP端域名解析,执行:dig m.ci123.com
第三步:WAP端相应nginx配置文件,执行:vim /opt/ci123/nginx/conf/vhosts/m.ci123.com
第四步:WAP端固定缓存目录,执行:cd /tmp/m_cache/

涉及知识点:
1、svn的常规使用
2、dig查找项目配置信息

其他:
1、svn的常规使用必须熟练,且注意几个比较容易犯错的地方。
2、常用的专题配置信息,一般很少更新,最好在本地做一些记录,不需要每次都去dig查找

移动端前端注意事项

整  理:晋哲

时  间:2015-12-09

说  明:移动端页面需要注意的细节问题


一、移动端固定<meta>标签
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">

解释:
第一个meta标签表示:强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览;
第二个meta标签是iphone设备中的safari私有meta标签,它表示:允许全屏模式浏览;
第三个meta标签也是iphone的私有标签,它指定的iphone中safari顶端的状态条的样式;
第四个meta标签表示:告诉设备忽略将页面中的数字识别为电话号码

二、细节样式处理,去除移动设备默认交互样式

1、解决 iPhone 横屏时默认会放大文字的问题,设为100%关闭字体大小自动调整功能
html{
 -webkit-text-size-adjust: 100%;
 -ms-text-size-adjust: 100%;
 text-size-adjust: 100%;
}

2、使用无衬线字体
body{font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif;}

3、禁止选中文本(有无文本选中需求,此为可选项)
html, body{
 -webkit-user-select: none;
 user-select: none;
}

4、快速滚动和回弹的效果
body{-webkit-overflow-scrolling: touch;}

5、禁止长按链接与图片弹出菜单
a, img{-webkit-touch-callout: none;}

6、去除移动端点击事件出现的背景阴影,也可更换颜色
a, input{-webkit-tap-highlight-color:transparent;}
注:还有一种妥协的方法是把页面非真实跳转链接的<a>标签换成其它标签,可以解决这个问题。

7、移动端清除输入框内阴影
在iOS上,输入框默认有内部阴影,但无法使用 box-shadow 来清除,如果不需要阴影,可以这样关闭:
input, textarea{
 border: 0; /* 方法1 */
 -webkit-appearance: none; /* 方法2 */
}

8、输入框点击默认会有蓝色外边框线
input{outline: none;}

三、HTML 代码相关

1、自适应布局模式
在编写CSS时,不建议把容器的宽度、高度定死。为达到适配各种手持设备,建议使用自适应布局模式,保证页面在各类浏览设备上都能够正常的显示,无需再次考虑设备的分辨率。

2、块级化<a>标签,或按需求尽可能扩大<a>标签囊括的范围
在触控手机上,为提升用户体验,尽可能的保证用户的可点击区域较大。
p1
3、动画效果中,使用 translate 比使用定位性能高

四、JS 事件相关

1、jQuery文件过大,移动端优先考虑使用zepto.js。实际情况中使用jQuery插件不兼容zepto时再考虑使用jQuery

2、click 事件存在 300ms 的延迟
在手机上绑定 click 事件,会使得操作有 300ms 的延迟,体验并不是很好,通常会使用封装的 tap 事件来代替 click 事件。

五、图片相关

1、使用<img>标签时,需根据实际需求设置[width:100%;]自适应撑满区域,还是设置固定宽高。

2、使用背景图片时,需注意实际用图与移动端呈现尺寸的比例为2:1,所以移动端借助[background-size]属性进行比例缩小,相应的按比例缩小[width]、[height]、[background-position]的值。
p2
3、可以合并的图标图片,尽量整合一张,并进行压缩

4、合并Sprite图时每个图片之间必须留有间距

5、能用CSS样式实现的,代替使用图片

6、较大的背景图片、banner图片等尺寸宽度不需要超过640px,切图时先改变图像大小,再进行压缩。

前端与后端配合须知

整 理:晋哲、雷媛

时 间:2015-11-12

说 明:前端在团队合作中如何与上下游紧密配合


---------- 与后端配合须知 ----------

一、HTML方面

1、不要通篇都是<div>标签,便于后端识别HTML代码。
比如:<ul><li>用于结构、样式相同的列表。

2、在需要结构、样式相同的列表时需注意:如果有个别列表上有特殊样式,尽量不去添加单独的class或内嵌style,选择使用伪类或伪元素选择器编写特殊的样式。保证列表的HTML代码结构的一致性。
比如<ul><li>列表,多个<a>标签列表等,往往需要设置最后一个元素的样式,可以使用伪元素选择器:last-child编写独立的样式。

3、注释很重要
当页面代码很多时,需用注释划分代码区块,注明用途,但也不宜文字过多。

4、前端需要会简单的php,if判断、for循环、include语句的改写
比如:一个列表一样的数据,无需写多个li标签,可以写一个li然后用for循环,精简代码;公共引用的header和footer部分使用include语句引入。

5、在Appserv中直接编写.php文件,利于查看生效的php代码,也方便后端改写。

6、需要后端for循环写入的list代码,前端在HTML中复制出两段以上,方便后端知晓,只有一段list代码不好找。
比如:<li>标签约定俗成地作为循环列表,后端人员看到<li>标签时也可引起注意。

7、需要后端if判断的代码,前端就不需要为了都显示出来而写多余的js代码。只需要显示一个代码段,其他代码段用style="display:none;"隐藏起来就可以了。
比如:下图弹出框有两个条件状态:领取成功、领取失败。将需要改变的代码段,一个显示,一个隐藏,之后后端只需if判断“popup-box”的部分即可。
ph-pic1
但需注意:选项卡的内容切换不需要后端if判断,所以还是属于前端js去控制显示和隐藏。

二、CSS方面

1、不要使用id选择器编写样式(编写js时可以设置id,建议jQuery用class选择器)。

2、交互切换性的部分,单独立一个特殊样式的class名,方便调取。
比如:<li>列表中需要一个凸显的样式,那么在<li>里面编写公共样式,再将变换的样式写在单独的class上。常提取出背景色background-color、背景图片background-image、字体颜色color、边框色border-color等样式。
ph-pic2
3、切图过程中,所有的图片都需要优化,手机端的图片不能超过70KB,避免后期后端还需去单独优化图片。

4、项目页面的样式放置在统一的外部css文件中;多个页面引用的公共样式需提炼出来放置一处,不要多处复制。

5、独立的页面,如活动页面,因css代码较少,根据后端需求,一般内嵌至HTML页面的<head>中。

三、JS方面

1、js代码统一放置在页面代码最下面,位于</body>之上;引用的外部js放置在编写的js代码之前,利于js代码的加载。

2、每个模块区域作用的js代码要分段编写,并注明每段js代码的用途,不要将所有的js代码混合在一起或合并起来,方便后端快速修改、删除,并合并前后端代码。

3、交互性js效果都需前端实现,减少后端工作量;根据用户体验,交互效果尽量考虑周全,减少遗漏。

4、若前期已有现成的js效果代码可以直接采用,比自己现编写更实用、更效率。

四、调试页面

1、做完页面之后前端必须先对照设计稿调试页面,包括电脑上的页面显示以及各种型号的手机上的呈现效果。在确认没有页面结构、样式问题后,再提交到后端。尽量避免HTML结构代码的返工修改。

2、对照设计图调试的同时,需要考虑用户的可操作性,以及页面的美观效果,避免后期上线时需再次修改。
比如:字体的大小是否合适、弹框文字是否居中、弹框的遮罩层点击之后弹框是否关闭(包括确定按钮、关闭按钮)等等,一系列影响美观和用户操作的细节问题。

3、浏览器审查元素调试页面样式更便捷、更直观、更准确。得到属性值后再去编辑器里修改。

4、页面调试时使用PageSpeed插件分析页面性能,进行相应调整。

5、当后端生成出测试页面时,前端需再次测试页面,确保页面代码布局没有遗漏,根据后端需求、实际环境调整样式。

五、及时沟通

1、前端工作开始之前先确认自己的上下游,拿到设计稿后,将JPG效果图传给后端预先知晓。

2、在拿到设计图的同时,整个图的流程需要搞清楚,若不清楚需要和后端或者是负责人及时沟通,避免后端与前端的逻辑流程差异过大,交接时出现不必要的麻烦。

3、当页面交接时有需要特别交代的地方,文字表达不清楚时,当面交流更效率。


---------- 与编辑、设计配合须知 ----------

1、总览页面效果图,看到不确定元素时,需与负责人沟通,确定其想要的布局形式以及交互动态效果,避免与需求不符。

2、需要交互变换效果的元素,先确认设计稿里是否有隐藏图层。如果没有再与设计确认交互样式。

3、当页面完成之后,可以交于编辑确认是否有遗漏,再提交给后端或上线。

4、专题页面需编辑提供的信息:
(1)专题项目命名
(2)网页标题:title
(3)关键字(PC端):keyword
(4)关键描述(PC端):description
(5)微信分享的文案和图片
(6)cnzz代码
(7)“往期回顾”版块所需图片及链接
(8)视频文件:pc版需要flv格式,wap端需要MP4格式