CSS-编码规范--垂直居中--提示栏

不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的。 ----代码黄金定律

一、前言

在写css时,每次都会遇到是先控制子元素还是先控制父容器;是先把明显的样式写出来(如颜色、背景),还是先控制元素位置等等。自己由于是初学,没有什么固定的书写规范,看一些规范性的文档,来规范自己以后的demo。

二、html篇

优先使用语义化的html
  对于html的编写,我们应尽量选择语义化的额html,什么是语义化的html呢?简单来说就是,使用合适的标签,标记合适的内容。它们可以帮助程序员更好的理解网站中信息的不同方面。但是不要以牺牲实用性为代价。任何时候都要尽量使用最少的标签并保持最小的复杂度。

布尔(boolean)型属性
布尔型属性可以在声明时不赋值。XHTML 规范要求为其赋值,但是 HTML5 规范不需要。
元素的布尔型属性如果有值,就是 true,如果没有值,就是 false。
如果一定要为其赋值的话,请参考 WhatWG 规范:
如果属性存在,其值必须是空字符串或 [...] 属性的规范名称,并且不要在首尾添加空白符。简单来说,就是不用赋值。

对于属性值的命名
  应基于功能命名、基于内容命名、基于表现命名,使表达简略、明了,方便阅读html。

常见的属性值命名
.wrap或.wrapper -- 用于外侧包裹
.container或 .ct -- 包裹容器
.header -- 用于头部
.body -- 页面 body
.footer -- 页面尾部
aside、sidebar -- 用于侧边栏
.content -- 和header footer 对应,用于主要内容
.navigation -- 导航元素
.pagination -- 分页

.tabs > .tab -- tab 切换
.breadcrumbs -- 导航列表、面包屑
.dropdown -- 下拉菜单
.article -- 文章
.main -- 用于主体
.thumbnail -- 头像,小图像
.media -- 媒体资源
.panel -- 面板
.tooltip -- 鼠标放置上去的提示
.popup -- 鼠标点击弹出的提示

.button、.btn -- 按钮
.ad -- 广告
.subnav -- 二级导航
.menu -- 菜单
.tag -- 标签
.message或者.notice -- 提示消息
.summary -- 摘要
.logo -- logo
.search -- 搜索框
.login -- 登录

.register -- 注册
.username -- 用户名
.password -- 密码
.banner -- 广告条
.copyright -- 版权
.modal或者 .dialog -- 弹窗

三、CSS规范

语法
tab 用两个空格表示
css的 :后加个空格, {前加个空格
每条声明后都加上分号
换行,而不是放到一行
颜色用小写,用缩写, #fff
小数不用写前缀, 0.5s -> .5s;0不用加单位
尽量缩写, margin: 5px 10px 5px 10px; -> margin: 5px 10px;

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

Positioning
Box model
Typographic
Visual
  由于定位(positioning)可以从正常的文档流中移除元素,并且还能覆盖盒模型(box model)相关的样式,因此排在首位。盒模型排在第二位,因为它决定了组件的尺寸和位置。

简写形式的属性声明
  在需要显示地设置所有值的情况下,应当尽量限制使用简写形式的属性声明。常见的滥用简写属性声明的情况如下:
padding
margin
font
background
border
border-radius
示例:
.element { margin-bottom: 10px; background-color: red; background-image: url("image.jpg"); border-top-left-radius: 3px; border-top-right-radius: 3px; }
  大部分情况下,我们不需要为简写形式的属性声明指定所有值。例如,HTML 的 heading 元素只需要设置上、下边距(margin)的值,因此,在必要的时候,只需覆盖这两个值就可以。过度使用简写形式的属性声明会导致代码混乱,并且会对属性值带来不必要的覆盖从而引起意外的副作用。

四、居中有几种实现方式,给出代码范例

水平居中
CSS里实现水平居中非常容易,inline元素用text-align:center;,block元素用margin:auto;就行了。
demo:http://js.jirengu.com/judofubevu/1/edit
垂直居中
1、利用table-cell的作用和<td>一样,在<td>元素的文本是有规则的左对齐,在默认情况下,其父容器display:table;加上vertical-align:middle;
demo:http://js.jirengu.com/gagitezino
说明:因为父元素的宽度变小了,不像原来是 100% 的宽度。原因是 table 本质上也是 inline 元素,因此现在变成 inline 的父元素,它的宽度将与子元素的宽度相同。当然,我们也可以为父元素加上 width: 100% 来强制指定它的宽度。
2、 利用相对定位和transform
demo: http://js.jirengu.com/qaqarodajo/1/edit
3、利用flex,弹性布局。先将元素定义为弹性容器,其子元素则成为弹性项目。值 flex 使弹性容器成为块级元素。justify-content: center;使元素居中;flex-direction: column;使子元素与父容器主轴起始点一致。不过使用flex,IE11才开始支持。
demo:http://js.jirengu.com/zuzupoquji/2/edit
4、可以使用calc()为一个对象设置一个左右两边相等的外边距,calc()的另外一个用例是用来确保一个域的大小适合当前的可用空间,而不会在保持合适的外边距的同时,因挤压超出其容器的边缘。
demo:http://js.jirengu.com/fadisucefi/1/edit
5、 绝对定位实现垂直居中利用transform,或者不用,使用margin-left代替也行。只要知道宽高,如果不知道,就用transform。
demo:http://js.jirengu.com/bowaqabafu/1/edit

五、实现如下效果,每种效果都只使用一个html 标签来实现 效果范例

用三种不同的方法,创建相同的样式。
demo:http://js.jirengu.com/vofeyenuzi/5/edit

参考资料:
1、https://google.github.io/styleguide/htmlcssguide.html#General_Style_Rules
2、http://codeguide.bootcss.com/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,790评论 1 92
  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 8,204评论 3 30
  • 1.绝对定位居中技术 我们一直用margin:auto实现水平居中,而一直认为margin:auto不能实现垂直居...
    DecadeHeart阅读 1,619评论 0 3
  • 谈了一次失败的恋爱,觉得整个人都老了,忽然意识到自己不再是一个孩子,很现实。
    DoraemansDora阅读 124评论 0 0
  • 第一次这么主动地去玩一个游戏,主动地去理解一个手游里面的许多设定,收获还是非常多的。 刀塔传奇,构建在dota角...
    Centlin阅读 372评论 1 3