“离娄之明,公输子之巧,不以规矩,不能成方圆。” -- 战国·邹·孟轲《孟子·离娄上》
基于DRY原则,本文接下来在活动重构规范Part1-活动页面的基本框架的基础上,将活动页面通用的html代码和css代码整理成模板。
模板位置:
走运营平台发布的活动模板
{活动svn url}/2013/yydd_xx/
正常发布的活动
{活动svn url}/{html|css}/event/yydd_xx/index.html
为什么需要模板?
- 统一编码规范,便于交叉维护
- 最大限度减少编码工作量
- 对于行为交互的组件(如分享微博、边栏导航),使用相同结构的组件,便于将交互逻辑封装到js中复用,避免每个活动都要写同样的js
模板的具体内容
注:下面提到的基本结构、组件,我们在模板中定义了基本的样式,
实际做活动时不需要考虑布局、不需要考虑背景图怎么定位。。。
1, 通栏 (act_content)
通栏用于组织大块相关内容。顾名思义,通栏是不设宽度的,
因此有时候可以根据需要在通栏内部私有背景图层。
语义有点像h5中的article
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <div class="act_wrapper"> <div class="act_wrapper_inner">
<div class="act_content act_contentA">
</div>
<div class="act_bgs"> <div class="act_bg act_bg1"></div> <div class="act_bg act_bg{n}"></div> </div>
</div> </div>
|
2,背景图 (act_bgs)
一般的活动只有一组背景图结构。
有时候可根据需要在通栏内部设置该通栏私有的背景图层。
1 2 3 4
| <div class="act_bgs"> <div class="act_bg act_bg1"></div> <div class="act_bg act_bg{n}"></div> </div>
|
模板样式里做了大部分处理,你只需要指定图片地址,设定图片高度即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| .act_bgs{ position:absolute; left:50%; top:0; z-index:1; width:~'@{bgWidth}px'; @haftWidth:@bgWidth/2; margin-left:~'-@{haftWidth}px'; } .act_bg{ width:~'@{bgWidth}px'; background-position:50% 0; background-repeat: no-repeat; }
|
3, 楼层 (act_sec)
一个通栏里可以有N个楼层。
每个楼层宽度为窄版的990px,通过less变量配置。
sec_bg用于设置楼层私有背景图层;sec_hd、sec_bd、sec_ft根据需要取舍。
语义有点像h5中的section (段落)。
1 2 3 4 5 6
| <div class="act_sec act_sec1"> <div class="sec_bg"></div> <div class="sec_hd"></div> <div class="sec_bd"></div> <div class="sec_ft"></div> </div>
|
楼层的模板样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| .act_sec{ background: @bgSection; position: relative; width: ~'@{contentWidth}px'; margin:auto; overflow: hidden; .sec_hd,.sec_bd,.sec_ft{ position:relative; z-index: 2; } .sec_bg{ position:absolute; z-index: 1; top:0; left:0; } }
|
4, 内容碎片 (act_flag、act_xxx)
内容碎片为页面结构的最小单位,里面是各种个性内容模块、组件。
一个楼层里可以有N个内容碎片。
根据定位方式不同碎片分为2种,绝对定位的碎片和其它碎片。
绝对定位的碎片统一用act_flag作为基类名,其他碎片为act_xxx。
1 2 3 4
| <div class="act_flag s1_flag1"></div>
<div class="act_xxx"></div>
|
绝对定位的碎片的模板样式,只定义了定位方式。个性样式定义width、height、top和left即可。
1 2 3
| .act_flag{ position:absolute; }
|
5,背景图链接热区 (act_hotlnk)
背景图链接热区用于在某个背景图位置添加链接。
具有固定的html结构。
私有活动样式只需要定义它的top和left值即可。
1 2 3
| <div class="act_hotlnk s1_flag5"> <a title="xxx" href="#xxx"></a> </div>
|
背景图链接热区的模板样式
1 2 3 4 5 6 7 8 9 10 11 12 13
| .act_hotlnk{ position: absolute; a{ display: block; .size(100%,100%); &:hover{ text-decoration: none; } } .amod_icon span{ cursor:pointer; } }
|
6, 图片按钮组件和图标组件
* 图片按钮组件和图标组件使用类似的结构,抛弃传统的background-position的方式,
使用span标签承载雪碧图,通过设置margin-top和margin-left来定位雪碧图的位置。
* 按钮hover态可以利用less自动计算实现
* 不用考虑png24的ie6问题,因为模板样式中已经给你处理好!
1 2 3 4
| <a href="#" class="act_btn abtn_xxx"><span></span></a>
<i class="act_icon aico_xxx"><span></span></i>
|
图片按钮组件和图标组件的模板样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| .act_btn{ display:inline-block; position:relative; line-height:5000px; overflow:hidden; outline: none; } .act_icon{ position: relative; display: inline-block; overflow:hidden; } .act_icon span, .act_btn span{ cursor:default; position:absolute; left:0; top:0; width:@spriteWidth; height:@spriteHeight; background:url(@img0) 0 0 no-repeat; .ie6PNGFix(@img0); } .act_btn,.act_btn span{cursor:pointer;} .act_btn:hover span{left:~'-@{spriteHoverGap}px';cursor:pointer;} .act_btn:hover {*zoom:1;}
|
7, 基本浮动列表 (act_list)
* ul.act_list,li左浮动。自身清楚浮动所以不用加clearfix。
* ul.act_list 适用于商品列表、链接列表。
* ol.act_list li没有浮动,适用于活动规则
1 2 3 4 5 6 7 8 9
| <div class="act_goods"> <ul class="act_list goods_list1"> <li> <div class="act_good"> ... </div> </li> </ul> </div>
|
基本浮动列表的模板样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| .act_list{ overflow:hidden; *zoom:1; &:before, &:after { display: table; content: ""; // Fixes Opera/contenteditable bug: // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952 line-height: 0; } &:after { clear: both; } li{ float:left; display: inline; margin-right:10px; &.last{ margin-right:0; } } } ol.act_list li{ float:none; width:auto; margin-left:0; display: list-item; } ol.act_list,ol.act_list li{ list-style: decimal inside; }
|
8, 边栏导航组件
less自动计算它的位置
js自定处理它的交互效果
1 2 3 4 5 6 7 8
| <div id="actSideNav" class="act_sidenav"> <div class="sidenav_bg"></div> <div class="sidenav_hd"></div> <div class="sidenav_bd"></div> </div>
|
边栏导航组件的模板样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| .act_sidenav{ position: fixed; z-index: 100; top:auto; left:50%; @haftWidth:@contentWidth/2+8; margin-left:~'@{haftWidth}px'; bottom:0px; _position:absolute; _top:200px; _bottom:auto; .size(176px,521px); .sidenav_bg{ position:absolute; .size(176px,521px); top:0; left:0; z-index: 1; background: url(@img19) no-repeat; .ie6PNGFix(@img19); } }
|
9,其他助手类
这个不解释了,看看类名就知道怎么用。
1 2 3 4 5 6 7
| .act_clear{clear:both;} .act_hide{display: none !important;} .act_hidden{visibility: hidden !important;} .act_show{display: block !important;} .act_visible{visibility: visible !important;} .act_fl{float:left;display: inline;} .act_fr{float:right;display: inline;}
|
Part3预告
活动重构规范Part3-如何使用模板快速制作活动