CSS 实现文字、图片垂直对齐(vertical-align)专题文章

垂直对齐在 Firefox 和 IE7 等最新浏览器中,已经不是什么难事,但是IE6下使用 DIV 布局,垂直对齐则依然是个非常令人头痛的问题;虽然 IE 7 已经越来越普及,但是 IE6 依然占了很大的份额,所以,还是让我们一起看看解决方法吧!

CSS 实现文字、图片垂直对齐(vertical-align)专题文章 – 示例

 
<style type="text/css">
 
/*
	说明:IE 6 下 DIV 垂直居中对齐
	来源:CssPlay [ http://www.cssplay.co.uk ]
	整理:CodeBit.cn [ http://www.codebit.cn ]
*/
.fixVerticalCenterOuter{
	width:300px;
	height:200px;
	border:1px solid #ccc;
	text-align:center;
	display:table-cell;
	vertical-align:middle;
}
 
/* for IE 6 */
* html .fixVerticalCenterAdd {
	width:0;
	height:100%;
	display:inline-block;
	vertical-align:middle;
}
* html .fixVerticalCenterInner{
	vertical-align:middle;
	display:inline-block;
}
 
</style>
 
<div class="fixVerticalCenterOuter">
	<span class="fixVerticalCenterAdd"></span><!-- // fixVerticalCenterAdd -->
	<span class="fixVerticalCenterInner"><a href="http://www.codebit.cn"><img src="http://www.codebit.cn/admin/tpl/default/img/logo.gif" alt="CodeBit.cn - 聚合小段精华代码" /></a></span><!-- // fixVerticalCenterInner -->
</div><!-- // fixVerticalCenterOuter -->

用 CSS 实现图片替换文字(Image replacement)

不论是对浏览者还是对搜索引擎,文字都是最佳的页面内容展示方式,但是,由于字体等原因的限制,纯文字的展示渐渐无法满足爱美的设计师的要求。

于是,出现了通过 CSS 来实现用图片替换文字的方法,这种方式既能实现页面上各种丰富的效果,又能满足搜索引擎优化的需要。因此,深受网页设计师的喜爱,本文介绍了几种常见的图文替换技术。

Fahrner Image Replacement (FIR)

这是最早出现的图文替换技术,是由 Todd Fahrner 提出的,非常容易理解:

HTML 代码:

 
<h2>
	<span>Hello World</span>
</h2>

CSS 代码

 
<style type="text/css">
h2 {
	background:url(hello_world.gif) no-repeat;
	width: 150px;
	height: 35px;
}
span {
	display: none;
}
</style>

代码非常明白:先将图片应用在 H2 的背景中,然后将 SPAN 的标签隐藏。但是这种方式有个问题,就是当图片无法显示时,将导致这个区域没有任何内容。同时,使用 display:none 的方式隐藏的内容,将被许多主流屏幕阅读器忽略,从而造成可用性问题,因此,应该尽量避免使用。

Phark 的方法

这种技术是由 Mike Rundle 提出的,好处是不需要额外的标签:

HTML 代码:

 
<h2>
Hello World
</h2>

CSS 代码

 
<style type="text/css">
h2 {
	text-indent: -5000px;
	background:url(hello_world.gif) no-repeat;
	width: 150px;
	height:35px;
}
</style>

代码也非常简单,通过文本缩进,将文字隐藏,但是,当图片无法显示时,依然存在 FIR 的问题。

Gilder/Levin 的方法

这种技术是由 Tom Gilder 和 Levin Alexander 共同提出的,这也许是一个最完善的图文替换技术了:

HTML 代码:

 
<h2>
	<span></span>Hello World
</h2>

CSS 代码

 
<style type="text/css">
h2 {
	width: 150px;
	height: 35px;
	position: relative;
}
h2 span {
	background: url(hello_world.gif) no-repeat;
	position: absolute;
	width: 100%;
	height: 100%;
}
</style>

