返回顶部
首页 > 资讯 > 前端开发 > VUE >仅使用CSS怎么做到完全居中
  • 384
分享到

仅使用CSS怎么做到完全居中

2024-04-02 19:04:59 384人浏览 泡泡鱼
摘要

本篇内容介绍了“仅使用CSS怎么做到完全居中”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们都知道 ma

本篇内容介绍了“仅使用CSS怎么做到完全居中”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

我们都知道 margin:0 auto; 的样式能让元素水平居中,而 margin: auto; 却不能做到垂直居中……直到现在。但是,请注意!想让元素绝对居中,只需要声明元素高度,并且附加以下样式,就可以做到:
 

CSS Code复制内容到剪贴板

  1. .Absolute-Center {   

  2.   margin: auto;   

  3.   position: absolute;   

  4.   top: 0; left: 0; bottombottom: 0; rightright: 0;   

  5. }  

  我并不是第一个发现这种方法的人(不过我还是敢把它叫做“完全居中”),它有可能是种非常普遍的技巧。但大多数介绍垂直居中的文章中并没有提到过这种方法。

  以前从未用过这种方法的我想试试,看看这种”完全居中”的方法到底有多么神奇。 好处:

    跨浏览器,兼容性好(无需hack,可兼顾IE8~IE10)
    无特殊标记,样式更精简
    自适应布局,可以使用百分比和最大最小高宽等样式
    居中时不考虑元素的padding值(也不需要使用box-sizing样式)
    布局块可以自由调节大小
    img的图像也可以使用

  同时注意:

    必须声明元素高度
    推荐设置overflow:auto;样式避免元素溢出,显示不正常的问题
    这种方法在windows Phone上不起作用

浏览器支持:Chrome、Firefox、Safari、Mobile Safari、IE8-10。 “完全居中”经测试可以完美地应用在最新版本的Chrome、Firefox、Safari、Mobile Safari中,甚至也可以运行在IE8~IE10上
 对照表

  “完全居中”并不是本篇文章中唯一的选项。要做到垂直居中,还存在着其他方法,各有各的长处。采取什么样的方法,取决于你所支持的浏览器,以及现有标签的结构。下面这张对照表能够帮你选出最符合你需要的方法。
仅使用CSS怎么做到完全居中

说明

  在研究了规范和文档后,我总结出了“完全居中”的工作原理:

  1.在普通文档流里,margin: auto; 的意思是设置元素的margin-top和margin-bottom为0。

  W3.org If ‘margin-top’, or ‘margin-bottom’ are ‘auto’, their used value is 0.

  2. 设置了position: absolute; 的元素会变成块元素,并脱离普通文档流。而文档的其余部分照常渲染,元素像是不在原来的位置一样。 Developer.mozilla.org …an element that is positioned absolutely is taken out of the flow and thus takes up no space

  3. 设置了top: 0; left: 0; bottom: 0; right: 0; 样式的块元素会让浏览器为它包裹一层新的盒子,因此这个元素会填满它相对父元素的内部空间,这个相对父元素可以是是body标签,或者是一个设置了position: relative; 样式的容器。 Developer.mozilla.org For absolutely positioned elements, the top, right, bottom, and left properties specify offsets from the edge of the element’s containing block (what the element is positioned relative to).

  4. 给元素设置了宽高以后,浏览器会阻止元素填满所有的空间,根据margin: auto; 的要求,重新计算,并包裹一层新的盒子。 Developer.mozilla.org The margin of the [absolutely positioned] element is then positioned inside these offsets.

  5. 既然块元素是绝对定位的,又脱离了普通文档流,因此浏览器在包裹盒子之前会给margin-top和margin-bottom设置一个相等的值。 W3.org If none of the three [top, bottom, height] are ‘auto’: If both ‘margin-top’ and ‘margin-bottom’ are ‘auto’, solve the equation under the extra constraint that the two margins get equal values.?AKA: center the block vertically

  使用“完全居中”,有意遵照了标准margin: auto; 样式渲染的规定,所以应当在与标准兼容的各种浏览器中起作用。
 对齐
  容器内对齐

  使用“完全居中”,就可以在一个设置了position: relative的容器中做到完全居中元素了! (居中例子,请前往英文原文查看)

 

