css经典技巧

本文分享了28项实用的CSS技巧,包括字体属性简写、元素居中对齐、图片替换、块元素与行内元素转换等,帮助开发者提高网页布局效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
 
 

一、CSS字体属性简写规则 一般用CSS设定字体属性是这样做的: font-weight: bold; font-style: italic; font-varient: small-caps; font-size: 1em; line-height: 1.5em; font-family: verdana,sans-serif 但也可以把它们全部写到一行上去: font: bold italic small-caps 1em/1.5em verdana,sans-serif 真不错!只有一点要提醒的:这种简写方法只有在同时指定font-size和font-family属性时才起作用。而且,如果你没有设定font-weight, font-style, 以及 font-varient ,他们会使用缺省值,这点要记上。

 

二、同时使用两个类 一般只能给一个元素设定一个类(Class),但这并不意味着不能用两个。事实上,你可以这样: < p class=" text side" > ...< /p> 同时给P元素两个类,中间用空格格开,这样所有text和side两个类的属性都会加到P元素上来。如果它们两个类中的属性有冲突的话,后设置的起作用,即在CSS文件中放在后面的类的属性起作用。

 

三、CSS border的缺省值 通常可以设定边界的颜色,宽度和风格,如: border: 3px solid #000 这位把边界显示成3像素宽,黑色,实线。但实际上这里只需要指定风格即可。 如果只指定了风格,其他属性就会使用缺省值。一般地,Border的宽度缺省是medium,一般等于3到4个像素;缺省的颜色是其中文字的颜色。如果这个值正好合适的话,就不用设那么多了。

 

四、CSS用于文档打印 许多网站上都有一个针对打印的版本,但实际上这并不需要,因为可以用CSS来设定打印风格。 也就是说,可以为页面指定两个CSS文件,一个用于屏幕显示,一个用于打印: < link type=" text/css" rel=" stylesheet" href=" stylesheet.css" media=" screen" /> < link type=" text/css" rel=" stylesheet" href=" printstyle.css" media=" print" /> 第1行就是显示,第2行是打印,注意其中的media属性。 但应该在打印CSS中写什么东西呢?你可以按设计普通CSS的方法来设定它。设计的同时就可以把这个CSS设成显示CSS来检查它的效果。也许你会使用 display: none 这个命令来关掉一些装饰图片,再关掉一些导航按钮。

 

五、图片替换技巧 一般都建议用标准的HTML来显示文字,而不要使用图片,这样不但快,也更具可读性。但如果你想用一些特殊字体时,就只能用图片了。 比如你想整个卖东西的图标,你就用了这个图片: < h1> < img src=" widget-image.gif" alt=" Buy widgets" /> < /h1> 这当然可以,但对搜索引擎来说,和正常文字相比,它们对alt里面的替换文字几乎没有兴趣这是因为许多设计者在这里放许多关键词来骗搜索引擎。所以方法应该是这样的: < h1> Buy widgets< /h1> 但这样就没有特殊字体了。要想达到同样效果,可以这样设计CSS: h1 { ; height: image height text-indent: -2000px } 注意把image height换成真的图片的高度。这里,图片会当作背景显示出来,而真正的文字由于设定了-2000像素这个缩进,它们会出现在屏幕左边2000点的地方,就看不见了。但这对于关闭图片的人来说,可能全部看不到了,这点要注意。

 

六、CSS box模型的另一种调整技巧 这个Box模型的调整主要是针对IE6之前的IE浏览器的,它们把边界宽度和空白都算在元素宽度上。比如: #box { width: 100px; border: 5px; padding: 20px } 这样调用它: < div id=" box" > ...< /div> 这时盒子的全宽应该是150点,这在除IE6之前的IE浏览器之外的所有浏览器上都是正确的。但在IE5这样的浏览器上,它的全宽仍是100点。可以用以前人发明的Box调整方法来处理这种差异。 但用CSS也可以达到同样的目的,让它们显示效果一致。 #box { width: 150px } #box div { border: 5px; padding: 20px } 这样调用: < div id=" box" > < div> ...< /div> < /div> 这样,不管什么浏览器,宽度都是150点了。

 