首先,将 H2 的 position 设为 relative ,这样将使 H2 里面的元素定位以 H2 为参照,然后将 SPAN 元素绝对定位,撑满整个 H2 区域,同时将背景图应用在 SPAN 标签里面;这种方法的原理是将 SPAN 标签覆盖在文字内容上面,一旦 SPAN 里面的背景图无法显示,将显示下层的文字内容,不影响正常使用。但是,此方法也有一个缺陷,就是背景图不能透明,否则将透出下面的文字。

如何在图片浮动时不让文字内容环绕到图片下方

如何在图片浮动时不让文字内容环绕到图片下方

类似左侧图片右侧文字的排版方式我们经常能够见到,但是,有许多网友都遇到过一个问题:在图片浮动到一侧时,超出图片高度的文字往往会环绕到图片的下方。

ghettocooler.net 的解决方案:

如何在图片浮动时不让文字内容环绕到图片下方 – 示例1

 
<style type="text/css">
 
.callout {
	border:1px solid #000;
	float:left;
	width:275px;
}
 
.callout h3 {
	width:115px;
	height:65px;
	float:left;
	text-indent:-8008px;
	background:transparent url(team-report.gif) no-repeat 0 0;
}
 
.callout * {
	width:160px;
	float:right;
}
 
.callout * * {
	width:auto;
	float:none;
}
 
</style>
 
<div class="callout">
	<h3>team report graphic, replaced image</h3>
	<h2>Team Report 10-06-05</h2>
 
	<ul>
		<li>An <a href="#">anchor tag</a> perhaps?</li>
		<li>Or a <strong>strong tag</strong> perhaps?</li>
	</ul>
 
	<p>Here's a paragraph too!</p>
</div>

原文请浏览:
http://www.ghettocooler.net/2005/11/13/image-floats-without-the-text-wrap/

用背景图的方式实现在图片浮动时不让文字内容环绕到图片下方

这个方法的好处是代码简单,使用方便,当然,前提是你不需要在图片上加链接。

如何在图片浮动时不让文字内容环绕到图片下方 – 示例2

 
<style type="text/css">
.callout {
	background:url('logo.gif') no-repeat 5px 5px;
	padding:5px 5px 5px 230px;
	border:1px solid #999;
	width:60%;
	margin:0 auto;
}
.callout h2 {
	margin:0;
	padding:0;
}
</style>
 
<div class="callout">
	<h2>CodeBit.cn - 聚合小段精华代码</h2>
	<p>在编程的过程中,我们通常都会积累很多简单、有效并且可重用的小段代码,一个简单的字符串处理函数或者一个验证邮件地址的正则表达式,又或者一个简单的文件上传类,甚至一个效果不错的CSS导航样式。这些小技巧为我们节省了不少时间,但是时间一长,代码数量越来越多,寻找起来也耗费了不少时间。因此,本站致力于收集整理一些类似的小知识,并且努力提高文章搜索质量,一来方便大家查阅,二来也算是支持一下开源事业。</p>
</div>

如何用图片实现表单(form)的重置(reset)按钮

合理的运用图片,能够使站点更加丰富多彩,相信有许多喜欢用图片的设计师都遇到过一个问题:用图片实现表单(form)的重置(reset)按钮时,这个按钮并不能重置表单,相反却执行了提交表单的操作,本文说明了这个问题的原因,并给出了相应的解决方案。

出现上述问题的原因主要是:普通的按钮是通过类型来区分的,submit 为提交按钮,reset 为重置按钮,而类型为图片(type="image")的按钮,其默认操作是提交表单。因此,如果想用图片实现重置按钮,就需要一些额外的设置了。

如何用图片实现表单(form)的重置(reset)按钮 – 示例

一个简单包含提交、重置按钮的表单代码如下:

 
<form method="post" name="testForm_1" action="">
	<p><input type="text" name="keyword" /></p>
	<input type="submit" value="Submit" />
	<input type="reset" value="Reset" />