CSS Code复制内容到剪贴板

  1. .Center-Container {   

  2.   position: relative;   

  3. }   

  4.     

  5. .Absolute-Center {   

  6.   width: 50%;   

  7.   height: 50%;   

  8.   overflow: <span style="width: auto; height: auto; float: none;" id="22_nwp"><a style="text-decoration: none;" mpid="22" target="_blank" href="Http://cpro.baidu.com/cpro/ui/uijs.PHP?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=f15759f1d844d7fd&k=auto&k0=auto&kdi0=0&luki=9&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=fdd744d8f15957f1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F3058%2Ehtml&urlid=0" id="22_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">auto</span></a></span>;   

  9.   margin: auto;   

  10.   position: absolute;   

  11.   top: 0; left: 0; bottombottom: 0; rightright: 0;   

  12. }  

仅使用CSS怎么做到完全居中

接下来的示例会假设已经包含了以下样式,并且以逐步添加样式的方式提供不同的特性。
  在可视区域内居中

  想要使内容区在可视区域内居中么?设置position: fixed样式,并设置一个较高的z-index值,就可以做到。
 

CSS Code复制内容到剪贴板

  1. .Absolute-Center.is-Fixed {   

  2.   position: fixed;   

  3.   z-index: 999;   

  4. }  

仅使用CSS怎么做到完全居中

移动版Safari的说明:如果外面没有一层设置position: relative的容器,内容区会以整个文档的高度的中心点为基准居中,而不是以可视区域的高度中心点为基准居中。
  偏移值

  如果需要添加固定的标题,或者其他带偏移样式的元素,可以直接把类似top: 70px; 的样式写进内容区域的样式中。一旦声明了margin: auto; 的样式,内容块的top left bottom right的属性值也会同时计算进去。

  如果想让内容块在贴近侧边的过程中保持水平居中,可以使用right: 0; left: auto; 让内容贴在右侧,或者使用left: 0; right: auto; 使内容贴在左侧。

 

CSS Code复制内容到剪贴板

  1. .Absolute-Center.is-Fixed {   

  2.   position: fixed;   

  3.   z-index: 999;   

  4. }  

仅使用CSS怎么做到完全居中

带响应式

  使用absolute的最大好处就是可以完美地使用带百分比的宽高样式!就算是min-width/max-width或者min-height/max-height也能够有如预期般的表现。

  再进一步加上padding样式的话,absolute式的完全居中也丝毫不会破坏!
 

CSS Code复制内容到剪贴板

  1. .Absolute-Center.is-Responsive {   

  2.   width: 60%;    

  3.   height: 60%;   

  4.   min-width: 200px;   

  5.   max-width: 400px;   

  6.   padding: 40px;   

  7. }  

仅使用CSS怎么做到完全居中

带溢出内容

  内容区高度大于可视区域或者一个position: relative的容器,其内容可能会溢出容器,或被容器截断。只要内容区域没有超出容器(没有给内容容器预留padding的话,可以设置max-height: 100%;的样式),那么容器内就会产生滚动条。
 

CSS Code复制内容到剪贴板

  1. .Absolute-Center.is-Overflow {   

  2.   overflow: <span style="width: auto; height: auto; float: none;" id="20_nwp"><a style="text-decoration: none;" mpid="20" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=f15759f1d844d7fd&k=auto&k0=auto&kdi0=0&luki=9&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=fdd744d8f15957f1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F3058%2Ehtml&urlid=0" id="20_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">auto</span></a></span>;   

  3. }  

仅使用CSS怎么做到完全居中.

 大小可调整

  使用其他样式,或者使用javascript调整内容区的大小,也是不用手动重新计算的!如果设置了resize的样式,甚至可以让用户自行调节内容区域的大小。 “完全居中”法,无论内容区怎么改变大小,都会保持居中。

  设置了min-/max- 开头的属性可以限制区块的大小而不用担心撑开容器。
 

CSS Code复制内容到剪贴板

  1. .Absolute-Center.is-Resizable {   

  2.   min-width: 20%;   

  3.   max-width: 80%;   

  4.   min-height: 20%;   

  5.   max-height: 80%;   

  6.   resize: both;   

  7.   overflow: auto;   

  8. }  

仅使用CSS怎么做到完全居中

如果不设置resize: both的样式,可以设置transition样式平滑地在大小间切换。一定要记得设置overflow: auto样式,因为改变大小后的容器高宽很有可能会小于内容的高宽。 “完全居中”法是唯一一种能支持使用resize: both样式的方法。

  使用注意:

    需要设置max-width/max-height给内容区域留足够的空间,不然就有可能使容器溢出。
    resize属性不支持移动版浏览器和IE8-10,如果用户体验很重要的话,请确保用户可以有其他替代方法来改变大小。
    同时使用resize样式和transition会使用户在开始改变大小时产生等于transition效果时间等长的延时。

  图像

  图像也同样有效!提供相应的class,并指定样式 height: auto; ,就得到了一张随着容器改变大小的响应式图片。
