Posts Tagged ‘css’

十一月 22, 2008 0

xhtml CSS网页布局:HTML结构化 DIV CSS网页布局入门指南

By admin in xhtml+css

你正在学习CSS布局吗?是不是还不能完全掌握纯CSS布局?通常有两种情况阻碍你的学习:    第一种可能是你还没有理解CSS处理页面的原理。在你考虑你的页面整体表现效果前,你应当先考虑内容的语义和结构,然后再针对语义、结构添加CSS。这篇文章将告诉你应该怎样把HTML结构化。    另一种原因是你对那些非常熟悉的表现层属性(例如:cellpadding,、hspace、align=”left”等等)束手无策,不知道该转换成对 应的什么CSS语句。     当你解决了第一种问题,知道了如何结构化你的HTML,我再给出一个列表,详细列出原来的表现属性用什么CSS来代替。    结构化HTML    我们在刚学习网页制作时,总是先考虑怎么设计,考虑那些图片、字体、颜色、以及布局方案。然后我们用Photoshop或者Fireworks画出来、切割成小图。最后再通过编辑HTML将所有设计还原表现在页面上。    如果你希望你的HTML页面用CSS布局(是CSS-friendly的),你需要回头重来,先不考虑“外观”,要先思考你的页面内容的语义和结构。    外观并不是最重要的。一个结构良好的HTML页面可以以任何外观表现出来,CSS Zen Garden是一个典型的例子。CSS Zen Garden帮助我们最终认识到CSS的强大力量。    HTML不仅仅只在电脑屏幕上阅读。你用photoshop精心设计的画面可能不能显示在PDA、移动电话和屏幕阅读机上。但是一个结构良好的HTML页面可以通过CSS的不同定义,显示在任何地方,任何网络设备上。    开始思考    首先要学习什么是”结构”,一些作家也称之为”语义”。这个术语的意思是你需要分析你的内容块,以及每块内容服务的目的,然后再根据这些内容目的建立起相应的HTML结构。    如果你坐下来仔细分析和规划你的页面结构,你可能得到类似这样的几块:    标志和站点名称    主页面内容    站点导航(主菜单)    子菜单    搜索框    功能区(例如购物车、收银台)    页脚(版权和有关法律声明)    我们通常采用DIV元素来将这些结构定义出来,类似这样:    <div id=”header”></div>    <div id=”content”></div>    <div id=”globalnav”></div>    <div id=”subnav”></div>    <div id=”search”></div>    <div id=”shop”></div>    <div id=”footer”></div>    这不是布局,是结构。这是一个对内容块的语义说明。当你理解了你的结构,就可以加对应的ID在DIV上。DIV容器中可以包含任何内容块,也可以嵌套另一个DIV。内容块可以包含任意的HTML元素—标题、段落、图片、表格、列表等等。    根据上面讲述的,你已经知道如何结构化HTML,现在你可以进行布局和样式定义了。每一个内容块都可以放在页面上任何地方,再指定这个块的颜色、字体、边框、背景以及对齐属性等等。    使用选择器是件美妙的事    id的名称是控制某一内容块的手段,通过给这个内容块套上DIV并加上唯一的id,你就可以用CSS选择器来精确定义每一个页面元素的外观表现,包括标 题、列表、图片、链接或者段落等等。例如你为#header写一个CSS规则,就可以完全不同于#content里的图片规则。    另外一个例子是:你可以通过不同规则来定义不同内容块里的链接样式。类似这样:#globalnav a:link或者 #subnav a:link或者#content a:link。你也可以定义不同内容块中相同元素的样式不一样。例如,通过#content p和#footer p分别定义#content和#footer中p的样式。从结构上讲,你的页面是由图片、链接、列表、段落等组成的,这些元素本身并不会对显示在什么网络 设备中(PDA还是手机或者网络电视)有影响,它们可以被定义为任何的表现外观。    一个仔细结构化的HTML页面非常简单,每一个元素都被用于结构目的。当你想缩进一个段落,不需要使用blockquote标签,只要使用p标签,并对p 加一个CSS的margin规则就可以实现缩进目的。p是结构化标签,margin是表现属性,前者属于HTML,后者属于CSS。(这就是结构于表现的 相分离.)    良好结构的HTML页面内几乎没有表现属性的标签。代码非常干净简洁。例如,原先的代码<table width=”80%” cellpadding=”3″ border=”2″ align=”left”>,现在可以只在HTML中写<table>,所有控制表现的东西都写到CSS中去,在结构化的HTML中, table就是表格,而不是其他什么(比如被用来布局和定位)。   亲自实践一下结构化    上面说的只是最基本的结构,实际应用中,你可以根据需要来调整内容块。常常会出现DIV嵌套的情况,你会看到”container”层中又有其它层,结构类似这样:    <div id=”navcontainer”>    <div id=”globalnav”>    <ul>a list</ul>    </div>    <div id=”subnav”>    <ul>another list</ul>    </div>    </div>    嵌套的div元素允许你定义更多的CSS规则来控制表现,例如:你可以给#navcontainer一个规则让列表居右,再给#globalnav一个规则让列表居左,而给#subnav的list另一个完全不同的表现。     用CSS替换传统方法    下面的列表将帮助你用CSS替换传统方法:    HTML属性以及相对应的CSS方法    HTML属性    CSS方法说明    align=”left”    align=”right” float: left;    float: right; 使用CSS可以浮动 任何元素:图片、段落、div、标题、表格、列表等等    当你使用float属性,必须给这个浮动元素定义一个宽度。    marginwidth=”0″ leftmargin=”0″ marginheight=”0″ topmargin=”0″ margin: 0; 使用CSS, margin可以设置在任何元素上, 不仅仅是body元素.更重要的,你可以分别指定元素的top, right, bottom和left的margin值。  [...]

