面向对象CSS FAQ[译](5)
作者:ytzong 发布时间:2009-10-27 15:59:00
为什么用了_ hack?我能把这些代码放在单独的文件中吗?或者添加IE专有的class?
很显然,首先考虑的是尽可能少和长远。
添加一个单独的样式表奖增加一个额外的HTTP请求,增加整体文件的大小,这早已是浏览器性能的对立点
我喜欢把一个对象的代码放在一个地方。我认为这有助于减少hack的数量,尤其是当项目随时间而发展
IE6-的开发工具非常原始,这使得hack和普通代码放在一起更加重要。我想能尽快找到一个可以使用属性的IE bug。同样,我认为这有助于减少hack
规则表明浏览器理解不了的属性会被忽略。对IE6-使用_早已众所周知,可以合理的预料好的浏览器将会忽略这个属性
使用条件注释意味着每个HTML页面必须包含一个IE专用样式。某一天(我不能等了!)当IE6的市场份额下降至像IE5那样低时,我将去除这些代码,但最后我要做的是触及百级或千级的HTML页面。我宁愿只有依赖CSS hack的CSS,而不是把它放在HTML中。不幸的是,恕我直言,IE6兼容性的末日比我们期望的要更加长远,因为IE中的quirksmode会回落到IE5.5的模式
我认为我的选择有助于减少hack的总体数量,提升性能,并只有忽略不计的风险。话说回来,如果觉得代码中的_令你作呕,你完全可以移至单独的文件。
为了添加表象效果比如边框而使用空 <b> 标签容器对象,会给屏幕阅读器用户带来问题吗?
不会,幸运的是屏幕阅读器会忽略空的b标签。使用这个表象标签(b是加粗)来实现表象具有优势。这个标签可以通过服务器端脚本包含,以至于有一天所有的CSS圆角和阴影都支持了,可以关闭脚本并拥有漂亮,干净,语义化的HTML。
OOCSS声称避免位置依赖的样式。是否意味着我不能使用类似 .myModule .title 的派生选择器?
不使用派生选择器没什么阻碍,只是把它们放在更高的DOM树而已。避免在body或页面中最外层的div放置wide-net class或id,然后对对象产生的变量写大量的样式。这不能复用,同时会使页面渲染变慢。相反,通过直接在对象上添加一个class来增加一个多余的“local”变量(并对其子元素写派生样式)。
一个好的经验是一个容器主体(body of a container)内的任意元素显然是一个单独的对象。
这无可厚非,因为UL显然是一个单独的对象:
#sidebar ul { ... }
因此,carousel显然不是body对象的一部分:
body.browseProducts .carousel
这是适当的层叠应用,因为子节点真正的是较大的父对象的一部分。b(角)和inner显然隶属于moudle,它们不能独立存在:
.myModule { ... }
.myModule b { ... }
.myModule .inner { ... }
如何贡献?
最好的方法是涉足其中,开始使用代码(libraries, grids, fonts)并 提交 bug 报告及功能需求 。 我建了一个 OOCSS google group 来进行超过140个twitter字符的讨论。
译注:OOCSS的官方站点为 http://oocss.org/,有一些例子及下载等。


猜你喜欢
- mitmproxy是一个支持HTTP和HTTPS的抓包程序,类似Fiddler、Charles的功能,只不过它通过控制台的形式操作。此外,m
- jQuery 操作 CSSaddClass() - 向被选元素添加一个或多个类removeClass() - 从被选元素删除一个或多个类to
- 本文实例讲述了python实现查找excel里某一列重复数据并且剔除后打印的方法。分享给大家供大家参考。具体分析如下:在python里面ex
- Python面向对象编程(一)Python面向对象编程(二)Python面向对象编程(三)和其它编程语言相比,Python 在尽可能不增加新
- 在python用import或者from...import来导入相应的模块。模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我
- 本文实例讲述了微信小程序picker组件简单用法。分享给大家供大家参考,具体如下:picker滚动选择器,现支持三种选择器,通过mode来区
- js实现点击掉落特效 先看看效果图 话不多说代码<!DOCTYPE HTML><html><head
- 起步Django 是个同步框架,本文并不是 让 Django 变成异步框架。而是对于在一个 view 中需要请求多次 http api 的场
- 你可能会遇到这样的要求,一个脚本,只允许有一个实例。在python中,为了实现这个需求,可以引入fcntl模块对文件加一个排他锁,这样一来,
- 为了保护系统或数据安全,我们需要最佳随机密码。这里使用unix系统定义的文件设备/dev/random,从中获取随机数生成器的种子。需求说明
- 在Flask中配置日志在Flask应用程序中,可以使用Python的标准logging模块来配置日志记录。以下是一个简单的示例,在其中将日志
- 这篇文章主要介绍了原生Java操作mysql数据库过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 1.图像读取使用cv2.imread(filepath,flags)读入图像filepath: 读入图像完整路径(绝对路径,相对路径)fla
- Django中想要把模型类聚合得到想要的数据可以用F对象。比如有模型类A和B,A和B之间有外键关联在一起,A是子表,B是父表(反过来没试过。
- 如何让Activiti-Explorer使用sql server数据库从官网下载的Activiti-explorer的war文件内部默认是使
- 1、使用系统函数__import_()stringmodule = __import__('string')2、使用imp
- 本文是基于Apache poi类实现的批量导入读取Excel文件,所以要先引入Apache poi的依赖<dependency>
- 1、背景由于办公需要“每天定时推送某消息用来提醒群里面所有人”,于是决定用企业微信自带的机器人来实现此功能。具体方法我来一一讲述。2、企业微
- 本文实例讲述了MySQL关于字符串中数字排序的问题。分享给大家供大家参考,具体如下:MySQL字符串相信大家都不陌生,在MySQL字符串排序
- 在一个比较好的数据集中,比如在分辨不同文字的任务中,一下是几个样本使用VGG19,vol_acc和acc基本是同步保持增长的,比如40/40