分享一个可以让DIV实现居中齐的方法
分享 2012.03.23 浏览次数:7872次
无意中在网站看到一属性可以让一个DIV实现居中,个人觉得很好,想起以前自己学习CSS时候也曾经接触过实现DIV居中的方法,看过css彻底研究一本书,中讲到用三个DIV的方式,实现代码长,代码不易理解,现在想想,时代的变化真快!下面就分享一下,用vertical-align:middle可以很简单地解决。
就以一个404页面为例,看如何让一张图片相对于整个页面居中,如下图:
这是一个404页面,里面就只有一张图片,点击图片可以回到首页,而且这个图片是相对于整个页面居中的,无论是水平还是垂直。
接下来看一下它的html代码:
1DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 3<html xmlns="http://www.w3.org/1999/xhtml"> 4<head> 5<title>404页面title> 6head> 7<body> 8<div class="wall"> 9<a href="index.html"><img class="img404" src="images/404.jpg" alt="404页面"/>a> 10div> 11body> 12html>
代码很简单,就一个class="wall"的div标签,一个a标签,一个class=“img404”的img标签。
接下来就是写css了,先让class="wall"的div的宽和高都为100%,以填充整个页面,CSS如下:
1<style type="text/css">
2 body{ margin:0; background:#333; _height:100%;}
3 .wall{ width:100%; height:100%; position:absolute; left:0; top:0; text-align:center;}
4 .img404{ border:0;width:700px;}
5style>
以上CSS里面值得一说的恐怕就是为什么要用绝对定位(position:absolute)以及_height:100%这个样式了;我试了很多方法,结果我只能用绝对定位才能让它的height:100%生效,当然固定定位(position:fixed)也是可以的,可是IE6不支持;_height:100%是为了兼容IE6,让class="wall"的div在IE6里也能高度为100%。如果想验证一下class="wall"的div现在是否已经填充了整个页面,不妨在.wall里面设一个背景色就可以知道了,这里我就不做实验了。
目前整页的代码如下:
1DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
3<html xmlns="http://www.w3.org/1999/xhtml">
4<head>
5<title>404页面title>
6<style type="text/css">
7 body{ margin:0; background:#333; _height:100%;}
8 .wall{ width:100%; height:100%; position:absolute; left:0; top:0; text-align:center;}
9 .img404{ border:0; width:700px;}
10style>
11head>
12<body>
13<div class="wall">
14<a href="index.html"><img class="img404" src="images/404.jpg" alt="404页面"/>a>
15div>
16body>
17html>
效果如下:
接下来就利用vertical-align:middle来实现垂直居中了,因为class="wall"的div填充了整个页面,所以只要让图片在class="wall"的div里面垂直居中就达到目的了。以前总是以为vertical-align与text-align是同样的道理,一个是垂直居中,一个是水平居中,只要给class="wall"的div加上一个vertical-align:middle就能让图片垂直居中,结果一点效果也没有。事实上vertical-align与text-align完全不一样,给class="wall"的div加上一个text-align:center的话,毫无疑问是可以让里面的img水平居中,但vertical-align却不能这样子用。
先看一下W3C上对vertical-align的定义:vertical-align 属性设置元素的垂直对齐方式。该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。
必须承认这句话我看了很久才看懂说的是神马意思,我的理解是它有两种用法:
第一种用法,先看后面一句“在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。”这很容易理解,如果给一个表格的td加一个vertical-align:middle的样式,表格里面的内容会垂直居中,同样的如果给一个vertical-align:bottom就会底部对齐,如果给一个vertical-align:top就会顶部对齐。
第二种用法,看前页一句“该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。”专业的语言我不会说的,可以打个比喻:假设有两个行内元素a和b,a和b都是img,当a加了一个vertical-align:middle样式之后,b的底部(基线)就会对齐a的中间位置,如下图:
如果a和b都加了一个vertical-align:middle样式,那么就互相对齐了对方的中间位置,也就是它们在垂直方向上的中线对齐了,如下图:
说到这里,思路就清晰了(PS:理应知道vertical-align可以设middle,top,bottom等等,甚至可以设置具体的值或百分比,如果想知道会有怎样的效果,可以自己实验一下,这里就不多说了。)。
接下来回到这篇文章的主题,现在我要让class="img404"的img在class="wall"的div里面垂直居中,我可以在div里面加一个span空标签,把它的高度设为100%,再给它一个vertical-align:middle样式,同样地给img一个vertical-align:middle样式,那么img就可以在div里面垂直居中了。如图:
按照这个思路,完整的页面代码就出来了:
1DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
3<html xmlns="http://www.w3.org/1999/xhtml">
4<head>
5<title>404页面title>
6<style type="text/css">
7 body{ margin:0; background:#333; _height:100%;}
8 .wall{ width:100%; height:100%; position:absolute; left:0; top:0; text-align:center; font-size:0;}
9 .img404{ border:0; width:700px; vertical-align:middle;}
10 .verticalAlign{ vertical-align:middle; display:inline-block; height:100%; width:1px; margin-left:-1px;}
11style>
12head>
13<body>
14<div class="wall">
15<span class="verticalAlign">span>
16<a href="index.html"><img class="img404" src="images/404.jpg" alt="404页面"/>a>
17div>
18body>
19html>
以上的CSS里面值得一提的是.verticalAlign,加一个display:inline-block是为了触发它的layout,以让本来没有layout的span可以设置宽和高,margin-left:-1px是为了让span左移一个像素,而令img在水平方向上回到正中位置;另外.wall里面的font-size:0正如我上一篇文章所说的是为了消除代码换行所造成的空隙。
最终效果如下:
杭州网站建设 相关阅读:如何用opener hack方式实现IE6,7完美跨域
-
杭州网站建设:中学网站安全升级策略与维护
日期:2024-11-22浏览次数:337次
-
杭州网站设计,如何打造精品杭州定制网站?
日期:2024-10-25浏览次数:1224次
-
杭州网站建设:打造视觉统一与美观的企业网站
日期:2024-10-25浏览次数:1193次
-
杭州网站制作公司:打造企业网络形象的首选伙伴
日期:2024-08-23浏览次数:2736次
-
杭州帷拓科技:杭州网站设计公司的首选合作伙伴
日期:2024-08-23浏览次数:2593次
相关新闻
整合同类新闻,相关新闻一手掌握
-
杭州网站营销推广:软文撰写与推广的终极指南
日期:2024-11-22浏览次数:286次
-
杭州网站优化:流量下降原因及解决方案
日期:2024-11-22浏览次数:277次
-
杭州小程序开发:个人如何打造专属小程序
日期:2024-11-22浏览次数:310次
-
杭州网站建设:中学网站安全升级策略与维护
日期:2024-11-22浏览次数:337次
-
抖音电商助力国货潮牌崛起 双11行业销售额增长超700%
日期:2024-11-22浏览次数:253次
最新新闻
与互联网同行,实时掌握网建行业最新动态
-
评论:百度竞价排名既失公正又杂虚假
日期:2010-01-20浏览次数:8379次
-
营口网站建设:网站主页的设计要素
日期:2020-10-22浏览次数:1551次
-
杭州小程序定制接入微信支付,如何操作?
日期:2021-08-02浏览次数:3644次
-
杭州网站建设,哪些内容可以引起顾客共鸣?
日期:2021-08-16浏览次数:3222次
-
杭州定制app成本会受哪些因素影响
日期:2021-12-14浏览次数:3312次
随机新闻
新闻新动态,您需要的新闻管家
洞悉市场趋势演变让传播回归社会
免费获取网站建设与网络推广方案报价
-
关于我们
杭州帷拓科技有限公司,是一家新型的全案网络开发公司,作为以互联网高端网站建设、APP开发、小程序开发为核心的专业网络技术服务供应商,帷拓科技致力于全面分析市场环境、衡量与预测市场需求、整合区别于行业竞争对手的绝对优势,结合品牌理念深度挖掘项目优势和产品价值,提升客户品牌认知、认可度。
-
我们的客户
帷拓科技历经十年沉淀,与国内外上千家客户达成合作关系,其中稳定合作的公司有:浙江华为、浙江移动、浙江5G产业联盟、浙江省社科院、绿城足球俱乐部、娃哈哈双语学校、健康中国杭州峰会、科雷机电等,帷拓科技始终坚持“帷有专业,才能拓展无限”的服务理念,坚持“认真坚持细节”的优质服务理念,不断完善自身,成就企业,最终实现共赢。
-
我们的业务
帷拓科技主营业务范围包含互联网高端网站建设、APP开发、小程序开发、商城网站建设、公众号运营以及数字营销等,涵盖了服务、房产、数码、服装、物流贸易等行业,根据品牌现状,为每个客户量身定制项目整体服务方案,以敏锐的市场洞察力、创新的市场策划能力,全面把握市场变化,为客户实现从企业到消费者的价值转换。