Tags: , , , ,

七月 22, 2008 0

随机调用css样式表方法

By admin in js

方法一: <link id=”chun” type=”text/css” rel=”stylesheet” href=”css/1.css”> <script Language=”JavaScript”> <!– Begin var Folder = “css/”; // var how_many_ads = 4; var now = new Date(); var sec = now.getSeconds(); var ad = sec % how_many_ads; var css = “”; ad +=1; if (ad == 1) {css = “1.css”;} if (ad == 2) {css = “2.css”;} if [...]

Tags:

七月 22, 2008 0

Top 10 CSS Sites

By admin in Collections

There are hundreds of sites that offer tutorials, examples and inspiration about CSS. In no particular order, here’s a list of my favorites that I visit on a regular basis. 1. 456 Berea Street Roger Johansson’s site is a consistently valuable source of tutorials and examples (here’s one) about using CSS properly (among other topics). [...]

Tags:

七月 6, 2008 0

CSS的渲染效率

By admin in Web Standards

总结了部分所学、所听、所看、所问的一些CSS写作经验,它们与渲染效率及所占用消耗的资源有一定的关联。部分为自己理解所写,不排除会有错漏,欢迎提供更好的意见。 备注:第7~11题的理解来自原文:Writing_Efficient_CSS译文:书写高效的CSS 1. 十六进制的颜色值对位数与大小写 编写十六进制颜色值时你可能会用小写字母或省略成3位数,关于这写法没找到确实的数据证明对浏览器的渲染效率是否有影响,但十六进制的颜色值默认标准是大写及6位数标注。在未知情况下不希望冒险而降低了渲染的效率。 * 不赞成 – color:#f3a; * 建议用 – color:#FF33AA; 2. display与visibility的差异 他们用于设置或检索是否显示对象。display隐藏对象不保留物理空间,visibility为隐藏对象保留占据的物理空间。当浏览器渲染被占据的物理空间时,会有所消耗资源。 * 不赞成 – visibility:hidden; * 建议用 – display:none; 3. border:none;与border:0;的区别 和display与visibility的关系类似,分别不保留与保留空间。更多的是border:0;尽管可以隐藏掉边框,但它会为你保留border-color/border-style的使用权。 * 不赞成 – border:0; * 建议用 – border:none; 4. 不宜过小的背景图片平铺 一张宽高1px的背景图片,虽然文件体积非常之小,但渲染宽高500px的板块需要重复平铺2500次。提高背景图片渲染效率跟图片尺寸及体积有关,最大的图片文件体积保持约70KB。 * 不赞成 – 宽高8px以下的平铺背景图片 * 建议用 – 衡量适中体积及尺寸的背景图片 5. IE的滤镜 IE的滤镜除了比较消耗资源外也有兼容性问题。当中有令PNG透明的滤镜,可采用GIF或JPG似透非透的办法来避免使用此滤镜。建议只在IE6应用GIF透明,因为IE7以上已经支持了PNG透明。 * 不赞成,滥用IE滤镜因为消耗资源外也有兼容性问题。 * 建议用,最好选择其它方法能避免使用滤镜。 6. *{ [...]

