Author: 李丽媛
Date: 2010/6/2
Email: lly219#gmail.com
<!-- [if !supportLists]-->1
<!-- [endif]-->CSS
优化方案
<!-- [if !supportLists]-->1.1
<!-- [endif]-->使用
CSS
优化工具
<!-- [if !supportLists]-->a)
<!-- [endif]-->online CSS Optimizer
;
<!-- [if !supportLists]-->b)
<!-- [endif]-->CSS Formatter and Optimizer
。
解决方案
:选取以上一个工具进行进行优化。
<!-- [if !supportLists]-->1.2
<!-- [endif]-->清理
CSS
在我们写样式的时候,页面的
CSS
在经历几个版本的修改之后,可能有些样式已经用不到了,或许将某些样式
更名了而原来的忘了删除,总之页面中可能存在着一
些无用的样式。这些无用的浪费了一些服务器空间和带宽消耗,也会增大我们的维护成本。
<!-- [if !supportLists]-->a)
<!-- [endif]-->Dust-Me selector
;
<!-- [if !supportLists]-->b)
<!-- [endif]-->Page Speed
;
<!-- [if !supportLists]-->c)
<!-- [endif]-->CSS Redundancy Checker
;
<!-- [if !supportLists]-->d)
<!-- [endif]-->IntelliJ IDEA
;
<!-- [if !supportLists]-->e)
<!-- [endif]-->Expression Web
。
解决方案
:选取以上一个工具进行
CSS
清理。
<!-- [if !supportLists]-->1.3
<!-- [endif]-->在浏览器支持的情况下尽量使用
CSS
选择器
避免为每一个标签都定义
class
。
<!-- [if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:399pt;
height:300pt'>
<v:imagedata src="file:///C:\Users\Vanessa\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png" mce_src="file:///C:\Users\Vanessa\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"
o:title=""/>
</v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
解决方案
:重构
CSS
,去除不必要的
class
。
<!-- [if !supportLists]-->1.4
<!-- [endif]-->减少
CSS hack
的使用
<!-- [if !supportLists]-->a)
<!-- [endif]-->尽量把浏览器默认值不相同的元素定义出来;
<!-- [if !supportLists]-->b)
<!-- [endif]-->注意
padding
,
margin
,
border
在
width
和
height
中的大小计算;
<!-- [if !supportLists]-->c)
<!-- [endif]-->注意
IE
中最小高度和
img
的使用。
解决方案
:删除不必要的
CSS hack
,然后进行细节修改。
<!-- [if !supportLists]-->1.5
<!-- [endif]-->避免使用内联引用和内部引用,尽量使用外部引用
<!-- [if !supportLists]-->a)
<!-- [endif]-->网页处理速度会更快一些,尤其在有很多网页共用一份
CSS
样式表时;
<!-- [if !supportLists]-->b)
<!-- [endif]-->看上去更加专业,整个网站的配色、细节等做到完全统一,具有一致性,避免内联的像素、色彩等偏差;
<!-- [if !supportLists]-->c)
<!-- [endif]-->方便维护。只要修改一个
CSS
文件,不管你有多少个网页文件,都会以你最新修改的版本为标准,不必进行散弹式修改。
解决方案
:把内联引用和内部引用的
CSS
进行抽取、提出放到外部
CSS
文件中,使用外联引用。
<!-- [if !supportLists]-->1.6
<!-- [endif]-->浏览器兼容
支持主流浏览器:
Firefox
,
IE6
,
IE7
,
IE8
;逐步支持
Chrome
,
Opera
,
Safari
。
解决方案
:在不同浏览器上进行测试,然后逐一修复。
<!-- [if !supportLists]-->1.7
<!-- [endif]-->元素合并
类似
(
background-image: url(/oaweb/img/common/333.png); background-repeat:
repeat-y; background-position: 0px 0px;
)
可合并为(
background
:
url(/oaweb/img/common/333.png)
repeat-y 0 0;
)。
解决方案
:有此类问题的地方进行合并。
<!-- [if !supportLists]-->1.8
<!-- [endif]-->规范命名
<!-- [if !supportLists]-->a)
<!-- [endif]-->id
和
class
命名采用该内容的英文单词或组合命名,并第一个单词小写,第二个单词首个字母大写,如
:newRelease
(最新产品
/new+Release)
;
<!-- [if !supportLists]-->b)
<!-- [endif]-->添加注释;
<!-- [if !supportLists]-->c)
<!-- [endif]-->常用命名规范(参见附件
1
)。
解决方案
:发现不符合要求的进行修改;没有注释或注释不详、不清的地方进行添加或补充、修改。
<!-- [if !supportLists]-->1.9
<!-- [endif]-->抽取出一些常用的
CSS
对于标签可使用
class
组合,不需要把
float:right;
类似这样常用的样式写到一组定义的
CSS
中。
解决方案
:定义一些常用的
CSS
,在样式中去除含有这些常用样式的
style
;最后在用到该样式的标签中加上定义好的被删除的常用样式的
class
。
<!-- [if !supportLists]-->1.10
<!-- [endif]-->注意
class
和
id
的异同,不要滥用
id
是用来进行唯一标示,作为网站中的样式,每个页面样式需要具备一致性。因此,除特定原因外,样式尽量使用
class
。
解决方案
:查看不符合用
class
的标签,改为
id
;反之,改为
class
。
<!-- [if !supportLists]-->1.11
<!-- [endif]-->满足
SEO
OA
当然不需要此项,但是在
eCooe
体验中就在所难免了。
解决方案
:凭经验可适当修改,但毕竟不是这行的专家,可买本书来研究研究。
<!-- [if !supportLists]-->1.12
<!-- [endif]-->恰当的使用
CSS Sprite
不要在每一处需要图片的地方都使用
CSS Sprite
,它的难维护性决定了只适用于做背景图的时候采用;对于图片,还是应该去使用
img
标签。
解决方案
:把使用了
CSS Sprite
,但不用做背景的地方改为
img
标签;反之改为使用
CSS Sprite
。
<!-- [if !supportLists]-->1.13
<!-- [endif]-->避免使用
expression
和
behavior
在页面渲染的过程中,
expression
和
behavior
需要大量的计算,会大量地耗费客户端资源。所以不到迫不得已,请不要使用
expression
和
behavior
。
解决方案
:删除使用了
expression
和
behavior
的地方,改之使用
JavaScript
进行替代。
附件
1
内容
|
命名
|
内容
|
命名
|
模块
|
module.css
|
主题
|
themes.css
|
基本共用
|
base.css
|
专栏
|
columns.css
|
布局、版面
|
layout.css
|
表单
|
forms.css
|
文字
|
font.css
|
补丁
|
mend.css
|
打印
|
print.css
|
头
|
header
|
内容
|
content/container
|
尾
/
页脚
|
footer
|
导航
|
nav
|
侧栏
|
sidebar
|
栏目
|
column
|
页面外围控制整体布局宽度
|
wrapper
|
左
/
右
/
中
|
left/right/center
|
登录条
|
loginBar
|
标志
|
logo
|
广告
|
banner
|
页面主体
|
main
|
热点
|
hot
|
新闻
|
news
|
下载
|
download
|
子导航
|
subNav
|
菜单
|
menu
|
子菜单
|
submenu
|
搜索
|
search
|
友情链接
|
friendLink
|
版权
|
copyright
|
滚动
|
scroll
|
标签页
|
tab
|
文章列表
|
list
|
提示信息
|
msg
|
小技巧
|
tips
|
栏目标题
|
title
|
加入
|
joinUs
|
指南
|
guild
|
服务
|
service
|
注册
|
register
|
状态
|
status
|
投票
|
vote
|
合作伙伴
|
partner
|
12
号字体
|
font12
|
红色
|
red
|
浮动清除
|
clear
|
常见问题
|
faqs
|
缩略图
|
screenshot
|
最新产品
|
newsRelease
|
编辑评论
|
editorReview
|
关键词
|
keywords
|
论坛
|
forum
|
主导航
|
mainNav
|
主菜单
|
mainMenu
|
标签
|
tag
|
摘要
|
summary
|
商标
|
branding
|
法律声明
|
legal
|
网站信息
|
siteInfo
|
信誉
|
credits
|
分享到:
相关推荐
"前端开源库-css-background-video"就是这样一个工具,它允许开发者将视频作为CSS背景,为网站添加动态且引人入胜的元素。这个开源库是基于HTML5技术实现的,充分利用了现代浏览器对多媒体的支持,为用户提供了一种...
《analyze-css:深入理解前端CSS分析与优化》 在当今的Web开发中,前端性能是决定用户体验的关键因素之一,而CSS作为构建网页样式的核心技术,其优化显得尤为重要。"analyze-css"是一个强大的开源库,专为前端...
在实际应用中,CSS-Find-Assets库通常与其他前端构建工具(如Webpack、Gulp或Grunt)结合,形成一套完整的前端资源管理解决方案。通过调用库的API,开发者可以自定义规则,满足特定的项目需求。 例如,以下是一个...
同时,它可以与其他CSS处理插件(如postcss-loader、autoprefixer等)结合,提供完整的CSS处理解决方案。 5. **性能优化**: 考虑到性能,`vision-css-loader`可能包含智能优化机制,例如只处理在当前页面渲染中...
Browserify CSS 提供了一种解决方案,它允许开发者使用 require() 语句来引入 CSS 文件,就像引入 JavaScript 模块一样。 使用 Browserify CSS,你可以将 CSS 文件分散在各个模块中,每个模块都有自己的样式,这样...
"前端开源库-is-css-shorthand"就是针对这个问题提供的解决方案。它提供了一种API接口,允许开发者输入一个CSS属性名,然后返回该属性是否是简写形式。这对于自动化工具、CSS Linting或者代码优化过程非常有用。通过...
4. **模块化开发**:在现代前端框架如React、Vue或Angular中,正确区分CSS文件对于实现模块化开发至关重要,尤其是配合CSS预处理器(如Sass、Less)或CSS-in-JS方案时。 `is-css`库的实现原理可能包括: - **文件...
总结,gemstone-loader-css是一个强大的Webpack CSS加载器,它提供了丰富的功能来优化CSS的处理和打包,提高了前端开发的效率和项目的性能。无论是新手还是经验丰富的开发者,都能从中受益,构建出更高效、更易于...
Swint是一个全面的前端开发框架,旨在为JavaScript和CSS提供一套完整的解决方案。它通过模块化的设计思想,帮助开发者构建可复用、可维护的代码,同时降低了项目间的耦合度。Swint-Builder-CSS作为其一员,专注于CSS...
总之,"前端开源库-base-css-image-loader"是一个强大的工具,它可以帮助开发者优化CSS中的图像加载,减少不必要的资源消耗,提升网页加载速度和用户体验。通过合理利用其提供的功能,可以有效改善项目的性能指标,...
【前端项目-paper-css.zip】是一个专门针对打印优化的前端项目,名为"Paper CSS",它致力于为用户提供愉快的打印体验。这个压缩包包含了项目的主要源代码,主要文件名为"paper-css-master",意味着我们即将探索的是...
4. **布局处理**:在自定义布局或定位方案中,了解元素是否是CSS根可以帮助我们更好地控制盒模型和定位规则。 使用这个库的方法可能如下: 1. 引入库:通过npm或yarn将`is-css-root`添加到项目依赖中。 2. 调用API...
**CSS Sprite技术详解** 在前端开发中,CSS Sprite(CSS精灵)...总的来说,CSS Sprite是前端性能优化的重要手段,合理使用可以显著提升用户体验。随着前端技术的发展,未来可能还会有更多高效、智能的解决方案出现。
《前端开源库-css-to-radium:将CSS转换为React Native友好样式》 在现代Web开发中,CSS是我们构建用户界面不可或缺的...在实际项目中,根据需求选择合适的CSS-in-JS方案,将有助于创建出更加高效、易维护的前端应用。
在前端开发中,CSS(Cascading Style Sheets)是用于控制网页元素样式的重要技术,而“cursor”属性则是CSS中的一个重要部分,它定义了用户在鼠标指针位于元素上时的光标形状。"css-cursor"是一个开源库,专注于规范...
【标题】"前端项目-css-element-queries.zip" 提供了一个前端开发中的创新解决方案,它涉及到CSS元素查询(Element Queries)这一概念。元素查询是CSS的一个潜在扩展,允许我们根据元素自身的尺寸来应用样式,而不...
总的来说,Tachyons是一个强大的前端开源库,它提倡简洁、模块化和高效的CSS编写方式,结合PostCSS的处理能力,为现代Web开发提供了更快、更灵活的设计解决方案。通过理解和掌握Tachyons,开发者可以提升其CSS技能,...
【前端项目-CSS-Mint】是一个轻量级且易于使用的用户界面套件,它专为前端开发者设计,旨在提供简洁、高效的CSS样式解决方案。在这个压缩包`CSS-Mint-master`中,你将找到一系列用于构建现代网页界面的CSS类和组件。...
总的来说,"前端项目-css-layout.zip"中的"yoga-master"项目旨在通过JavaScript实现CSS布局,提供一种可编程、可扩展的布局解决方案,这不仅可以帮助开发者更好地理解和控制布局过程,也可以为没有原生CSS布局支持的...
"前端项目-avalanche-css.zip" 提供的正是这样一个解决方案,它是一个名为"Avalanche CSS"的框架,专注于提供超精简、功能强大且响应迅速的CSS网格系统。这个框架基于SASS预处理器和BEM(Block Element Modifier)...