Web开发之CSS
Web开发,除了后台开发和数据开发,很大一块是前端开发。前端开发中使用最大的技术是:HTML(现在也有项目开始使用HTML5了,比如沪江英语的听力曲线使用html5 canvas绘制的),CSS(这个也有一个新版本,CSS3.0。很多应用出现圆角效果,估计都使用到了3.0的新特性),Javascript(其实这个也有版本的哦!盛大的权一大师就在研究ECMAScript5了),一个javascript框架,比如说jQuery,Dojo,YUI等等。
主要讲解CSS性能调优,内容涉及一下几个方面。 1.Style标签的调优 2.特殊CSS样式的使用 3.CSS的缩写 4.CSS的声明(省略) 5.CSS的选择器 第一点: 把Stylesheets文件放在HTML页面的头部,把Javascript文件放在页面的底部。这也是《高性能网站开发》中的建议方法。对于 @import 和 <link> 两种加载外部 CSS 文件的方式:@import 就相当于是把 <link> 标签放在页面的底部,所以从优化性能的角度看,应该尽量避免使用 @import 命令。
第二点: 避免是有某一特定浏览器的技术的。比如IE支持的CSS Expression和AlphaImageLoader Filter。
第三点: CSS的缩写。原来把 #FFFFFF写成#FFF也是可以减小代码量,提高性能的呀!在项目中PM经常会指导我们,把Font-style: italic; Font-variant: small-caps; Font-weight: bold; Font-size: 1em; Line-height: 140%; Font-family: sans-serif; 写成一行,font: italic small-caps bold 1em 140% sans-serief。不过这个对于熟练的工程师来说还好,但是对于初学者来说,这样的样式不够清晰易懂。因为我没有分析过浏览器解析和渲染样式的原理,写成一句是否真的有利于各个浏览器提供性能。我还是不敢肯定。
第四点: CSS选择器。周祥老师给出了这个例子,让我大吃一惊。 示例一:Child Selector #toc > li {font-weight: bold} ,他说:浏览器是“从右往左”来分析 class 的,它的匹配规则是从右向左来进行匹配的。这里,浏览器首先会查找页面上所有的“li”节点,然后再去做进一步的判断:如果它的父节点的 id 为“toc”,则匹配成功。PS:不过我们项目基本不用这个样式,因为IE6不支持子代选择器。不过他在后面列举 示例二:Descendant selector #toc li {font-weight: bold} ,这个效率比之前的“child selector”效率更慢,而且要慢很多。浏览器先便利所有的“li”节点,然后步步上溯其父节点,直到 DOM 结构的根节点(document),如果有某个节点的 id 为“toc”,则匹配成功,否则继续查找下一个“li”节点。不是吧!这个样式在我们开发的Web项目中用到的特别多呀!不过我们现在也逐步习惯一级一级的定位元素,减少浏览器在DOM结果查找的节点的时间。 如果一个标签有id,直接使用ID seletor,比如 <div id="footer"></div>,不要写 div#footer,查找效率很低。但是关于class选择器,我倒是觉得可以使用tag和class同时定位,有时需要这样的需要。 treehead treerow treecell {...} ----->> treehead > treerow > treecell {...} Descendant 选择器是耗时相对高的选择器,通常来讲,它在 CSS 里的使用应该是尽量避免的,如果能用 child 选择器替代就应该尽量这样去做。还是那个原因,IE6不支持,所以不使用这个。
同时推荐2本淘宝工程师翻译的书,确实不错。目前看完第一本,正在看第二本。作者是前Google Web工程师,翻译都是由口碑前端团队完成的。
- Java数据结构和算法(十五)——无权无向图
- Java数据结构和算法(十三)——哈希表
- Java数据结构和算法(十二)——2-3-4树
- UDF编程操作实现
- GitHub敏感信息扫描工具
- Java数据结构和算法(九)——高级排序
- Java数据结构和算法(十一)——红黑树
- Entity Framework Core 之数据库迁移
- 常见Web源码泄露总结
- 浅析Entity Framework Core2.0的日志记录与动态查询条件
- ASP.NET Core中使用IOC三部曲(三.采用替换后的Autofac来实现AOP拦截)
- 【weakfilescan】敏感文件扫描工具
- ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)
- ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器)
- HTML 教程
- HTML 简介
- html div 标签介绍
- html span 标签介绍
- html a 超链接标签
- HTML Br换行标签介绍
- HTML P段落标签介绍
- HTML br与p标签区别
- Html H 标题标签
- html px em pt长度单位
- HTML form 标签
- HTML radio 单选框
- HTML B 加粗标签
- HTML strong加粗粗体标签
- HTML em 强调标签
- HTML i 斜体标签
- HTML u下划线标签
- HTML s 删除线标签
- Html img 图片标签
- Html上标注sup与下标注sub标签
- HTML nobr 禁止换行标签
- HTML hr 水平线标签
- HTML label 标签
- HTML input 标签
- HTML textarea 标签
- HTML select下拉列表标签
- HTML checkbox 多选框
- HTML font color 标签
- HTML iframe 框架标签
- HTML Table 表格
- HTML dl dt dd 标签
- HTML ol li有序列表标签
- HTML ul li 无序列表标签
- HTML 注释
- CSS 教程
- CSS 简介
- CSS 语法
- CSS Id 和 Class选择器
- CSS 样式的创建
- CSS background 背景介绍
- CSS 文本样式
- CSS font 字体
- CSS A 链接
- CSS ul ol列表样式
- CSS TABLE 样式
- CSS 框模型
- CSS border 边框
- CSS Outlines 轮廓
- CSS 外边距 Margin
- CSS Padding 内边距
- CSS 分组和嵌套选择器
- CSS 尺寸 (Dimension)
- CSS Display 属性
- CSS Position 定位
- CSS Float 浮动
- CSS 水平对齐(Horizontal Align)
- CSS 组合选择符
- CSS 伪类
- CSS 伪元素
- CSS 导航栏
- CSS 下拉菜单
- CSS 图片廊
- CSS 图像透明/不透明
- CSS sprite 图像拼合技术
- CSS 媒体类型
- CSS 属性选择器
- CSS 实例
- 一切皆是映射:詳解 Kotlin Map 集合類
- 10大高性能开发宝石,我要消灭一半程序员!
- 面试官:你说你会RabbitMQ,那聊聊它的交换机(Exchange)吧
- Kubeadm 1.9 HA 高可用集群本地离线镜像部署【已验证】
- kubernetes(k8s)集群安装calico
- kubernetes(k8s) Prometheus+grafana监控告警安装部署
- 基于OpencvCV的情绪检测
- 设计模式 之 抽象工厂模式
- Angular应用里HTTP请求的错误处理
- 使用npm安装TypeScript
- TypeScript的interface关键字
- TypeScript的class关键字
- TypeScript里一些特殊的类型
- TypeScript的类型断言,有点像ABAP的强制类型转换
- 什么是TypeScript的字符串索引签名