显示标签为“网页制作”的博文。显示所有博文
显示标签为“网页制作”的博文。显示所有博文

2007年5月17日星期四

[转载]CSS知识补遗

1. Block和inline元素对比

  所有的HTML元素都属于block和inline之一。
  block元素的特点是:
  总是在新行上开始;
  高度,行高以及顶和底边距都可控制;
  宽度缺省是它的容器的100%,除非设定一个宽度
div, p, h1, form, ul和li是块元素的例子。
  相反地,inline元素的特点是:
  和其他元素都在一行上;
  高,行高及顶和底边距不可改变;
  宽度就是它的文字或图片的宽度,不可改变。
  span, a, label, input, img, strong 和em是inline元素的例子。
  用display: inline 或display: block命令就可以改变一个元素的这一特性。什么时候需要改变这一属性呢?
  让一个inline元素从新行开始;
  让块元素和其他元素保持在一行上;
  控制inline元素的宽度(对导航条特别有用);
  控制inline元素的高度;
  无须设定宽度即可为一个块元素设定与文字同宽的背景色。

2. 再来一个box黑客方法

  之所以有这么多box黑客方法,是因为IE在6之前对box的理解跟别人都不一样,它的宽度要包含边线宽和空白。要想让IE5等同其他浏览器保持一致,可以用CSS的方法:
  padding: 2em;
  border: 1em solid green;
  width: 20em;
  width/**/:/**/ 14em;
  第一个宽度所有浏览器都认得,但IE5.x不认得第2行的宽度设置,只因为那一行上有空白的注释符号(多么蠢的语法分析!),所以IE5.x就用20减掉一些空白,而其他浏览器会用14这个宽度,因为它是第2行,会覆盖掉第1行。