</form>

如果想用图片代替重置按钮,可以用下面的方法:

(1)给 type 为 image 的 input 添加 onclick 事件来实现重置,并通过添加 return false 来避免默认的提交操作:

 
<form method="post" name="testForm_2" action="">
	<p><input type="text" name="keyword" /></p>
	<input type="image" src="send.gif" />
	<input type="image" src="reset.gif" onclick="javascript:document.forms['testForm_2'].reset(); return false;" />
</form>

关键代码:

 
onclick="javascript:document.forms['testForm_2'].reset(); return false;"

document.forms[‘testForm_2′].reset(); 是将名称为 testForm_2 的表单重置。

return false; 是防止提交表单。

(2)直接用图片模拟的重置按钮

 
<form method="post" name="testForm_3" action="">
	<p><input type="text" name="keyword" /></p>
	<input type="image" src="send.gif" />
	<img src="reset.gif" alt="Reset" onclick="javascript:document.forms['testForm_3'].reset();" style="cursor:pointer;" />
</form>

关键代码:

 
onclick="javascript:document.forms['testForm_3'].reset(); "
 
style="cursor:pointer;"

document.forms[‘testForm_2′].reset(); 是将名称为 testForm_2 的表单重置。

style="cursor:pointer;" 设置图片悬停时,显示手型光标。

两种方法大同小异,在 javascript 被禁止的情况下,第二种方法按钮不会执行任何操作,而第一种方法却会执行提交操作。

当然,我们也可以直接把样式交给 CSS 去处理,用背景图的方式来实现,但是这样需要将 value 的值留空,如果 CSS 被禁止,那么将会显示一个没有文字的按钮,每个方法都有自己的问题,可以根据自己的需要来选择解决方案。

如何用图片的方式设置圆角区域

如何用图片的方式设置圆角区域

圆角可以让页面感觉不生硬,用好了圆角,会让页面增色不少,因此许多设计师想出各种各样的方法来实现圆角区域,本文介绍的是众多方案中的一种。

如何用图片的方式设置圆角区域 – 示例1

先用图形处理软件创建一个圆角的图片:

然后切出四个角的图片供接下来使用:

 
<style type="text/css">
.roundcont {
	width: 100%;
	background-color: #f90;
	color: #fff;
}
 
.roundcont p {
	margin: 0 10px;
}
 
.roundtop { 
	background: url(tr.gif) no-repeat top right; 
}
 
.roundbottom {
	background: url(br.gif) no-repeat top right; 
}
 
img.corner {
	width: 15px;
	height: 15px;
	border: none;
	display: block !important;
}
</style>
 
<div class="roundcont">
	<div class="roundtop">
		<img src="tl.gif" alt="" 
		width="15" height="15" class="corner" 
		style="display: none" />
	</div>
	
	<p><strong>Codebit.cn - 聚合小段精华代码</strong></p>
	<br />
	<p>在编程的过程中,我们通常都会积累很多简单、有效并且可重用的小段代码,一个简单的字符串处理函数或者一个验证邮件地址的正则表达式,又或者一个简单的文件上传类,甚至一个效果不错的CSS导航样式。这些小技巧为我们节省了不少时间,但是时间一长,代码数量越来越多,寻找起来也耗费了不少时间。因此,本站致力于收集整理一些类似的小知识,并且努力提高文章搜索质量,一来方便大家查阅,二来也算是支持一下开源事业。</p>
	<br />
 
	<p>http://www.CodeBit.cn</p>
  
	<div class="roundbottom">
		<img src="bl.gif" alt="" 
		width="15" height="15" class="corner" 
		style="display: none" />
	</div>
</div>

用 CSS3 的方式制作圆角区域

由于在 CSS 1/CSS 2 中,一个页面元素只能允许一个背景图片,所以在制作圆角边框的时候,不得不费尽心思。Andy Budd 在 24ways 上发表了一篇文章,向我们介绍了如何用 CSS3 的方式制作圆角。本文只是按照原文的思路意译,仅仅摘录了和内容相关的部分,文章后面给出了原文网址,感兴趣的朋友可以直接浏览。

