作家
登录

CSS编写的网页打开流畅相关知识与注意点

作者: 来源:www.28hudong.com 2012-11-19 22:54:52 阅读 我要评论

  我们都熟知JavaScript可能会对Web页面的加载与显示产生较大的影响,因此我们常常关注JavaScript是不是会占用客户端较多的资源,然而大部分都会忽略的一件有趣的事情,CSS也会对Web页面载入的效率产生影响。  我们罗列了十几条相关的知识与注意点,大家可以系统的探讨一下,让我们编写的Web页面打开更加流畅。  请不要告诉我,你看不懂E文,只是你不愿意看!!!  1、Howthestylesystembreaksuprules  Thestylesystembreaksrulesupintofourprimarycategories.Itiscriticaltounderstandthesecategories,astheyarethefirstlineofdefenseasfarasrulematchingisconcerned.Iusethetermkeyselectorintheparagraphsthatfollow.Thekeyselectorisdefinedtobetherightmostoccurrenceofanidselector,aclassselector,oratagselector.  1.1、IDRules  ThefirstcategoryconsistsofthoserulesthathaveanIDselectorastheirkeyselector. button#backButton{}/*ThisisanID-categorizedrule*/#urlBar[type="autocomplete"]{}/*ThisisanID-categorizedrule*/treeitem>treerow>treecell#myCell:active{}/*ThisisanID-categorizedrule*/   1.2、ClassRulesIfarulehasaclassspecifiedasitskeyselector,thenitfallsintothiscategory. button.toolbarButton{}/*Aclass-basedrule*/.fancyText{}/*Aclass-basedrule*/menuitem>.menu-left[checked="true"]{}/*Aclass-basedrule*/   1.3、TagRules  IfnoclassorIDisspecifiedasthekeyselector,thenthenextpotentialcategoryforaruleisthetagcategory.Ifarulehasatagspecifiedasitskeyselector,thentherulefallsintothiscategory. td{}/*Atag-basedrule*/treeitem>treerow{}/*Atag-basedrule*/input[type="checkbox"]{}/*Atag-basedrule*/   1.4、UniversalRules  Allotherrulesfallintothiscategory. :table{}/*Auniversalrule*/[hidden="true"]{}/*Auniversalrule*/*{}/*Auniversalrule*/tree>[collapsed="true"]{}/*Auniversalrule*/   2、HowtheStyleSystemMatchesRules  Thestylesystemmatchesarulebystartingwiththerightmostselectorandmovingtotheleftthroughtherule'sselectors.Aslongasyourlittlesubtreecontinuestocheckout,thestylesystemwillcontinuemovingtotheleftuntiliteithermatchestheruleorbailsoutbecauseofamismatch.  Yourfirstlineofdefenseistherulefilteringthatoccursbasedonthetypeofthekeyselector.Thepurposeofthiscategorizationistofilteroutrulessothatyoudon'tevenhavetowastetimetryingtomatchthem.Thisisthekeytodramaticallyincreasingperformance.Thefewerrulesthatyouevenhavetocheckforagivenelement,thefasterstyleresolutionwillbe.Asanexample,ifyourelementhasanID,thenonlyIDrulesthatmatchyourelement'sIDwillbechecked.Onlyclassrulesforaclassfoundonyourelementwillbechecked.Onlytagrulesthatmatchyourtagwillbechecked.Universalruleswillalwaysbechecked.  3、GuidelinesforEfficientCSS  3.1、AvoidUniversalRules!  Makesurearuledoesn'tendupintheuniversalcategory!  3.2、Don'tqualifyID-categorizedruleswithtagnamesorclasses  IfyouhaveastylerulethathasanIDselectorasitskeyselector,don'tbotheralsoaddingthetagnametotherule.IDsareunique,soyou'reslowingdownthematchingfornorealreason. BAD-button#backButton{}BAD-.menu-left#newMenuIcon{}GOOD-#backButton{}GOOD-#newMenuIcon{}   3.3、Don'tqualifyclass-categorizedruleswithtagnames  Similartotheruleabove,allofourclasseswillbeunique.Theconventionyoushoulduseistoincludethetagnameintheclassname. BAD-treecell.indented{}GOOD-.treecell-indented{}   3.4、Trytoputrulesintothemostspecificcategoryyoucan!  Thesinglebiggestcauseofslowdowninoursystemisthatwehavetoomanyrulesinthetagcategory.Byaddingclassestoourelements,wecanfurthersubdividetheserulesintoclasscategories,andthenwenolongerwastetimetryingtomatchasmanyrulesforagiventag. BAD-treeitem[mailfolder="true"]>treerow>treecell{}GOOD-.treecell-mailfolder{}   3.5、Avoidthedescendantselector!  ThedescendantselectoristhemostexpensiveselectorinCSS.Itisdreadfullyexpensive,especiallyifaruleusingtheselectorisinthetagoruniversalcategory.Frequentlywhatisreallydesiredisthechildselector.TheuseofthedescendantselectorisbannedinUICSSwithouttheexplicitapprovalofyourskin'smoduleowner. BAD-treeheadtreerowtreecell{}BETTER,BUTSTILLBAD(seenextguideline)-treehead>treerow>treecell{}   3.6、Tag-categorizedrulesshouldnevercontainachildselector!  Avoidusingthechildselectorwithtag-categorizedrules.Youwilldramaticallyincreasethematchingtime(especiallyiftheruleislikelytobematchedmoreoftenthannot)foralloccurrencesofthatelement. BAD-treehead>treerow>treecell{}BEST-.treecell-header{}   3.7、Questionallusagesofthechildselector!  Becarefulaboutusingthechildselector.Ifyoucancomeupwithawaytoavoidhavingtouseit,doso.Inparticular,thechildselectorisfrequentlyusedwithRDFtreesandmenuslikeso. BAD-treeitem[IsImapServer="true"]>treerow>.tree-folderpane-icon{}   RememberthatattributesfromRDFcanbeduplicatedinatemplate!TakeadvantageofthisfacttoduplicateRDFpropertiesonchildXULelementsthatwishtochangebasedoffthatattribute. GOOD-.tree-folderpane-icon[IsImapServer="true"]{}   3.8、Relyoninheritance!  Learnwhichpropertiesinherit,andallowthemtodoso!WehaveexplicitlysetupXULwidgetrysothatyoucanputlist-style-image(justoneexample)orfontrulesontheparenttag,anditwillfilterintotheanonymouscontent.Youdon'thavetowastetimewritingarulethattalksdirectlytotheanonymouscontent. BAD-#bookmarkMenuItem>.menu-left{list-style-image:url(blah);}GOOD-#bookmarkMenuItem{list-style-image:url(blah);}   Intheaboveexample,thedesiretostyletheanonymouscontent(withoutunderstandingthatlist-style-imageinherits)resultedinarulethatwasintheclasscategory,whenthisrulereallyshouldhaveendedupbeinginthemostspecificcategoryofall,theIDcategory.  Remember,especiallywithanonymouscontent,thattheyallhavethesameclasses!Thebadruleabovecausestheiconofeverymenutobecheckedtoseeifitiscontainedinthebookmarksmenuitem.Thisishideouslyexpensive(sincetherearemanymenus);thisrulenevershouldhaveevenbeencheckedbyanymenuotherthanthebookmarksmenu.  3.9、Use-moz-image-region!  Puttingabunchofimagesintoasingleimagefileandselectingthemwith-moz-image-regionperformssignificantlybetterthanputtingeachimageintoitsownfile.  OriginalDocumentInformation-Author:DavidHyatt

  推荐阅读

  CSS教程:行高line-height属性(1)

相关文章:CSS教程:行高line-height属性(2) 行高的概念看上去很简单——文字行的高度,其实,行高所涉及到的基础知识,对于今后理解其它属性也很重要。 大片密密麻麻的文字往往会让人觉得乏味,因>>>详细阅读


本文标题:CSS编写的网页打开流畅相关知识与注意点

地址:http://www.17bianji.com/kaifa2/CSS/17371.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)