让div等块级元素水平以及垂直居中的解决办法
一、背景
我们在设计页面的时候,经常要把div等块级元素居中显示,而且是相对页面窗口水平和垂直方向居中显示,如让登录窗口居中显示。我们传统解决的办法是用纯CSS来让div等块级元素居中。在本文中,我将给大家讲述如何用CSS和jQuery两种方法让div等块级元素水平和垂直居中。
二、解决办法
1.CSS让div等块级元素水平居中
原理:让一个div等块级元素水平居中,直接用CSS就可以做到。只要设置了div等块级元素的宽度,然后使用margin设置边距0 auto,CSS自动算出左右边距,使得div等块级元素居中。
CSS代码:
复制.mycss{ margin:0 auto; width:300px; height:200px; }
但是如果要使div等块级元素垂直方向也居中,恐怕CSS需要修改了。
2.CSS让一行内容垂直居中显示
原理:当我们设置该行元素的高度和行高相同时,CSS会让它自动垂直居中显示。
CSS代码:
复制 .mycss{ height:200px; line-height:20px; }
3.让div等块级元素水平和垂直都居中,即永远处于屏幕的正中央,当我们做如登录块时非常有用!
实现一、原理:要让div等块级元素水平和垂直居中,必需知道该div等块级元素的宽度和高度,然后设置位置为绝对位置,距离页面窗口左边框和上边框的距离设置为50%,这个50%就是指页面窗口的宽度和高度的50%,最后将该div等块级元素分别左移和上移,左移和上移的大小就是该div等块级元素宽度和高度的一半。
CSS代码:
复制.mycss{ width:300px; height:200px; position:absolute; left:50%; top:50%; margin:-100px 0 0 -150px }
该方法使用普遍,但是前提是必需设置div等块级元素的宽度和高度。如果当页面div等块级元素宽度和高度是动态的,比方说需要弹出一个div等块级元素元素层并且要居中显示,div等块级元素的内容是动态的,所以宽度和高度也是动态的,这时需要用jQuery可以解决居中。
实现二原理:利用CSS的margin设置为auto让浏览器自己帮我们水平和垂直居中。
CSS代码:
复制.mycss{ position: absolute; left: 0px; right: 0; top: 0; bottom: 0; margin: auto; height: 200px; width: 300px; }
4.jQuery实现水平和垂直居中
原理:jQuery实现水平和垂直居中的原理就是通过jQuery设置div等块级元素的CSS,获取div等块级元素的左、上的边距偏移量,边距偏移量的算法就是用页面窗口 的宽度减去该div等块级元素的宽度,得到的值再除以2即左偏移量,右偏移量算法相同。注意div等块级元素的CSS设置要在resize()方法中完成,就是每次改变窗口大 小时,都要执行设置div等块级元素的CSS。
jquery代码:
复制$(window).resize(function(){ $(".myblock").css({ position: "absolute", left: ($(window).width() - $(".myblock").outerWidth())/2, top: ($(window).height() - $(".myblock").outerHeight())/2 }); });
此外在页面载入时,就需要调用resize()方法
复制$(function(){ $(window).resize(); });
此方法的好处就是不需要知道div等块级元素的具体宽度和高度大小,直接用jQuery就可以实现水平和垂直居中,而且兼容各浏览器,这个方法在很多的弹出层效果中应用。
tips:在页面的外面建一个table,设置高度为100%,然后设置td垂直居中显示,把页面套进去就OK拉!
感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下左下角“推荐”按钮,您的将是我最大的写作动力!另外您也可以选择【关注我】,可以很方便找到我!
本文版权归作者和博客园共有,来源网址:http://www.cnblogs.com/hafiz 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?