七、块元素居中对齐 如果想做个固定宽度的网页并且想让网页水平居中的话,通常是这样: #content { width: 700px; margin: 0 auto } 你会使用 < div id=" content" > 来围上所有元素。这很简单,但不够好,IE6之前版本会显示不出这种效果。改CSS如下: body { text-align: center } #content { text-align: left; width: 700px; margin: 0 auto } 这会把网页内容都居中,所以在Content中又加入了 text-align: left 。

 

八、用CSS来处理垂直对齐 垂直对齐用表格可以很方便地实现,设定表格单元 vertical-align: middle 就可以了。但对CSS来说这没用。如果你想设定一个导航条是2em高,而想让导航文字垂直居中的话,设定这个属性是没用的。 CSS方法是什么呢?对了,把这些文字的行高设为 2em:line-height: 2em ,这就可以了。

九、CSS在容器内定位 CSS的一个好处是可以把一个元素任意定位,在一个容器内也可以。比如对这个容器: #container { position: relative } 这样容器内所有的元素都会相对定位,可以这样用: < div id=" container" > < div id=" navigation" > ...< /div> < /div> 如果想定位到距左30点,距上5点,可以这样: #navigation { position: absolute; left: 30px; top: 5px } 当然,你还可以这样: margin: 5px 0 0 30px 注意4个数字的顺序是:上、右、下、左。当然,有时候定位的方法而不是边距的方法更好些。

 

十、直通到屏幕底部的背景色 在垂直方向是进行控制是CSS所不能的。如果你想让导航栏和内容栏一样直通到页面底部,用表格是很方便的,但如果只用这样的CSS: #navigation { background: blue; width: 150px } 较短的导航条是不会直通到底部的,半路内容结束时它就结束了。该怎么办呢? 不幸的是,只能采用欺骗的手段了,给这较短的一栏加上个背景图,宽度和栏宽一样,并让它的颜色和设定的背景色一样。 body { background: url(blue-image.gif) 0 0 repeat-y } 此时不能用em做单位,因为那样的话,一旦读者改变了字体大小,这个花招就会露馅,只能使用px。

 

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

 

十二、再来一个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行。

 

十三、页面的最小宽度 min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得这个,而它实际上把width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个< div> 放到 < body> 标签下,然后为div指定一个类: < body> < div class=" container“> 然后CSS这样设计: #container { min-width: 600px; width:expression(document.body.clientWidth < 600? " 600px" : " auto" ); } 第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。 同样的办法也可以为IE实现最大宽度:
#container { min-width: 600px; max-width: 1200px; width:expression(document.body.clientWidth < 600? " 600px" : document.body.clientWidth > 1200? ”1200px“ : ”auto" ); }

 

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

 

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

 

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

 

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

 

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

 

十九、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; } 至于效果,还可以自己调整了。

 

二十、在不同页面上使用同样的导航代码 许多网页上都有导航菜单,当进入某页时,菜单上相应这一项就应该变灰,而其他页亮起来。一般要实现这个效果,需要写程序或专门为每一页做设计,现在靠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的那一行导航条就会显示出特殊效果来。其他页也是如此。

 

二十一、 控制特定类型的input :

input[type='text']{
......
}


二十二、图像替换文本


#header h1 a{
display:block;
text-indent:-9999em;
background:(images/logo.png) no-repeat 0 0;
height:87px;
width:250px;
overflow:hidden;
}
  看得懂这个吗?我看到很多们都LOGO都只是用图片代替,而没有链接。其他,只需要更简单的方法,利用图像替换文本的方法,显示LOGO,并拥有链接。各个值的功能display:block; a的默认状态是inline的,需要让它变成块状的,才可能定义高度和宽度,以适应LOGO的宽高。另外的一个功能是,让链接在text-indent后,在原区域可点击。
  text-indent:-9999em; - 难道你想删除logo中的文字?这样应该是你的最后选择。因为这不符合语议标记,所以,也对搜索引擎不友好。而这个值就是让你的字体缩进到看不到的地方。让你不用删除文字。

 