在 CSS 3 中,一个元素允许 8 张背景图,这意味着你不需要附加元素,也可以制作各种各样的效果。

制作 CSS3 圆角边框,非常简单:

 
.box {
	background-image: url(top-left.gif), url(top-right.gif), url(bottom-left.gif), url(bottom-right.gif);
}

默认情况下,背景会平铺,这并不是我希望的,可以用下面的代码:

 
.box {
	background-image: url(top-left.gif), url(top-right.gif), url(bottom-left.gif), url(bottom-right.gif);
	background-repeat: no-repeat, no-repeat, no-repeat, no-repeat;
}

最后,我们需要定义每个背景的位置:

 
.box {
	background-image: url(top-left.gif), url(top-right.gif), url(bottom-left.gif), url(bottom-right.gif);
	background-repeat: no-repeat, no-repeat, no-repeat, no-repeat;
	background-position: top left, top right, bottom left, bottom right;
}

注:目前此代码只能在 Safari 下运行, firefox 和 IE 还不支持。

除了支持多个背景图,CSS3 还能够不用任何图片来制作圆角,你可以通过为 border-radius 设置一个合适的值来达到此目的。

 
.box {
	border-radius: 1.6em;
}

这个技术目前只被 Firefox/Camino 支持,如果你希望创建一个可以被基于 Mozilla 和 WebKit 的浏览器支持的代码,可以将他们整合到一起:

 
.box {
	background-image: none;
	-moz-border-radius: 1.6em;
	-webkit-border-radius: 1.6em;
	border-radius: 1.6em;
	background-image: url(top-left.gif), url(top-right.gif), url(bottom-left.gif), url(bottom-right.gif);
	background-repeat: no-repeat, no-repeat, no-repeat, no-repeat;
	background-position: top left, top right, bottom left, bottom right;
}

如何用图片的方式设置圆角区域 – 示例2

本文并非直译原文,如果你对此文章感兴趣,请浏览:
http://24ways.org/2006/rounded-corner-boxes-the-css3-way

用 JavaScript 实现网页图片等比例缩放

在处理网页图片时,特别是一些图片列表的应用里面,很难保证图片统一大小,直接设置图片大小又会导致图片拉伸,造成图片模糊,本文介绍的代码可以在图片加载完成后自动按比例调整图片大小。

用 JavaScript 实现网页图片等比例缩放 – 示例

 
<script language="JavaScript" type="text/javascript">
<!--
// 说明:用 JavaScript 实现网页图片等比例缩放
// 整理:http://www.CodeBit.cn

function DrawImage(ImgD,FitWidth,FitHeight){
	var image=new Image();
	image.src=ImgD.src;
	if(image.width>0 && image.height>0){
		if(image.width/image.height>= FitWidth/FitHeight){
			if(image.width>FitWidth){
				ImgD.width=FitWidth;
				ImgD.height=(image.height*FitWidth)/image.width;
			}else{
				ImgD.width=image.width;
				ImgD.height=image.height;
			}
		} else{
			if(image.height>FitHeight){
				ImgD.height=FitHeight;
				ImgD.width=(image.width*FitHeight)/image.height;
			}else{
				ImgD.width=image.width;
				ImgD.height=image.height;
			}
		}
	}
}
//-->
</script>

调用方式:

<img src="1148202890.jpg" alt="自动缩放后的效果" onload="javascript:DrawImage(this,200,200);" />

如果图片较大,建议在图片标签里面同时设置期望的图片大小,这样不会导致页面在加载中撑开,该大小不会影响最终缩放效果。可以修改上面的代码为:

<img src="1148202890.jpg" alt="自动缩放后的效果" width="200" height="200" onload="javascript:DrawImage(this,200,200);" />