页面样式开发实战之Css思路

730 阅读3分钟

页面样式开发实战一 —— 页面开发思路

##常见页面结构

首先我们来欣赏几张设计图:

image-20210717212235556

image-20210717212320092

image-20210717212634891

image-20210717212917572

以上图片来自墨刀素材库,感谢原作者,地址:modao.cc/community?t…

看完上面的设计图我们可以发现一些规律,常见的页面结构基本都是上下、左右、层叠(如下图所示)三种设计的结合,如古老的圣杯布局、双飞翼布局(三栏布局)也都是左右布局的演变。

image-20210717211739006 image-20210717211758995 image-20210717211914074

拿到设计图如何下手页面布局?

1.整体划分区块,是上下、左右哪种布局;区块内再进行细分(上下、左右结构)

  • 按照页面的业务功能划分
  • 划分区块后,分析哪块固定宽高,哪块自适应填充等

2.确定页面全局的色调(基础配色)、字体等级、常用class;

.color_primary{}
.color_success{}
.f14{font -size: 14px}
.f16{font -size: 16px}
.f20{font -size: 20px}

3.总结在页面中多次出现的公共的组件,抽为全局组件

开发顺序: 整体搭建外层框架 —— 定义色系、字体大小等变量 —— 开发公共组件

常见的排版写法

Flex布局

Grid布局

命名规范の起名太难了

BEM(Block Element Modifier)-- 团队约定

即:块级-元素名-状态动作, 按照页面意义来命名,我们使用这种命名方式,这也是element ui的命名方式。

  • block:模块,名字单词间用 - 连接

  • element:元素,模块的子元素,以 __ 与 block 连接

  • modifier:修饰,模块的变体,定义特殊模块,以 -- 与 block 连接

img

img

常见的还有其他的命名规则:

  • OOCSS(面向对象的css),设计与结构分离,样式和具体的开发界面分离,同一个css样式可以用于其他任何地方

    <div class="size1of4 bgBlue solidGray mts mlm mrm mbm"></div>
    			
    样式拆分到每一个组件上
    .size1of4 {width: 25%;}
    .bgBlue {background:blue}
    .solidGray {border: 1px solid #ccc}
    .mts {margin-top: 5px}
    .mrm {margin-right: 10px}
    .mbm {margin-bottom: 10px}
    .mlm {margin-left: 10px}
    
  • ACSS: Atomic Css(原子化的css):任何一种样式都定义为一个class

    img

  • SMACSS:按照布局划分css

    img

我们禁止的做法

本章节主要介绍样式开发中不友好的(我们不建议的写法)

  1. 无规划就着急上手开发:开发之前应该坐整个页面的模块规划,和布局排版
  2. 层级嵌套太深:开发之前的思路要明确,尽量减少页面元素的层级(这对diff算法也更加友好)
  3. 嵌套较深时候,用太多的元素选择器,很容易导致难以维护;如页面包涵多处ul-li,被嵌套多层使用,修改时候难以找到对应的元素:这个时候适当层架增加class能起到更好可读性,利于维护和变更
  4. class命名太随意,没有语义化:【按照上一节我们约定的class起名方式,大家后面就不会发愁了】

reset css 重制样式

为了避免浏览器的api兼容性和margin、padding等box-sizing问题,我们需要做初始化样式的工作。

reset.css

/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
	display: block;
}
body {
	line-height: 1;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}

项目通用css基础样式

拿到设计图时,要先约定,划分出项目中通用样式,如下:

base.css

.f14{font -size: 14px}
.f16{font -size: 16px}
.f20{font -size: 20px}