头闻号

深圳市宏双盈塑胶有限公司

综合性公司

首页 > 新闻中心 > 科技常识:CSS中的垂直和水平居中完全指南
科技常识:CSS中的垂直和水平居中完全指南
发布时间:2024-11-19 08:50:45        浏览次数:1        返回列表

今天小编跟大家讲解下有关CSS中的垂直和水平居中完全指南 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关CSS中的垂直和水平居中完全指南 的相关资料,希望小伙伴们看了有所帮助。

CSS Code复制内容到剪贴板 .link{ padding-top:30px; padding-bottom:30px; }

居中一直是CSS中被抱怨的典型。为什么实现起来这么辛苦 所以有人被嘲笑。我觉得问题不是没有办法做到 只是视情况而定 有很多不同方式 但是很难弄清楚应该用何种方式。因此我写了这篇文章 希望能把他变得容易点。 水平居中   内联元素(inline or inline-*)居中?

  你可以让他相对父级块级元素居中对齐

CSS Code复制内容到剪贴板 .center-children{ text-align:center; }

  块级元素(block level)居中?

  你可以通过设置margin-left和margin-right为auto让它居中(同时还要设置width 否则它就会承满整个容器 无法看出居中效果) 如。

CSS Code复制内容到剪贴板 .center-me{ margin:0<spanstyle="width:auto;height:auto;float:none;"id="8_nwp"><astyle="text-decoration:none;"mpid="8"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=f3e358418dc3f42b&k=auto&k0=auto&kdi0=0&luki=3&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=2bf4c38d4158e3f3&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F5106%2Ehtml&urlid=0"id="8_nwl"><spanstyle="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">auto</span></a></span>; }

  如果有很多块级元素呢

  如果你有很匀块级元素需要水平居中成一行 你最好使用一个不同的display类型。这是一个使用inline-block和flex的例子。

CSS Code复制内容到剪贴板 <mainclass="inline-block-center"> <div> I'manelementthatisblock-likewithmysiblingsandwe'recenteredinarow. </div> <div> I'manelementthatisblock-likewithmysiblingsandwe'recenteredinarow.Ihavemorecontentinmethanmysiblingsdo. </div> <div> I'manelementthatis<spanstyle="width:auto;height:auto;float:none;"id="6_nwp"><astyle="text-decoration:none;"mpid="6"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=f3e358418dc3f42b&k=block&k0=block&kdi0=0&luki=2&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=2bf4c38d4158e3f3&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F5106%2Ehtml&urlid=0"id="6_nwl"><spanstyle="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">block</span></a></span>-likewithmysiblingsandwe'recenteredinarow. </div> </main> <mainclass="flex-center"> <div> I'manelementthatisblock-likewithmysiblingsandwe'recenteredinarow. </div> <div> I'manelementthatisblock-likewithmysiblingsandwe'recenteredinarow.Ihavemorecontentinmethanmysiblingsdo. </div> <div> I'manelementthatisblock-likewithmysiblingsandwe'recenteredinarow. </div> </main> body{ background:#f06d06; font-size:80%; } main{ background:white; margin:20px0; padding:10px; } maindiv{ background:black; color:white; padding:15px; max-width:125px; margin:5px; } .inline-<spanstyle="width:auto;height:auto;float:none;"id="5_nwp"><astyle="text-decoration:none;"mpid="5"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=f3e358418dc3f42b&k=block&k0=block&kdi0=0&luki=2&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=2bf4c38d4158e3f3&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F5106%2Ehtml&urlid=0"id="5_nwl"><spanstyle="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">block</span></a></span>-center{ text-align:center; } .inline-block-centerdiv{ display:inline-block; text-align:left; } .flex-center{ display:flex; justify-content:center; }

 垂直居中  垂直居中在CSS中有点棘手

  内联元素(inline or inline-*)居中 像文本和链接那样的   它是一行的吗

  有时侯元素可以表现像垂直居中 只是因为它们有相等的上下padding  如果padding因为某些原因不能用 而且文本不会换行的情况下 你可以使用line-height 让其与height相等去对齐文本。

CSS Code复制内容到剪贴板 .center-text-trick{ height:100px; line-height:100px; whitewhite-space:nowrap; }

  它是多行的

  上下等padding的方式也可以让多行居中 但是如果这方法没用 你可以让这些文字的容器按table cell模式显示 然后设置文字的vertical-align属性对齐 就像talbe那样

CSS Code复制内容到剪贴板 <table> <tr> <td> I'mverticallycenteredmultiplelinesoftextinarealtablecell. </td> </tr> </table> <divclass="center-table"> <p>I'mverticallycenteredmultiplelinesoftextinaCSS-createdtable<spanstyle="width:auto;height:auto;float:none;"id="4_nwp"><astyle="text-decoration:none;"mpid="4"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=f3e358418dc3f42b&k=layout&k0=layout&kdi0=0&luki=1&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=2bf4c38d4158e3f3&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F5106%2Ehtml&urlid=0"id="4_nwl"><spanstyle="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">layout</span></a></span>.</p> </div> body{ background:#f06d06; font-size:80%; } table{ background:white; width:240px; border-collapse:separate; margin:20px; height:250px; } tabletd{ background:black; color:white; padding:20px; border:10pxsolidwhite; } .center-table{ display:table; height:250px; background:white; width:240px; margin:20px; } .center-tablep{ display:table-cell; margin:0; background:black; color:white; padding:20px; border:10pxsolidwhite; vertical-align:middle; }

  块级元素(block level)垂直居中?

  你知道元素的高度吗

  出于很多方面的原因 不知道网页布局的高度是相当普遍的。

  但是如果你的布局有一个固定高度 你就可以这样垂直居中:

CSS Code复制内容到剪贴板 .parent{ position:relative; } .child{ position:absolute; top:50%; height:100px; margin-top:-50px; }

  元素的高度是未知的

  尽管未知 但你仍有可能向上推移50%的宽度

CSS Code复制内容到剪贴板 .parent{ position:relative; } .child{ position:absolute; top:50%; transform:translateY(-50%); }

  你可以使用flexbox吗

  这并不奇怪 使用flexbox会容易非常多

CSS Code复制内容到剪贴板 <main> <div> I'ma<spanstyle="width:auto;height:auto;float:none;"id="2_nwp"><astyle="text-decoration:none;"mpid="2"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=f3e358418dc3f42b&k=block&k0=block&kdi0=0&luki=2&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=2bf4c38d4158e3f3&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F5106%2Ehtml&urlid=0"id="2_nwl"><spanstyle="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">block</span></a></span>-levelelementwithanunknownheight,centeredverticallywithinmyparent. </div> </main> body{ background:#f06d06; font-size:80%; } main{ background:white; height:300px; width:200px; padding:20px; margin:20px; display:flex; flex-direction:column; justify-content:center; resize:vertical; overflow:<spanstyle="width:auto;height:auto;float:none;"id="1_nwp"><astyle="text-decoration:none;"mpid="1"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=f3e358418dc3f42b&k=auto&k0=auto&kdi0=0&luki=3&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=2bf4c38d4158e3f3&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F5106%2Ehtml&urlid=0"id="1_nwl"><spanstyle="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">auto</span></a></span>; } maindiv{ background:black; color:white; padding:20px; resize:vertical; overflow:auto; }

 同时水平和垂直居中  元素有固定的宽度和高度

  如果元素的宽度和高度是固定的 你需要先绝对居中 然后上移和左移50%的宽度即可 这种方案有极好的跨浏览器支持。

CSS Code复制内容到剪贴板 .parent{ position:relative; } .child{ width:300px; height:100px; padding:20px; position:absolute; top:50%; left:50%; margin:-70px00-170px; }

  元素的宽度高度未知

  如果你不知道高度和宽度(可变的) 你可以使用transofrm属性在两个方向都平移负50%

CSS Code复制内容到剪贴板 .parent{ position:relative; } .child{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); }

来源:爱蒂网