仅使用CSS怎么做到完全居中

请注意,height: auto; 样式虽然对图片有效,如果没有用到了后面介绍的&lsquo;可变高技巧&rsquo;,则会导致普通内容区域伸长以适应容器长度。

  浏览器很有可能是根据渲染结果填充了图像高度值,所以在测试过的浏览器中,margin: auto; 样式就像是声明了固定的高度值一般正常工作。

  HTML:
 

XML/HTML Code复制内容到剪贴板

  1. <img <span style="width: auto; height: auto; float: none;" id="17_nwp"><a style="text-decoration: none;" mpid="17" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=f15759f1d844d7fd&k=src&k0=src&kdi0=0&luki=4&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=fdd744d8f15957f1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F3058%2Ehtml&urlid=0" id="17_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">src</span></a></span>="http://placekitten.com/g/500/200" <span style="width: auto; height: auto; float: none;" id="18_nwp"><a style="text-decoration: none;" mpid="18" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=f15759f1d844d7fd&k=alt&k0=alt&kdi0=0&luki=3&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=fdd744d8f15957f1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F3058%2Ehtml&urlid=0" id="18_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">alt</span></a></span>="" />  

  CSS:
 

CSS Code复制内容到剪贴板

  1. .Absolute-Center.is-Image {   

  2.   height: <span style="width: auto; height: auto; float: none;" id="15_nwp"><a style="text-decoration: none;" mpid="15" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=f15759f1d844d7fd&k=auto&k0=auto&kdi0=0&luki=9&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=fdd744d8f15957f1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F3058%2Ehtml&urlid=0" id="15_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">auto</span></a></span>;   

  3. }   

  4.     

  5. .Absolute-Center.is-Image <span style="width: auto; height: auto; float: none;" id="16_nwp"><a style="text-decoration: none;" mpid="16" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=f15759f1d844d7fd&k=img&k0=img&kdi0=0&luki=5&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=fdd744d8f15957f1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F3058%2Ehtml&urlid=0" id="16_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">img</span></a></span> {    

  6.   width: 100%;   

  7.   height: auto;   

  8. }  

  可变高度

  “完全居中”法的确需要声明容器高度,但是高度受max-height样式的影响,也可以是百分比。这非常适合响应式的方案,只需要设置好带溢出内容就行。
仅使用CSS怎么做到完全居中

另一种替代方案是设置display: table样式居中,,不管内容的长度。这种方法会在一些浏览器中产生问题(主要是IE和Firefox)。我在ELL Creative的朋友Kalley写了一个基于Modernizr 的测试,可以用来检查浏览器是否支持这种居中方案。现在这种方法可以做到渐进增强。

  注意要点: 这种方法会破坏浏览器兼容性,如果Modernizr测试不能满足你的需求,你可能需要考虑其他的实现方案。

    与大小可调整技术是不兼容的
    Firefox/IE8中使用display: table,内容区在垂直方向靠上,水平方向仍然居中。
    IE9/10中使用display: table,内容区会跑到左上角。
    移动版Safari中内容区是水平对齐的,但是如果使用了百分比的宽度,水平方向上会稍稍偏离中心。

  Javascript:
 

JavaScript Code复制内容到剪贴板

  1.   

  2. Modernizr.testStyles('#modernizr { display: table; height: 50px; width: 50px; margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0; }', function(elem, rule) {   

  3.   Modernizr.addTest('absolutecentercontent', Math.round(window.innerHeight / 2 - 25) === elem.offsetTop);   

  4. });  

  CSS:
 

CSS Code复制内容到剪贴板

  1. .absolutecentercontent .Absolute-Center.is-Variable {   

  2.   display: table;   

  3.   height: <span style="width: auto; height: auto; float: none;" id="14_nwp"><a style="text-decoration: none;" mpid="14" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=f15759f1d844d7fd&k=auto&k0=auto&kdi0=0&luki=9&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=fdd744d8f15957f1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F3058%2Ehtml&urlid=0" id="14_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">auto</span></a></span>;   

  4. }  

“仅使用CSS怎么做到完全居中”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 仅使用CSS怎么做到完全居中

