zoukankan      html  css  js  c++  java
  • CSS规范

    CSS规范 - 分类方法

    CSS文件的分类和引用顺序

    通常,一个项目我们只引用一个CSS,但是对于较大的项目,我们需要把CSS文件进行分类。

    我们按照CSS的性质和用途,将CSS文件分成“公共型样式”、“特殊型样式”、“皮肤型样式”,并以此顺序引用(按需求决定是否添加版本号)。

    1. 公共型样式:包括了以下几个部分:“标签的重置和设置默认值”、“统一调用背景图和清除浮动或其他需统一处理的长样式”、“网站通用布局”、“通用模块和其扩展”、“元件和其扩展”、“功能类样式”、“皮肤类样式”。
    2. 特殊型样式:当某个栏目或页面的样式与网站整体差异较大或者维护率较高时,可以独立引用一个样式:“特殊的布局、模块和元件及扩展”、“特殊的功能、颜色和背景”,也可以是某个大型控件或模块的独立样式。
    3. 皮肤型样式:如果产品需要换肤功能,那么我们需要将颜色、背景等抽离出来放在这里。
    <link href="assets/css/global.css" rel="stylesheet" type="text/css"/>
    <link href="assets/css/index.css" rel="stylesheet" type="text/css"/>
    <link href="assets/css/skin.css" rel="stylesheet" type="text/css"/>

    CSS内部的分类及其顺序

    1. 重置(reset)和默认(base)(tags):消除默认样式和浏览器差异,并设置部分标签的初始样式,以减少后面的重复劳动!你可以根据你的网站需求设置!
    2. 统一处理:建议在这个位置统一调用背景图(这里指多个布局或模块或元件共用的图)和清除浮动(这里指通用性较高的布局、模块、元件内的清除)等统一设置处理的样式!
    3. 布局(grid)(.g-):将页面分割为几个大块,通常有头部、主体、主栏、侧栏、尾部等!
    4. 模块(module)(.m-):通常是一个语义化的可以重复使用的较大的整体!比如导航、登录、注册、各种列表、评论、搜索等!
    5. 元件(unit)(.u-):通常是一个不可再分的较为小巧的个体,通常被重复用于各种模块中!比如按钮、输入框、loading、图标等!
    6. 功能(function)(.f-):为方便一些常用样式的使用,我们将这些使用率较高的样式剥离出来,按需使用,通常这些选择器具有固定样式表现,比如清除浮动等!不可滥用!
    7. 皮肤(skin)(.s-):如果你需要把皮肤型的样式抽离出来,通常为文字色、背景色(图)、边框色等,非换肤型网站通常只提取文字色!非换肤型网站不可滥用此类!
    8. 状态(.z-):为状态类样式加入前缀,统一标识,方便识别,她只能组合使用或作为后代出现(.u-ipt.z-dis{},.m-list li.z-sel{}),具体详见命名规则的扩展相关项。

    功能类和皮肤类样式为表现化的样式,请不要滥用!以上顺序可以按需求适当调整。

    以上分类的命名方法详见命名规则

    /* 重置 */
    div,p,ul,ol,li{margin:0;padding:0;}
    /* 默认 */
    strong,em{font-style:normal;font-weight:bold;}
    /* 统一调用背景图 */
    .m-logo a,.m-nav a,.m-nav em{background:url(images/sprite.png) no-repeat 9999px 9999px;}
    /* 统一清除浮动 */
    .g-bdc:after,.m-dimg ul:after,.u-tab:after{display:block;visibility:hidden;clear:both;height:0;overflow:hidden;content:'.';}
    .g-bdc,.m-dimg ul,.u-tab{zoom:1;}
    /* 布局 */
    .g-sd{float:left;300px;}
    /* 模块 */
    .m-logo{200px;height:50px;}
    /* 元件 */
    .u-btn{height:20px;border:1px solid #333;}
    /* 功能 */
    .f-tac{text-align:center;}
    /* 皮肤 */
    .s-fc,a.s-fc:hover{color:#fff;}

    CSS规范 - 命名规则

    使用类选择器,放弃ID选择器

    ID在一个页面中的唯一性导致了如果以ID为选择器来写CSS,就无法重用。

    特殊字符:"-"连字符

    "-"在本规范中并不表示连字符的含义。

    她只表示两种含义:分类前缀分隔符、扩展分隔符,详见以下具体规则。

    分类的命名方法:使用单个字母+"-"为前缀

    布局(grid)(.g-);模块(module)(.m-);元件(unit)(.u-);功能(function)(.f-);皮肤(skin)(.s-);状态(.z-)。

    对以上的解释详情参见:分类方法中的“CSS内部的分类及其顺序”。

    注:在你样式中的选择器总是要以上面前五类开头,然后在里面使用后代选择器。

      如果这五类不能满足你的需求,你可以另外定义一个或多个大类,但必须符合单个字母+"-"为前缀的命名规则,即 .x- 的格式。

      特殊:.j-将被专用于JS获取节点,请勿使用.j-定义样式。

    后代选择器命名

    • 约定不以单个字母+"-"为前缀且长度大于等于2的类选择器为后代选择器,如:.item为m-list模块里的每一个项,.text为m-list模块里的文本部分:.m-list .item{}.m-list .text{}。
    • 一个语义化的标签也可以是后代选择器,比如:.m-list li{}。
    • 不允许单个字母的类选择器出现,原因详见下面的“模块和元件的后代选择器的扩展类”。

    通过使用后代选择器的方法,你不需要考虑他的命名是否已被使用,因为他只在当前模块或元件中生效,同样的样式名可以在不同的模块或元件中重复使用,互不干扰;在多人协作或者分模块协作的时候效果尤为明显!

    后代选择器不需要完整表现结构树层级,尽量能短则短。

    注:后代选择器不要在页面布局中使用,因为污染的可能性较大;

    CSS规范 - 最佳实践

    最佳选择器写法(模块)

    /* 这是某个模块 */
    .m-nav{}/* 模块容器 */
    .m-nav li,.m-nav a{}/* 先共性  优化组合 */
    .m-nav li{}/* 后个性  语义化标签选择器 */
    .m-nav a{}/* 后个性中的共性 按结构顺序 */
    .m-nav a.a1{}/* 后个性中的个性 */
    .m-nav a.a2{}/* 后个性中的个性 */
    .m-nav .z-crt a{}/* 交互状态变化 */
    .m-nav .z-crt a.a1{}
    .m-nav .z-crt a.a2{}
    .m-nav .btn{}/* 典型后代选择器 */
    .m-nav .btn-1{}/* 典型后代选择器扩展 */
    .m-nav .btn-dis{}/* 典型后代选择器扩展(状态) */
    .m-nav .btn.z-dis{}/* 作用同上,请二选一(如果可以不兼容IE6时使用) */
    .m-nav .m-sch{}/* 控制内部其他模块位置 */
    .m-nav .u-sel{}/* 控制内部其他元件位置 */
    .m-nav-1{}/* 模块扩展 */
    .m-nav-1 li{}
    .m-nav-dis{}/* 模块扩展(状态) */
    .m-nav.z-dis{}/* 作用同上,请二选一(如果可以不兼容IE6时使用) */

    统一语义理解和命名

    布局(.g-)
    语义命名简写
    文档 doc doc
    头部 head hd
    主体 body bd
    尾部 foot ft
    主栏 main mn
    主栏子容器 mainc mnc
    侧栏 side sd
    侧栏子容器 sidec sdc
    盒容器 wrap/box wrap/box
    模块(.m-)、元件(.u-)
    语义命名简写
    导航 nav nav
    子导航 subnav snav
    面包屑 crumb crm
    菜单 menu menu
    选项卡 tab tab
    标题区 head/title hd/tt
    内容区 body/content bd/ct
    列表 list lst
    表格 table tb
    表单 form fm
    热点 hot hot
    排行 top top
    登录 login log
    标志 logo logo
    广告 advertise ad
    搜索 search sch
    幻灯 slide sld
    提示 tips tips
    帮助 help help
    新闻 news news
    下载 download dld
    注册 regist reg
    投票 vote vote
    版权 copyright cprt
    结果 result rst
    标题 title tt
    按钮 button btn
    输入 input ipt
    功能(.f-)
    语义命名简写
    浮动清除 clearboth cb
    向左浮动 floatleft fl
    向右浮动 floatright fr
    内联块级 inlineblock ib
    文本居中 textaligncenter tac
    文本居右 textalignright tar
    文本居左 textalignleft tal
    垂直居中 verticalalignmiddle vam
    溢出隐藏 overflowhidden oh
    完全消失 displaynone dn
    字体大小 fontsize fs
    字体粗细 fontweight fw
    皮肤(.s-)
    语义命名简写
    字体颜色 fontcolor fc
    背景 background bg
    背景颜色 backgroundcolor bgc
    背景图片 backgroundimage bgi
    背景定位 backgroundposition bgp
    边框颜色 bordercolor bdc
    状态(.z-)
    语义命名简写
    选中 selected sel
    当前 current crt
    显示 show show
    隐藏 hide hide
    打开 open open
    关闭 close close
    出错 error err
    不可用 disabled dis
  • 相关阅读:
    c++ 优化的动态数组 Vector
    C++ 重载赋值运算符
    k8s中引入外部服务
    MySQL----mysql_secure_installation 安全配置向导
    elk参考连接
    限制不同的用户操作k8s的资源
    tcpdump 抓包命令使用教程
    日志管理——rsyslog、logrotate
    lsyncd配置文件详细说明
    Systemd 服务配置文件(转载)
  • 原文地址:https://www.cnblogs.com/onflying/p/3106789.html
Copyright © 2011-2022 走看看