3. 页面的最小宽度

  min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得这个,而它实际上把width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个放到 标签下,然后为div指定一个类:
  <body>
  <div class="container">
  然后CSS这样设计:
  #container
  {
  min-width: 600px;
  width:expression(document.body.clientWidth <> 1200? ”1200px“ : ”auto";
  }

4. IE与宽度和高度的问题

  IE不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。
  比如要设置背景图片,这个宽度是比较重要的。要解决这个问题,可以这样:
  .box
  {
  width: 80px;
  height: 35px;
  }
  body .box
  {
  width: auto;
  height: auto;
  min-width: 80px;
  min-height: 35px;
  }
  所有的浏览器都可以使用第一个box设置,但IE不认得第2段设置,因为其中用到了子选择器命令。第2个设置更特殊些,所以它会覆盖掉第1个设置。

5. 字体变形命令

  text-transform 命令很有用,它有3个值:text-transform: uppercase, text-transform: lowercase 和 text-transform: capitalize。第1个会把文字变成全大写,第2个变成全小写,第3个变成首字母大写。这对拼音文字非常有用,即使输入时有大小写错误,在网页上也看不到。

6. IE中图片文字消失的问题

  有时会遇到文字或背景图突然消失的问题,刷新一下又出现了,这在靠近漂浮元素时更容易发生(注:没见过)。此时,可以为消失的元素设定:position: relative ,如果不行,再考虑为这些元素指定一个宽度试试。

7. 不可见文字

  不论因为何种原因希望某些网页文字不在浏览器中显示,比如为了打印或为了小屏幕而让某些文字不显示,都可以用 display: none 。这非常简单,但有时对某些人这有点没用,他们能去掉这个控制,这时就要用到: position: absolute; left: -9000px 。
这实际上是把文字指定在页面以外显示。

8. 为手持设备设计专门的CSS

  也就是手机/PDA等小屏幕用户,可以专门设计一个CSS来让网页显示更舒服些。为此,可以把浏览器窗口调整到150点宽来看效果。指定专门的手持设备的CSS的语法是:
  <link media="handheld" href="handheldstyle.css" type="text/css" rel="stylesheet">
  也可以阅读专门的手持设备可用性。

9. 3D效果的按钮

  以前要想制作带有3D效果,并且点击下去还会变化的按钮,就得用图片替换的方法,现在CSS就可以了:
  a
  {
  display: block;
  border: 1px solid;
  border-color: #aaa #000 #000 #aaa;
  width: 8em;
  background: #fc0;
  }
  a:hover
  {
  position: relative;
  top: 1px;
  left: 1px;
  border-color: #000 #aaa #aaa #000;
  }
  至于效果,还可以自己调整了。

10. 在不同页面上使用同样的导航代码

  许多网页上都有导航菜单,当进入某页时,菜单上相应这一项就应该变灰,而其他页亮起来。一般要实现这个效果,需要写程序或专门为每一页做设计,现在靠CSS就可以实现这个效果。
  首先,在导航代码中使用CSS类:
<ul>
>li><a href="#" class="home">Home</a></li>
<li><a href="#" class="about">About us</a></li>
<li><a href="#" class="contact">Contact us</a></li>
</ul>
  然后分别为每一页的Body指定一个id,和上面类同名。如<body id="contact">。
  然后设计CSS如下:
  #home .home, #about .about, #about .about
  {
  commands for highlighted navigation go here
}
  这里,当id设为home时,.home就会起作用,也就是class设为home的那一行导航条就会显示出特殊效果来。其他页也是如此。

图片灰圈白框效果

真的是非常简单,但是这个创意可不算简单,效果也挺漂亮的

HTML:
<div class="pic">
CSS定义:
.pic{padding:4px;border:1px solid #ADB4B8;background:#FFF}

2007年5月11日星期五

论坛常用的页数做法

先是一个<div class="p_bar">
CSS定义:
.p_bar {margin: 1px 0px;clear: both;}
.p_bar a {float: left;padding: 1px 4px;font-size: 12px;text-decoration: none;}

然后在这个DIV里
<a href="forum-11-2.html" class="p_num">1</a>一个个列下去

CSS定义:
.p_num {background-color: #FFFFFF;border: 1px solid #DEDEB8;margin-right:1px;vertical-align: middle;}
a:hover.p_num {background-color: #F5FBFF;border: 1px solid #86B9D6;text-decoration: none;}

2007年4月23日星期一

[转载]网站设计之合理架构css

  在当前浏览器普遍支持的前提下,CSS被我们赋予了前所未有的使命。然而依赖css越多,样式表文件就会变得越大越复杂。与此同时,文件维护和组织的考验也随之而来。
  (曾几何时)只要一个css文件就够了——所有规则(rule)汇聚一堂,增删改都很方便——可这种日子早已远去。(现在)建立新网站时,必须花点时间好好筹划怎么组织和架构css。

文件的组织

  构建css系统的第一步是大纲的拟定。(我认为)css组织规划的重要性堪比网站目录结构。(HTMLor注:用词夸张一点,让你加深记忆) 没有哪种方案放之四海而皆准,因此我们会讨论一些基本的组织方案,以及它们各自的利弊。

主css文件

  通常可以使用一个主css文件,来放置所有页面共享的规则。这个文件会包含默认的字体、链接、页眉和其他等样式。有了主css文件之后,我们开始探讨高级组织策略。

  方法一:基于原型
  最基本的策略是基于原型页面(archetype page)分离css文件。假如一个网站的首页、子页面和组合页设计不同,就可以采用基于原型的策略。(这种策略下)每个页面都会有专属的css文件。
  在原型数量不多的情况下,这个方法简单明了、行之有效。然而,当页面元素并不按部就班的位于各个原型页时,问题就出现了。如果子页面和组合页共享某些元素,而首页却没有,我们应该怎么做呢?
  把共享元素放入主css文件。这虽不是最纯正的解决办法,却适用于某些具体情况。可是如果网站庞大,(这样做的话)主css文件会迅速膨胀——这就违背了分离文件的初衷:避免导入不必要的大文件。
  在组合页和子页面的css文件里各放一份样式代码。(这么做)就意味着要维护冗余代码,很显然我们不想这样。
  创建一个新的文件,由这两种页面共享。这听起来不错。不过假如只有10行代码,我们创建这个文件仅仅是为了共享这10行代码?(htmlor 注:杀鸡用牛刀?) 这方法很纯粹,但如果网站庞大有很多对页面共享很少量元素时(htmlor注:比如30对页面分别共享10行代码),就显得很笨重了。
  创建一个单独的css文件,包含所有共享元素的样式。这方法可能比较简单,却要取决于网站的大小和共享元素的多少。有种情况会很烦:导入了一个很大的css文件,但页面只用到一小部分样式——还是那句话,这违背了分离文件的初衷。
  这就是我所说的重叠的两难(overlap dilemma)。零碎css规则的重叠不一而足,并没有一个完全清晰无误的方案来组织它们。

  方法二:基于页面元素/块
  如果网站使用服务器端include,这个方法会很不错。举例说明,如果使用页眉include,它会有自己相应的css文件。页脚或者其他部分的include可以如法炮制,只须导入自己的css文件。这个方法简单干净,不过可能会产生很多小css文件。
  举例来说,假如页脚的样式只需要20行css代码,单独创建一个文件就划不来了。而且这个方法会导致每个页面都包含一堆css文件——因为有多少include,就得有多少css文件。

  方法三:基于标记
  这个方案直观实际,与前一个类似。如果网站共有30个页面,其中10个含有form,那么可以创建一个css文件专门处理form的样式,只在这10个页面导入它。如果另外10个页面含有table,就创建一个文件专门处理table样式……诸如此类。

  另外的组织技巧
  除了用主观的方法组织文件,我们还要考虑如打印、手持设备和屏幕等多种媒体类型。这虽然已经很清楚地定义过,可依旧是建立文件结构时应该考虑的一个因素。一旦必须支持多种媒体类型,主css文件里的某些规则可能就得重新考虑。
  另外,品牌联合也可能是一个重要因素。(htmlor注:如google和nike联手推出的joga) 如果涉及品牌联合,你就得考虑哪些元素应该调整以适应另一品牌。比如分别使用不同的css文件等。
  还有一个常被忽略的技巧:使用嵌套的@import语句。只包含一连串@import语句,或者再加几句css规则,就能创建一个css文件。用这个方法完全可以创建网站的主css文件(用@import导入各部分的样式文件)。假如网站的每个页面都导入了4到5个不同的css文件,无疑你应该考虑使用这个技巧。

规则和选择器的组织

  谈完了文件组织,接着讨论一下怎么组织文件里的东西吧。很自然,我们希望在文件里畅通无阻的浏览,迅速找到要编辑的选择器(selector)或规则。

冗余 vs. 附属

  正如Dave Shea在其文章《冗余 vs. 附属》(Redundancy vs. Dependency)里所说的,你必须不断了解级联(casCADe)。你要决定是对选择器编组(意味着附属),还是把它们分离(意味着冗余)。编组可以保持代码简洁扼要,可是会建立附属关系,导致维护开销增加。如果不编组,就会增加文件大小,让相似的选择器保持一致变得困难。只有做好这种权衡、取舍,才能每次都作出正确的决定。

按相互关系/上下文编组

  既然文件组织可以是主观的,那么显然,按照规则和选择器与其他部分的相互关系来进行编组是最好的方法。举例说明,假设你用容器、页眉和页脚来完成布局,就应该把它们编成一组。
  这似乎很简单,其实不然。比如,把页眉中的导航加入CSS时,是将它跟父元素编组还是独立编组?这种情况下,要视乎规则的上下文。通常,页眉与页面布局相关,应该与其他布局元素一起编组。而导航是页眉的一块,应该和页眉的其他块编组,而不是页眉本身。

使用注释

  跟大多数代码类似,注释是组织良好与否的关键。应该根据css的控制范围,清楚的标注每节(section)。最好确保注释视觉突出,以便在内容滚动、一目十行时快速定位。
  Doug Bowman在其文章《css组织技巧之一:标记》(CSS Organization Tip #1: Flags)里把css注释玩得高明之极。他详细说明了在节名之前加上等号,以便使用文本编辑器的查找功能迅速跳到某节。

别忘了

  你应该细致认真的了解了特异性、级联和继承,并善用它们。它们之中的每一项都可以是你最可怕的敌人,也可以是你最友善的朋友。当建立庞大的网站时,是否理解这些细微精妙之处,决定了你所构建的是坚如磐石的系统,还是经不起风雨的豆腐渣工程。(HTMLor注:这句完全意译,比较爽)

属性的组织

  现在我们了解了文件的组织,也知道了文件内规则的组织,但还有一个重要的组织环节(没有提到),那就是属性(attribute)。虽然属性比前两个概念更简单,可是还有一些非常好的、能够保持规则整洁的方法很值得一提。

按字母排序

  提到属性,如果说需要遵循什么原则的话,那就是:按-字-母-排-序。其实这招对于属性浏览帮助不大,不过可以防止属性值覆盖这种偶然事件的发生。
  举个例子吧,已经数不清有多少次,我为某个选择器定义过了margin值,之后的某天无意间又加了一个(或前或后)。(这种情况下)后一个属性自然会起作用。假设不知道第二个属性存在,不管我怎么调整第一个属性值、刷新浏览器,也看不到页面变化。(htmlor注:这个问题我深有体会) 如果按照字母顺序排列,你就会发现margin被定义了两次(因为它们挨在一起),这个问题自然可以避免。

优先项

  当网站复杂、牵涉太多css文件时,会建立大量的附属关系。一旦需要定制某个元素特有的样式,!important选项似乎是最佳选择。没错,!important是能解一时之需,但最好搞清楚导致问题的根源,然后根据级联关系决定是否真的需要用它。
  如果你对上文提到的特异性、级联和继承很熟悉,大可不必抱着!important一颗树不放。(htmlor注:整片森林等着你~) 当然它还是会派上用场,不过使用之前要对具体情况了然于胸。千万不要因为不知问题的症结所在而把!important当作捷径或是补救方案。

小结

  当我们变得依赖css而使样式表日渐复杂时,就需要正确的计划来避免犯错,并使代码易于维护。既然完美无缺的方案并不存在,那么了解css的工作方式以及文件、选择器和属性的多种组织方案,无疑有助于我们写出优质的代码,经受住时间考验。

2007年4月21日星期六

[转载]常用的CSS命名规则

  头: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
  导航:nav
  侧栏:sidebar
  栏目:column
  页面外围控制整体布局宽度:wrapper
  左右中:left right center
  (2)导航
  导航:nav
  主导航:mainbav
  子导航:subnav
  顶导航:topnav
  边导航:sidebar
  左导航:leftsidebar
  右导航:rightsidebar
  菜单:menu
  子菜单:submenu
  标题: title
  摘要: summary
  (3)功能
  标志:logo
  广告:banner
  登陆:login
  登录条:loginbar
  注册:regsiter
  搜索:search
  功能区:shop
  标题:title
  加入:joinus
  状态:status
  按钮:btn
  滚动:scroll
  标签页:tab
  文章列表:list
  提示信息:msg
  当前的: current
  小技巧:tips
  图标: icon
  注释:note
  指南:guild
  服务:service
  热点:hot
  新闻:news
  下载:download
  投票:vote
  合作伙伴:partner
  友情链接:link
  版权:copyright
  (四)class的命名:
  (1)颜色:使用颜色的名称或者16进制代码,如
  .red { color: red; }
  .f60 { color: #f60; }
  .ff8600 { color: #ff8600; }
  (2)字体大小,直接使用"font+字体大小"作为名称,如
  .font12px { font-size: 12px; }
  .font9pt {font-size: 9pt; }
  (3)对齐样式,使用对齐目标的英文名称,如
  .left { float:left; }
  .bottom { float:bottom; }
  (4)标题栏样式,使用"类别+功能"的方式命名,如
  .barnews { }
  .barproduct { }
  注意事项::
  1.一律小写;
  2.尽量用英文;
  3.不加中杠和下划线;
  4.尽量不缩写,除非一看就明白的单词.
  主要的 master.css
  模块 module.css
  基本共用 base.css
  布局,版面 layout.css
  主题 themes.css
  专栏 columns.css
  文字 font.css
  表单 forms.css
  补丁 mend.css
  打印 print.css

2007年4月20日星期五

[转载]Class和ID的区别

首先,在表现形式上 ID 的优先级比css高如

<style>
#id {background-color:Red}
.class {background-color:blue}</style>
<div class="class" id="id">蓝色理想</div>

id和class都定义了背景颜色的属性,但是由于id的优先级比class高,所以背景色为id所定义的红色再次,class是通用属性,就是说几个div可以调用同一个class ,而ID是唯一的,web标准中不允许出现两个div的id标识是相同的,id也是js获取对象的一个标识,所以也必须是唯一的,(就像如果一个房子里面如果有两个相同名字的人,我要这个名字的人去做某事,谁去呢?就会混乱)

class还有个好处就是,一个div可以调用几个css,如

<style>
#id {background-color:gray}
.class1 {color:red;}
.class2 {width:200px;height:100px}</style>
<div class="class1 class2" id="id">蓝色理想</div>

class1控制文本颜色为红色,class2控制div的大小

呵呵,其实这里说的大部分本来都会了,见说得比较清楚就转过来了。补充个最最基本的:id定义是用#,class定义是用.,千万不要忘记了喔

2007年4月19日星期四

126.com登陆框特效

假设这个登陆框在一个class=pinp的DIV或者p里

CSS定义:
.pinp input{width:340px!important;width:342px;font-family:Verdana,Arial,Helvetica;margin-left:6px;margin-bottom:3px;padding:2px;border:#A1BCA3 1px solid;vertical-align:middle;}
width是登陆框宽度,如果要改则两个都要改且后者=前者+2

HTML:
<input onMouseOver="this.style.borderColor='#99E300'" onMouseOut="this.style.borderColor='#A1BCA3'" name="kh_08" size="50">
注意<>要改回<>

其实我最初是在雅虎邮箱看到这个特效的,网易不厚道。雅虎邮箱的替身邮功能不错,但雅虎中国非常让人失望——IT江湖评论到此为止。

让整个页面或者一个DIV内所有链接在新窗口打开

blogger不准使用html语句,注意要<>换回<>

让整个页面内的链接都在新窗口打开:
在head中加入
<base target="_blank">

让一个DIV里所有链接在新窗口打开
在body中加入
<SCRIPT LANGUAGE="JavaScript">
<!-- var anchors = document.getElementById("DIV名").getElementsByTagName("a");
for(var i=0;i<anchors.length;i++)
{var anchor = anchors[i];anchor.target="_blank";}
//-->
</SCRIPT>

2007年4月11日星期三

几种网页制作常用颜色

不时更新。
16进制颜色代码缩写规则:#XXYYZZ = #XYZ

灰色
■范例■ #F2F2F2
■范例■ #F4F4F4 很淡的灰色,做背景不错
■范例■ #EEE
■范例■ #707070
■范例■ #666
■范例■ #333 一般文字用,比纯黑(#FFF)好看


绿色
■范例■ #EEF8F0
■范例■ #ECF3E1
■范例■ #EFF9D0
■范例■ #B3C58F
■范例■ #53AAAC 白色背景用好
■范例■ #7ECE8E
■范例■ #4D784D
■范例■ #693
■范例■ #659B28
■范例■ #2C7500
■范例■ #008000
■范例■ #090


蓝色
■范例■ #3888D8 白色背景用好
■范例■ #147
■范例■ #69C
■范例■ #069
■范例■ #399
■范例■ #247DBC

橙色
■范例■ #EC3800 白色背景,黑色链接文字,悬浮色用这个是很好的效果
■范例■ #F70 白色背景,#4D784D链接文字,悬浮色用这个是很好的效果

2007年4月3日星期二

让链接上方有图片

CSS样式定义:

.样式名 {
display:block;
width:200px;
height:133px;
line-height:254px;
text-align:center;
background:url("图片地址") no-repeat center top;
overflow:hidden;}

在HTML页中只要在链接中加一个 class=''样式名" 即可调用。

解释:
display:block是把图片和文字作为一个块
width调整块的宽度,一般和文字同宽即可
height和line-height分别调整块的高度(太小则显示不全,太大则多出空白)和文字相对于图片的位置。
text-align:center让图片和文字中间对齐,链接上方出现图片一般采用中间对齐,也可以左对齐和右对齐。
background:url("图片地址") no-repeat center top 图片地址和样式。no-repeat表示不重复只显示一张;center和top分别定义上下对齐和左右对齐
overflow:hidden 如果显示的内容超出块的大小则不显示超出部分

2007年3月19日星期一

白边加阴影文字的做法

  如上图的文字:
  在Photoshop中输入文字,点菜单的图层=>栅格化=>文字把文字栅格化(因为只有栅格化后才能编辑),再点菜单的图层=>图层样式,在投影和描边设置适当的值就可得到了。