本文链接: https://lsjlt.com/news/77922.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 仅使用CSS怎么做到完全居中
    本篇内容介绍了“仅使用CSS怎么做到完全居中”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们都知道 ma...
    99+
    2024-04-02
  • CSS如何做到完全居中
    这篇文章主要介绍“CSS如何做到完全居中”,在日常操作中,相信很多人在CSS如何做到完全居中问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS如何做到完全居中”的疑惑有所帮...
    99+
    2024-04-02
  • 怎么仅使用CSS禁用链接
    这篇文章将为大家详细讲解有关怎么仅使用CSS禁用链接,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 答案:使用CSSpointer-events属性 您可以简单地使用...
    99+
    2024-04-02
  • 怎么用CSS将DIV居中
    这篇文章主要介绍了怎么用CSS将DIV居中的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用CSS将DIV居中文章都会有所收获,下面我们一起来看看吧。首先,我们先来看一下DIV居中的两种情况,一种是DIV在浏...
    99+
    2023-07-06
  • 怎么在CSS中使用inline-block实现居中
    怎么在CSS中使用inline-block实现居中?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。迫切需要的方法:inline-block法居中。基本方法是使用 display:...
    99+
    2023-06-09
  • 怎么在CSS中使用Flexbox实现居中效果
    这期内容当中小编将会给大家带来有关怎么在CSS中使用Flexbox实现居中效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。CSS Code复制内容到剪贴板.Center-Container.is-Fle...
    99+
    2023-06-09
  • 怎么在css中实现遮罩全屏居中对齐
    这篇文章将为大家详细讲解有关怎么在css中实现遮罩全屏居中对齐,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体代码如下所示:<style>#toastLoaderFullScr...
    99+
    2023-06-08
  • 怎么在CSS中使用table-cell实现居中效果
    本篇文章给大家分享的是有关怎么在CSS中使用table-cell实现居中效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。HTML: XML/HTML Code复制内...
    99+
    2023-06-09
  • 怎么在CSS中使用负margin值调整居中位置
    今天就跟大家聊聊有关怎么在CSS中使用负margin值调整居中位置,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。CSS Code复制内容到剪贴板.is-Negative {...
    99+
    2023-06-09
  • 怎么使用CSS文本水平居中text-align财产
    这篇文章主要介绍“怎么使用CSS文本水平居中text-align财产”,在日常操作中,相信很多人在怎么使用CSS文本水平居中text-align财产问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2024-04-02
  • 怎么使用CSS居中对齐绝对定位的div
    这篇文章给大家分享的是有关怎么使用CSS居中对齐绝对定位的div的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 答:使用CSS margin,left与right财产 您可以...
    99+
    2024-04-02
  • 用CSS怎么让按钮居中显示
    这篇文章主要介绍“用CSS怎么让按钮居中显示”,在日常操作中,相信很多人在用CSS怎么让按钮居中显示问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”用CSS怎么让按钮居中显示”...
    99+
    2024-04-02
  • 不写css使div居中显示怎么实现
    本教程操作环境:Windows10系统、CSS3版、DELL G3电脑不写css使div居中显示怎么实现?可以使用<center>标签。<center> 对其所包括的文本进行水平居中。实例将 HTML 网页中的文本进...
    99+
    2023-05-14
    css div
  • 怎么用CSS将DIV水平居中对齐
    这篇文章将为大家详细讲解有关怎么用CSS将DIV水平居中对齐,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 答:使用CSSmargin属性 如果您想使<div&...
    99+
    2024-04-02
  • 怎样使用html/css设置背景图片居中
    怎样使用html/css设置背景图片居中,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在html/css中,可以利用background-...
    99+
    2024-04-02
  • CSS中怎么用display实现水平垂直居中
    这篇文章主要介绍“CSS中怎么用display实现水平垂直居中”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS中怎么用display实现水平垂直居中”文章能帮助...
    99+
    2024-04-02
  • CSS中怎么用flex实现水平垂直居中
    这篇文章主要讲解了“CSS中怎么用flex实现水平垂直居中”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS中怎么用flex实现水平垂直居中”吧! 基本...
    99+
    2024-04-02
  • CSS中怎么用margin实现水平垂直居中
    这篇文章主要介绍“CSS中怎么用margin实现水平垂直居中”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS中怎么用margin实现水平垂直居中”文章能帮助大家...
    99+
    2024-04-02
  • 怎样使用CSS实现盒子水平垂直居中
    小编给大家分享一下怎样使用CSS实现盒子水平垂直居中,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!原始代码:center.html:<!DOCTYPE&nb...
    99+
    2023-06-08
  • 怎么用纯CSS实现div水平垂直居中
    这篇文章将为大家详细讲解有关怎么用纯CSS实现div水平垂直居中,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 要让一个DIV水平居中,只要设置可div的宽度高度就可以...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作