Tags:

六月 3, 2008 0

em和px 的区别

By admin in Web Standards

转自爱德凡 这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷。我一直也搞不清楚px与em之间的关系和特点,看过以后确实收获很大。平时都是用px来定义字体,所以无法用浏览器字体放大的功能,而国外大多数网站都可以在IE下使用。因为 1. IE无法调整那些使用px作为单位的字体大小; 2. 国外的大部分网站能够调整的原因在于其使用了em作为字体单位; 3. Firefox能够调整px和em,但是96%以上的中国网民使用IE浏览器(或内核)。 px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。(引自CSS2.0手册) em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。(引自CSS2.0手册) 任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。 em有如下特点: 1. em的值并不是固定的; 2. em会继承父级元素的字体大小。 所以我们在写CSS的时候,需要注意两点: 1. body选择器中声明Font-size=62.5%; 2. 将你的原来的px数值除以10,然后换上em作为单位; 3. 重新计算那些被放大的字体的em数值。避免字体大小的重复声明。 也就是避免1.2 * 1.2= 1.44的现象。比如说你在#content中声明了字体大小为1.2em,那么在声明p的字体大小时就只能是1em,而不是1.2em, 因为此em非彼em,它因继承#content的字体高而变为了1em=12px。 但是12px汉字例外,就是由以上方法得到的12px(1.2em)大小的汉字在IE中并不等于直接用12px定义的字体大小,而是稍大一点。这个问题 Jorux已经解决,只需在body选择器中把62.5%换成63%就能正常显示了。原因可能是IE处理汉字时,对于浮点的取值精确度有限。不知道有没有其他的解释。

Tags: , ,

五月 23, 2008 0

创建性感CSS样式表的十个技巧(Sexy Stylesheet)

By admin in Web Standards

