找回密码
 加入怎通
查看: 928|回复: 5

[站长八卦] CSS的十个常用技巧

[复制链接]
TONY 发表于 2011-11-29 08:28:15 | 显示全部楼层 |阅读模式
1.CSS 字体属性简写规则
* g8 t$ R& ^4 m4 g; @1 |. t1 ~5 l一般用 CSS 设定字体属性是这样做的:; o" N9 C" ]" }7 B0 s! s( t
font-weight:bold;font-style:italic;font-varient:small-caps;font-size:1em;line-height:1.5em;font-family:verdana,sans-serif;5 o4 D: F8 ~9 s" g+ Y6 e% l, b
但也可以把它们全部写到一行上去:
/ c: v, J* F. Y# D' X; Dfont: bold italic small-caps 1em/1.5em verdana,sans-serif;" o/ i3 [( g" B! u* E! M
真不错!只有一点要提醒的:这种简写方法只有在同时指定 font-size 和 font-family 属性时才起作用。而且,如果你没有设定 font-weight, font-style, 以及 font-varient ,他们会使用缺省值,这点要记上。
" A5 P; H0 ~6 f) V4 j( a2. 同时使用两个类+ z% C. Z# c$ L; }) t$ c, z( C! Q
一般只能给一个元素设定一个类(Class),但这并不意味着不能用两个。事实上,你可以这样:( o% S6 t. u. }. ]# y
<p class="text side">...</p>
+ ^" p+ b$ E. P( k, Y/ D; s/ q5 Z同时给 P 元素两个类,中间用空格格开,这样所有 text 和 side 两个类的属性都会加到 P 元素上来。如果它们两个类中的属性有冲突的话,后设置的起作用,即在 CSS 文件中放在后面的类的属性起作用。/ {6 B8 k9 E$ Y  \8 n; l
补充:对于一个ID,不能这样写 <p id="text side">...</p>
3 ^5 ~9 Y  k$ r6 a* Z. O2 ?, Y3. CSS border 的缺省值
$ n+ W3 g$ ]3 M' l: l2 j通常可以设定边界的颜色,宽度和风格,如:border: 3px solid #000
; j$ M) R* C& @4 A. \; p* W这位把边界显示成3像素宽,黑色,实线。但实际上这里只需要指定风格即可。
8 C8 J: F) m0 _$ ?5 t$ X如果只指定了风格,其他属性就会使用缺省值。一般地,Border 的宽度缺省是 medium,一般等于3到4个像素;缺省的颜色是其中文字的颜色。如果这个值正好合适的话,就不用设那么多了。
) ?' N! v7 d6 ~! ]4. CSS 用于文档打印' v3 [  B" v. @9 B7 `5 M$ O- L) r) }
许多网站上都有一个针对打印的版本,但实际上这并不需要,因为可以用 CSS 来设定打印风格。也就是说,可以为页面指定两个 CSS 文件,一个用于屏幕显示,一个用于打印:
- y+ V( U; s$ O) I<link type="text/css" rel="stylesheet" href="stylesheet.css" media="screen" /><link type="text/css" rel="stylesheet" href="printstyle.css" media="print" />
% h. |& i  Z, s5 c第1行就是显示,第2行是打印,注意其中的 media 属性。1 f: {6 e0 V$ k# X, ]0 m5 e5 h
但应该在打印 CSS 中写什么东西呢?你可以按设计普通 CSS 的方法来设定它。设计的同时就可以把这个 CSS 设成显示 CSS 来检查它的效果。也许你会使用 display: none 这个命令来关掉一些装饰图片,再关掉一些导航按钮。要想了解更多,可以看“打印差异”这一篇。
5 `/ R. i/ N( R- Y6 O# U9 `5. 图片替换技巧
& T$ v! F4 F) ?8 h- h/ {7 ~一般都建议用标准的 HTML 来显示文字,而不要使用图片,这样不但快,也更具可读性。但如果你想用一些特殊字体时,就只能用图片了。# F4 _& z* T+ _) K
比如你想整个卖东西的图标,你就用了这个图片:: |" s+ L" J0 b$ E' `% P' U. s5 r" v4 n' A# P
<h1><img src="widget-image.gif" alt="Buy widgets" /></h1>. c! z+ o! C( s7 W4 P
这当然可以,但对搜索引擎来说,和正常文字相比,它们对 alt 里面的替换文字几乎没有兴趣这是因为许多设计者在这里放许多关键词来骗搜索引擎。所以方法应该是这样的:. W( t5 h4 ]2 i! s) m+ d
<h1>Buy widgets</h1>
! T4 i0 w& C+ N2 X2 s但这样就没有特殊字体了。要想达到同样效果,可以这样设计 CSS:
' ]; p- X9 o/ P( Gh1 { background: url(widget-image.gif) no-repeat; height: image height; text-indent: -2000px }
5 U0 E( Q. i9 l注意把 image height 换成真的图片的高度。这里,图片会当作背景显示出来,而真正的文字由于设定了 -2000 像素这个缩进,它们会出现在屏幕左边 2000 点的地方,就看不见了。但这对于关闭图片的人来说,可能全部看不到了,这点要注意。
1 h0 D: ]% I% {( o1 m6. CSS box 模型的另一种调整技巧
0 c, Q& l! Z; v+ \5 m这个 Box 模型的调整主要是针对 IE6 之前的 IE 浏览器的,它们把边界宽度和空白都算在元素宽度上。比如:9 ~% h/ m% x5 G" i
#box { width: 100px; border: 5px; padding: 20px }; S5 Z  e5 c1 A* h) ~
这样调用它:
+ m$ w+ l/ u& F* C& G! l& I/ G<div id="box">...</div>" W6 D7 P0 q! Z0 p7 O! N+ q' n& P# |
这时盒子的全宽应该是 150 点,这在除 IE6 之前的 IE 浏览器之外的所有浏览器上都是正确的。但在 IE5 这样的浏览器上,它的全宽仍是 100 点。可以用以前人发明的 Box 调整方法来处理这种差异。
5 U3 ^  H% L$ M$ P5 x) \% T. M但用 CSS 也可以达到同样的目的,让它们显示效果一致。6 E' T$ {* ?/ f/ S' r: Q/ i8 h2 l7 S8 f
#box { width: 150px }#box div { border: 5px; padding: 20px }, `) A" R4 I$ d1 K! h
这样调用:
, _4 r! U; ?* E( z: x* ]8 v<div id="box"><div>...</div></div>
) ^3 B' U3 j5 Q2 w7 q这样,不管什么浏览器,宽度都是150点了。( ]5 J# l6 x9 e" n  x% R6 z
7. 块元素居中对齐
& a" i: I1 E; B8 @8 w如果想做个固定宽度的网页并且想让网页水平居中的话,通常是这样:
( I; K& ~, u3 M/ `* \/ ]8 V8 H#content { width: 700px; margin: 0 auto }
) H* F* G8 n- B3 Q: Y4 @# D* p你会使用 <div id="content"> 来围上所有元素。这很简单,但不够好,IE6 之前版本会显示不出这种效果。改 CSS 如下:
$ R/ Q: F5 E$ F" [- Q5 cbody { text-align: center }#content { text-align: left; width: 700px; margin: 0 auto }0 e/ ^& Y8 w: J4 _2 t5 ^2 d
这会把网页内容都居中,所以在 Content 中又加入了 text-align: left 。% H! ]# o3 T7 E4 o/ ?
8. 用 CSS 来处理垂直对齐" v: M# C" L: _5 u/ q! C" B
垂直对齐用表格可以很方便地实现,设定表格单元 vertical-align: middle 就可以了。但对 CSS 来说这没用。如果你想设定一个导航条是2em高,而想让导航文字垂直居中的话,设定这个属性是没用的。
) A4 {- J- C0 z- l5 z/ `CSS 方法是什么呢?对了,把这些文字的行高设为 2em:line-height: 2em ,这就可以了。* t; D4 @9 N2 V7 g  a; V1 u! W. ~( f
9. CSS 在容器内定位$ O* V0 u. H9 Z1 F
CSS 的一个好处是可以把一个元素任意定位,在一个容器内也可以。比如对这个容器:
- y- [8 w2 H$ }  d, E" S#container { position: relative }% |. A* X2 [/ u( X1 {+ L" j) F
这样容器内所有的元素都会相对定位,可以这样用:' h: \, `# `  w( I* @; |
<div id="container"><div id="navigation">...</div></div>- Q4 \9 m5 M! o- K- J4 T; d
如果想定位到距左30点,距上5点,可以这样:
; m; l3 p' ?4 y$ r& e#navigation { position: absolute; left: 30px; top: 5px }
+ \8 y$ k* o5 y  c, c9 H5 l+ ?- r当然,你还可以这样:9 H+ L0 Z& l- {3 X& _5 v
margin: 5px 0 0 30px" w3 ?. {7 I( K( i9 G& K$ p1 M
注意4个数字的顺序是:上、右、下、左。当然,有时候定位的方法而不是边距的方法更好些。  ]3 A: [. y- f+ O9 z  E
10. 直通到屏幕底部的背景色! n! p( H2 E$ B- ?3 R* n
在垂直方向是进行控制是 CSS 所不能的。如果你想让导航栏和内容栏一样直通到页面底部,用表格是很方便的,但如果只用这样的 CSS:( B. U2 P* z- e1 Y5 h
#navigation { background: blue; width: 150px }
) h  G& f; X5 Y8 Q( V% E: x6 ]- ^较短的导航条是不会直通到底部的,半路内容结束时它就结束了。该怎么办呢?' U* v& b: w, y1 ^
不幸的是,只能采用欺骗的手段了,给这较短的一栏加上个背景图,宽度和栏宽一样,并让它的颜色和设定的背景色一样。* O" d% ~1 w9 k& ^0 P0 K: ^! |
body { background: url(blue-image.gif) 0 0 repeat-y }
+ W0 U) P. i7 o7 A3 q2 u5 m此时不能用 em 做单位,因为那样的话,一旦读者改变了字体大小,这个花招就会露馅,只能使用 px。% w3 L1 Q9 E& i5 \2 A; g2 V
原文整理来源:zoomla!逐浪CMS

暂时无法加载帖子列表

回复

使用道具 举报

紫星墙绘 发表于 2026-02-21 15:51:23 | 显示全部楼层
蹲了这么久,终于看到有价值的讨论,支持一下!
回复

使用道具 举报

zhangk 发表于 2026-03-27 13:48:23 | 显示全部楼层
刚好遇到类似问题,看完这个帖子心里有底了
回复

使用道具 举报

wawjbdstbaw 发表于 2026-07-08 20:39:14 | 显示全部楼层
学习到了,之前一直没注意过这个点,受教了
回复

使用道具 举报

qiulan 发表于 2026-07-11 16:23:32 | 显示全部楼层
楼主太厉害了,整理得这么详细,必须支持
回复

使用道具 举报

星神子 发表于 2026-08-12 12:18:11 | 显示全部楼层
完全赞同,我也是这么认为的,英雄所见略同~
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-9-15 13:03 , Processed in 0.062424 second(s), 26 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表