二十三、display:inline-block;


  在写sofished daily的CSS时,在顶站定日期的空间,就用了display:inline-block; 顾名思义,就是在内联情况也的块状,可以设定高度宽度。在GR看到一篇share讲了说到了跨浏览器显示这个显示display:inline-block的方法:

Example Source Code [www.52css.com]
.element-class {
display: -moz-inline-stack; //Firefox only code
display: inline-block; //some standard browsers
zoom: 1; //IE only
*display: inline; //Only IE know this code (CSS Hack)
}
  好处是什么?好处就是不用使用float,在一行中显示设定宽高的元素。不过,上面提到的跨浏览器,貌似我在IE下依然可以显示,难道是IE tester的问题?

 

二十四、用line-height文字垂直居中

 

你可能知道用text-align来让文字水平剧中,不过,却找不到更直接的方法来让元素垂直居。这里,或许你可以利用一下line- height。比如你要在导航中让文字简直居中于导航,可能会想到用padding和margin,不过,这时,烦人的IE可能会给你制造出麻烦,所以,用line-height吧,这是一个更简单的方法:
  上面这张图片的导航高度是28px,你可以给a设定这样的值:#navigation a{ font-size:14px; line-height:28px; } ,这样,就少去了用padding和margin的麻烦了。


二十五、布局居中

 


  你会发现,很多网站的布局都是剧中的。原因是方便浏览,对用户比较好?对于初学CSS的人来说,可能并不知道怎么做吧。很简单,就一句,假设你的布局的那个div壳是#wrapper:
  div#wrapper{ margin:0 auto; }
  这就是说,让上面没有margin,而左右自动适应,选择相等的宽度。这样就可以更好地在各个浏览器中表现了。

二十六、

不同尺寸图片的居中

/*非IE的主流浏览器识别的垂直居中的方法*/
display: table-cell;
vertical-align:middle;
/*设置水平居中*/
text-align:center;
/* 针对IE的Hack */
*display: block;
*font-size: 175px; /*约为高度的0.873,200*0.873 约为175*/
*font-family:Arial; /*防止非utf-8引起的hack失效问题,如gbk编码*/


二十七、IE6下的PNG透明

filterrogidXImageTransform.Microsoft.AlphaImageLoader(src='alpha.png', sizingMethod='scale');

二十八、滤镜

filter: Alpha(Opacity=30);
opacity:0.3;

二十九、外层DIV高度自适应

height:1%; overflow:hidden

三十、 css文档里慎用中文注释,容易造成编码问题

三十一、 表格相邻的边框合并

border-collapse:collapse

三十二、 最小宽度

IE6另外一个bug就是它不支持 min-width 属性. min-width又是相当有用的, 特别是对于弹性模板来说, 它们有一个100%的宽度,min-width 可以告诉浏览器何时就不要再压缩宽度了.

除IE6以外所有的浏览器你只需要一个 min-width: Xpx; 例如:

.container {
min-width:300px;
}

为了让他在IE6下工作, 我们需要一些额外的工作. 开始的时候我们需要创建两个div, 一个包含另一个:

<div class="container">
<div class="holder">Content</div>
</div>

然后你需要定义外层div的min-width属性

.container {
min-width:300px;
}

这时该是IE hack大显身手的时候了. 你需要包含如下的代码:

* html .container {
border-right: 300px solid #FFF;
}
* html .holder {
display: inline-block;
position: relative;
margin-right: -300px;
}

转载于:https://www.cnblogs.com/haixue/archive/2009/03/07/1405518.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值