前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >oo-css面对对象的编程样式

oo-css面对对象的编程样式

作者头像
RobinsonZhang
发布2018-08-28 11:46:25
4060
发布2018-08-28 11:46:25
举报

前言

很多开发者觉得css很简单,如果有时间更愿意用在学习和研究js上,随着css3推出以及一些css的预处理语言和面对对象的编程css的方式的出现,css已经出现了更多的可变可提高空间。 而面对对象的css是指将可重用的元素样式定义为一个类,而与其对应的元素可以看成一个实例。这个类也支持继承,多态等,在大型项目中,为了降低维护成本,建议使用这样的方式。

作用以及注意事项

作用

  • 增强代码可维护性
  • 减少代码体积
  • 提高渲染效率
  • 组件库思想,栅格布局复用,减少选择器,方便扩展

注意事项

  • 不要直接定义子节点所有样式,应该把共性申明到父类(子节点和父类存在必然捆绑关系,不是容器与组件的关系,而是组件内部的处理)
代码语言:javascript
复制
//bad codes(每个子节点都定义同一字号)
.m-section .inner1{font-size:12px}
.m-section .inner2{font-size:12px}
// better codes
.m-section{
font-size:12px;}
  • 结构和皮肤相分离,控制结构以及基本样式的类与控制皮肤样式的类分离
代码语言:javascript
复制
//bad codes
<div class="m-demo">
.m-demo{
border:1px solid gray;
background:#e5e5e5;
}
// better codes
<div class="m-demo skin">
.m-demo{
border:1px solid gray;
}
.skin{
background:#e5e5e5;
}
  • 容器与内容分离,内容的样式不依赖于外部大容器或者布局环境,应该给出独立的样式。
代码语言:javascript
复制
//bad codes
<div class="container"><ul></ul></div>
.container  ul{
}
// better codes
<div class="container"><ul class="ranklist"></ul></div>
.container{
}
.ranklist{
}
  • 抽象出可重用的元素,建立组件库思想,发现页面可重用元素,用可重用元素拼接页面。
代码语言:javascript
复制
//bad codes
<div class="container">
  <section class="sec-a"></section>
  <section class="sec-b"></section>
  <section class="sec-c"></section>
</div>
.container {
}
.container .sec-a {
}
.container .sec-b {
}
.container .sec-c {
}
// better codes
<div class="container">
  <section class="sec-primary"></section>
  <section class="sec-primary"></section>
  <section class="sec-special"></section>
</div>
.container {
}
.sec-primary{
}
.sec-special{
}
  • 对象本身的样式向对象本身添加class而不是对父类添加。
代码语言:javascript
复制
//bad codes(只有这个模块需要添加字体颜色以及向上间距)
<div class="m-demo">
  <section class="price"></section>
</div>
.m-demo {
padding-top:20px;
color:#005;
}
.m-demo .price {
}
// better codes
<div class="m-demo">
  <section class="price"></section>
</div>
.m-demo {
}
.m-demo .price{
color:#005;
margin-top:20px;
}
  • 对象保持独立性。(可复用的独立性,与前面的共性申明到父类区分开,这里讲的是类与外部类的关系)
代码语言:javascript
复制
//bad codes(独立模块需要居中,依赖于外部容器)
<div class="container">
  <section class="m-price"></section>
</div>
.container {
text-align:center;
}
// better codes
<div class="container">
  <section class="m-price"></section>
</div>
.m-price{
text-align:center;
}
  • 避免使用id选择器,权重太好,无法复用。

代码实践

下面通过完整的代码实例编程体现完整的思想。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-12-172,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 作用以及注意事项
    • 作用
      • 注意事项
      • 代码实践
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档