如果你想成为一位CSS专家的话,光背出一堆选择器是不够的,还要能够提高CSS样式表的可读性,开发效率以及维护性。这里,Jina Bolton 将给我们分享一下她关于如何创建性感的CSS样式表的十个技巧。 本文主要内容为:CSS代码编码规范,教你如何写出整洁漂亮性感的css代码,如何清晰的组织你的样式表文件。闲言少叙,直接进入正题,完整文字请查看原文。 1. 不要在HTML文件中使用CSS样式定义 相信对于多数有一定工作经验的设计师来说,使用外部样式表来定义CSS样式是小菜一碟的工作。但我在这里仍然需要再次告诉你这点,因为我看到相当多的站点在最开始的时候,有着非常结构清晰,组织良好的代码。但是随着时间的推移,慢慢地内部定义乃至内联样式开始蔓延到站点的各个角落。也许是因为项目周期十分紧迫,抑或只是因为我们有点偷懒。 想象一下,当这样的坏习惯被我们保持了下来,一段时间后,如果老板希望在不改动网页内容的前提下重新设计网站的样式的话,OH,你将不得不去查找这些自己丢在各个角落的垃圾代码,如果项目碰巧规模又非常之大,那我恐怕只有祝你好运,或者推荐你去找黄健翔了。 千万别给自己找这样的麻烦,创建干净的代码,并始终让他们保持干净,这样你会让生活变得充满快乐。 注意:请小心使用过多的外部样式表,如果每次更改你都创建一个新的样式表,这不会给你带来任何好处。过多的样式表会让你将来的调试和更新工作变得更加复杂,当然我理解你希望将样式分组管理的初衷,后面的内容中我会专门和你一起讨论这个问题。 友情提醒:过多的样式表应用,会带来潜在的性能问题,并且在IE6下,最多只能引入32个外部样式表。 2. “语义学Semantics”不仅仅是一个让你迷惑的词语 我要告诉你们,“语义学Semantics”将是你们最好的朋友。在你选择最合适,语义最正确的元素来描述文档内容之外,也请选择语义清晰,合适的词语来定义你的class名称以及元素ID名称。不仅仅是做正确的事,这样做还能让你和你的团队成员的工作变得更加简单。让我们来看一条样式定义: .l13k { color: #369; } 我相信你乍看到这条定义,你能否知道它是用来干嘛的吗?我想你肯定答不上来。这个名称应该是某个只有作者本人知道的缩写,即使作者现在知道含义,但一个月后,一年以后你还能知道它的含义吗?让我们再来看一条定义: .left-blue { color: #369; } 这条定义,你可能立刻猜到它是用来干什么的了,页面左边区域,文字颜色为蓝色,表述的非常清楚明确。但是让我们来假设一下,不久的将来,老板希望重新设计样式,这个区域的内容位置将换到右边,文字颜色将换成红色。很显然,这个名称将变得不再合适,甚至变得不正确,现在你有两个选择,一是替换掉每个使用该class的地方,二是继续使用这个让人产生误解的名称。 这样看来,名称不是描述清晰就是好的,我建议你们最好是不要采用诸如颜色或者是高度宽度尺寸等非常具体的细节来命名样式定义,同样的也尽量避免使用具有具体形象的词汇来命名(比如使用 box),这样的做法某种程度上破坏了我们希望将内容和样式分离的初衷。怎样做才是最好的呢,让我们来看一下这个: .product-description { color: #369; } 这个定义命名,无论你重构多少次,它都是非常合适的,美丽的东西永远是美丽的。 3. 善用代码注释 善用代码注释将会给你和你的团队成员带来极大的便利,不仅仅是通常的注解,我们还能非常创造性的去使用注释来帮助我们更好的完成工作。 * 提示和标注 代码注释最基本和最常见的用处就是用来提示和标注代码,告诉别人这是用来干嘛的。 /* Turn off borders for linked images */ img { border: 0; } * 时间戳和署名 和我们写程序代码一样,是用注释在文件头部留下时间戳,版本号以及编辑者的署名,将更好的帮助我们追踪记录文件的历史记录。 /* Sushimonster  Typography  Styles      Updated:  Thu 10.18.07 @ 5:15 p.m.      Author:     Jina Bolton    —————————————————-*/ * 组织代码 将样式定义按照不同的组别来分组是一个非常好的主意,如果我希望将页首的样式定义放在一起,我会使用这样的注释来帮助我提高代码可读性: /* HEADER    —————————————————-*/ * 注释标帜 如果你采用了我上面提及的使用注释来分隔不同分组的样式定义代码的方法的话,那使用注释标帜将是一个非常有用的技巧来帮助你更好的查找代码,迅速准确的定位到你想要的位置。我们可以使用一个特殊的符号(比如 [=])来作为注释标帜 /* =HEADER    —————————————————-*/ 非常酷的一个小技巧,这样你不用上下拖动,就能迅速通过查找来定位到你想要编辑的位置了,查看更多关于注释标帜。 * 参考索引 虽然不常用,但是也是非常有用的一个注释使用方式就是作为代码的参考索引,比如在文件头部留下使用到的颜色代码: /* COLORS    Body Background:        #2F2C22    Main Text:                     #B3A576    Links:                              #9C6D25    Dark Brown Border:     #222019    Green Headline:            #958944 */ 4. 明确什么时候使用CSS Hack 什么时候使用IE条件注释 有很多关于使用CSS Hack带来的问题,或是使用IE条件注释来解决IE兼容性问题是更佳的方法的文章,以及两者都不支持的文章。以前,我一直认为使用IE条件注释解决这个问题要比CSS Hack来的合适,但是最近通过一些例证,我发现条件注释也不是最合适的解决方案。 原因在于,使用条件注释,必然需要维护同一样式的不同IE版本的副本,这样就带来了工作量的增加,而使用CSS Hack则没有这个问题,因此要具体问题具体分析。 但是不管采用哪种方法,请注意以下两点: a) 如果使用了条件注释,请在主代码文件中留下注释,提醒自己以及其他设计师,如果修改了此处样式,则需要同时更新其他所有IE版本的样式定义。 b) 如果使用CSS Hack,也请留下注释,标明这里使用哪些Hack,对于什么版本浏览器生效,因为在可以预见的将来,随着浏览器版本的升级,这些Hack很有可能会失效。 5. 组织好你的选择器以及属性声明 切记,切记,请将你的样式表文件组织的结构清晰,我比较倾向于以下的代码组织方式: [...]

Tags:

五月 9, 2008 0

CSS Sprites

By admin in Web Standards

  CSS Sprites技术不新鲜,早在2005年 CSS Zengarden 的园主 Dave Shea就在ALA发表对该技术的详细阐述。原先只在CSS玩家之间作为一种制作方法流传,后来出来个14 Rules for Faster-Loading Web Sites, 技术人员之间竞相传阅,其中第一条规则Make Fewer HTTP Requests就提到CSS Sprites。于是这个小妖精就火了起来,甚至出现了在线生成工具,势不可挡也。近来国内很多blog都提到CSS Sprites,最著名的例子莫过于 http://www.google.co.kr/ 下方的那几个动画。最新发布的YUI中,也是使用到CSS Sprites,几乎都有的CSS装饰图都被一个40×2000的图包办。社交大站Facebook最近也使用了一个22×1150的图片承担了所有icon. 一时间,CSS Sprites无处不在。 原理 我们知道,自CSS革命以降,HTML倾向于语义化,在一般情况下不再在标记里写装饰性的内容而是把呈现的任务交给了CSS。GUI是缤纷多彩的,少不了各种漂亮的图来装点。新时代的生产方式是,在HTML布满各种各样的钩子(hook),然后交由CSS来处理。在需要用到图片的时候,现阶段是通过CSS属性background-image组合background-repeat, background-position等来实现(题外话:为何我提现阶段,因为未来浏览器若支持content则又新增另外的实现方法)。我们的主角是,你一定猜到了,就是background-position。通过调整background-position的数值,背景图片就能以不同的面貌出现在你眼前。其实图片整体面貌没有变,由于图片位置的改变,你看到只该看到的而已。就好比手表上的日期,你今天看到是21,明天看到是22,是因为它的position往上跳了一格。所以你也大概了解到,CSS Sprites一般只能使用到固定大小的盒子(box)里,这样才能够遮挡住不应该看到的部分。 我们使用YUI的sprite.png举个例子,假如我们有这么一段代码,max代表最大化,min代表最小化,我们需要给它们配上相应的漂亮图片(这样我们的网站才能够吸引人,才可以卖钱,才可以到佛罗里达晒太阳:D): <div class=”max”>最大化</div> <div class=”min”>最小化</div> 这两个class都使用同一个图片: .min, .max { width:16px; height:16px; background-image:url(http://developer.yahoo.com/yui/build/assets/skins/sam/sprite.png); background-repeat: no-repeat; /*我们并不想让它平铺*/ text-indent:-999em; /*隐藏文本的一种方法*/ } 效果如下: 最大化 最小化 我们看到一团灰,没错,因为我们还没有指定background-position,默认为 0 0,可以看下sprite.png, 处于这个位置正是灰块。好了,我们要找到代表最大化的加号和代表最小化的减号的位置找出来。经过测量,最大化按钮位于Y轴的350px处,最小化按钮位于Y轴400px处。想一想我们如何才能让它们能够显示出来呢,明显,要向上提升sprite.png,得到代码如下: .max { [...]

Tags: , ,

五月 6, 2008 0

常用的CSS命名规则

By admin in Web Standards

头:header   内容:content/container   尾:footer   导航:nav   侧栏:sidebar   栏目:column   页面外围控制整体布局宽度:wrapper   左右中:left right center   登录条:loginbar   标志:logo   广告:banner   页面主体:main   热点:hot   新闻:news   下载:download   子导航:subnav   菜单:menu   子菜单:submenu   搜索:search   友情链接:friendlink   页脚:footer   版权:copyright   滚动:scroll   内容:content   标签页:tab   文章列表:list   提示信息:msg   小技巧:tips   栏目标题:title   加入:joinus   指南:guild   服务:service   注册:regsiter   状态:status   投票:vote   合作伙伴:partner   (二)注释的写法:   /* Footer */   内容区   /* End Footer */   (三)id的命名:   (1)页面结构   容器: container   页头:header   内容:content/container   页面主体:main   页尾:footer [...]

Tags:

五月 4, 2008 0

xhtml+css VS div+css

By admin in Web Standards

转自linxz’BOG 不知道从什么时候开始,在网络上到处可以看到div+css,到底什么是div+css呢?难道就是传说中的标准重构吗?标准从最简单的根源来说不是合理使用xhtml的标签吗?可为什么还是有这么多div+css呢?既然可以div+css,那为什么不可以叫span+css ul+css li+css等等呢? 疑问,满脑子的疑问!为了这个疑问,我把自己脑子里的东西从最底层翻了一遍。 在几年前大家都是用table来布局,一层套一层,没发现什么不妥,一直用到《网站重构》这本书出来后的不久开始看到很多人讨论重构。当时的我对所谓的重构一点都不清楚,当然啦,现在还不是很清楚,至于《网站重构》这本书我也没看过几页,不敢说自己什么都了解。但就目前而言,还是有很多朋友是从table布局转变过来,也包括我自己在内。 看了网上很多教程以及很多朋友的文章或者是提到的问题,代码结构中少不了的是div。甚至看到代码结构中除了div标签在body中外,找不到其他用来处理结构的标签了。或许就是因为如此,才出现了div+css,用div来做布局,结合css来表现样式,那这样就是标准了? 是把table换成了div,把td换成ul来排列后,那其他xhtml的标签怎么办呢? 或许有朋友会说“我是用div来布局,所以要叫div+css,而且现在大家都这样叫啊”。嗯,没错,因为div在xhtml中没有语意,而且是块元素,用在布局方面比较合理。但如果因为如此而把div独立出来称呼为了div+css,貌似跟xhtml可以平起平坐了。就好比你的辈分原本就是晚辈,却跑去跟长辈争上座,太不像话了,不是吗? 说了这么多,无非是想希望大家以后不要再说div+css了,为什么不能再多打2个字母,改叫xhtml+css呢?如果觉得这样还不妥,那就叫网站重构吧,你也可以称自己为网站重构工程师,多好听的名字呢,总不能让别人叫你div+css人员吧。 在《超越CSS》中,他们还是推荐大家少用div,多合理的使用标签,不要遗忘了在xhtml中还有p,form诸多的标签。合理的使用标签,合理的页面结构才会让你的站点更容易被搜索找到重要内容。简单说吧,大家都知道hn(n=1,2,3,4,5,6)是用在标题,那p,form,table是不是也可以让他们有自己在页面结构中的一个位置呢? 以上只是个人在文字方面对网络上到处可见的div+css一些看法,文字表达方面不对的地方大家批评,但最终希望的是不要再叫div+css了,div不是主要的东西,主要的是xhtml。

Tags: , ,

四月 19, 2008 0

去掉浏览器的滚动条

By admin in Web Standards

今天做SAMESHOW的页面的时候…发现由于以前的同事写的代码在IE6下乱了…然后IE的X轴拉好长…没时间来把整个站做重构…就想到去掉X轴…呵呵… *{overflow-x:hidden;} /*——去掉X轴滚动条———-*/ *{overflow-y:hidden;}/*——去掉Y轴滚动条———-*/

Tags: