HTML CSS 控制浮动元素居中

基本的html结构:
<div>
<!--
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
-->
<p>p1</p>
<p>p2</p>
<p>p3</p>
<p>p4</p>
<p>p5</p>
</div>

欲实现效果:
javascript 浮动元素居中 - 独行冰海 - 独行冰海
 浮动元素居中的出现条件:
*1.首先是内部元素需要设置宽高
*2.元素需要同行显示
*3.元素需要居中
分析:如果想对一个元素设置宽高,那么元素类型就不能够是行内元素,只能够是块状元素)
*如果内部开始为块状元素时,如p元素,只能使用float使其同行显示(float又会改变显示模式),但如果进行居中处理,则会发现margin:0 auto;属性失效
*如果内部初始为行内元素,因为不能设置宽高,势必会将其转化为块状元素,即display:block;然后float:left,此时发现父级元素的text-align:center居中属性也失效了

具体看一个实例
首先把里面的元素设置为p标签,对p标签设置100宽高,为了方便查看加上了边框和背景色
此时,margin这个属性是生效的,所有的块状元素均能够居中显示
javascript 浮动元素居中 - 独行冰海 - 独行冰海
 效果如下:
javascript 浮动元素居中 - 独行冰海 - 独行冰海
 这时,为了让所有的p元素位于一行,使用float:left
javascript 浮动元素居中 - 独行冰海 - 独行冰海
 显示效果如下,发现:margin控制的居中属性失效
javascript 浮动元素居中 - 独行冰海 - 独行冰海
 说解决办法之前我们看一下如果内部是行内元素的基本效果
此处使用span标签进行试验
也是设置宽高均为100,为了方便查看加上了边框和背景色,此时父元素有一个属性是:text-align:center;
javascript 浮动元素居中 - 独行冰海 - 独行冰海
 显示效果如下,所有的span位于同一行,也能够居中, 但是由于是行内元素,宽高不生效
javascript 浮动元素居中 - 独行冰海 - 独行冰海
 
javascript 浮动元素居中 - 独行冰海 - 独行冰海
 此时添加上了display:block;将所有的span转化为了块状元素的显示效果,发现宽高能够正常显示了,但是却不位于同一行了,而且也不能够居中
javascript 浮动元素居中 - 独行冰海 - 独行冰海
此时如果加入float:left和margin:0 auto; 发现显示效果和使用p元素一样,出现了居中属性失效
javascript 浮动元素居中 - 独行冰海 - 独行冰海
 接下来看解决办法
设置外层的div的text-align:center;
javascript 浮动元素居中 - 独行冰海 - 独行冰海
 然后设置span标签的display为inline-block 去掉之前定义的margin和float
javascript 浮动元素居中 - 独行冰海 - 独行冰海
 效果如图
javascript 浮动元素居中 - 独行冰海 - 独行冰海
   然后设置p标签的display为inline-block 去掉之前定义的margin
javascript 浮动元素居中 - 独行冰海 - 独行冰海
  效果如本文第一张图片效果

一般通常会在内部这几个标签外部套一个div或其他标签,更好的控制

使用到的display:inline-block这个是什么意思呢?
它指的是将本身设置成为block显示类型,将自己的父元素设置为inline显示类型。再在外层的大框上加上text-align:center即可以实现元素的居中(注意此时内层的float去掉)

除此之外,我们还可以使用如下代码:
  <style type="text/css">
.divs{background:#ccc;width:600px;height:300px;margin:50px auto 0;}
.divs div{margin:0 auto;background:#000;width:400px;text-align:center;}
p{float:left;height:100px;width:98px;background:#fff;border:1px solid red;margin:0 auto;}
  </style>
 <body>
<div class="divs">
<div>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<p>p4</p>
</div>
</div>
 </body>
我们发现也能够实现居中效果,但是其可扩展性较差,如果删除一个p或者添加一个p,则需要对.divs div这个样式里的width进行修改
转自: http://blog.163.com/hongshaoguoguo@126/blog/static/1804698120125625634853/
=======================================================================
方法一:
  1. <!DOCTYPE html>  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <title>页面元素的水平居中</title>  
  6. <style type="text/css">  
  7.     * { margin:0; padding:0; list-style:none; font-size:14px; font-family:Tahoma, Geneva, sans-serif; }  
  8.     .clearfix:after { content:""; height:0; visibility:hidden; display:block; clear:both; }  
  9.     .clearfix { zoom:1; }  
  10.     a{ text-decoration:none;}  
  11.     h1{ text-align:center; padding:10px; font-size:20px; margin:30px 0;}  
  12.     /** 包装器,relative */  
  13.     .wrap { margin:20px auto; padding:10px 0; background:orange; overflow:hidden; position:relative; }  
  14.     /** relative left 50% */  
  15.     .page { float:left; position:relative; left:50%; }  
  16.     /** relative right 50% */  
  17.     .page li { float:left; position:relative; right:50%; overflow:hidden; margin:0 5px; }  
  18.   
  19. </style>  
  20. </head>  
  21. <body>  
  22. <h1>页面元素的水平居中</h1>  
  23. <h2>浮动方式:</h2>  
  24. <div class="wrap clearfix">  
  25.     <ul class="page">  
  26.         <li> <a href="#">上一页</a> </li>  
  27.         <li> <a href="#">1</a> </li>  
  28.         <li> <a href="#">2</a> </li>  
  29.         <li> <a href="#">3</a> </li>  
  30.         <li> <a href="#">4</a> </li>  
  31.         <li> <a href="#">2</a> </li>  
  32.         <li> <a href="#">3</a> </li>  
  33.         <li> <a href="#">2</a> </li>  
  34.         <li> <a href="#">3</a> </li>  
  35.         <li> <a href="#">4</a> </li>  
  36.         <li> <a href="#">5</a> </li>  
  37.         <li> <a href="#">6</a> </li>  
  38.         <li> <a href="#">下一页</a> </li>  
  39.     </ul>  
  40. </div>  
  41.   
  42. </body>  
  43. </html>  

 这里主要用到position:relative配合left:50%的技巧,兼容各浏览器,需要注意的是IE7下需要设置overflow:hidden;来解决无法设置子元素宽度的BUG。

 

方法二:

Html代码   收藏代码
  1. <!DOCTYPE html>  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <title>页面元素的水平居中</title>  
  6. <style type="text/css">  
  7.     * { margin:0; padding:0; list-style:none; font-size:14px; }  
  8.     .clearfix:after { content:""; height:0; visibility:hidden; display:block; clear:both; }  
  9.     .clearfix { zoom:1; }  
  10.     a{ text-decoration:none;}  
  11.     h1{ text-align:center; padding:10px; font-size:20px; margin:30px 0;}  
  12.     .wrap { margin:20px auto; padding:10px 0; background:orange; overflow:hidden; position:relative; }  
  13.     .inwrap{ float:left; position:relative; left:50%;}  
  14.     .page { float:left; position:relative; left:-50%; }  
  15.     .page li { float:left;margin:0 5px;  }  
  16.     .page li a { display:block; padding:2px 9px; background:white; border:1px solid red; float:left;}  
  17. </style>  
  18. </head>  
  19. <body>  
  20. <h1>页面元素的水平居中</h1>  
  21. <h2>浮动方式:</h2>  
  22. <div class="wrap clearfix">  
  23.     <div class="inwrap">  
  24.         <ul class="page">  
  25.             <li> <a href="#">上一页</a> </li>  
  26.             <li> <a href="#">1</a> </li>  
  27.             <li> <a href="#">2</a> </li>  
  28.             <li> <a href="#">3</a> </li>  
  29.             <li> <a href="#">4</a> </li>  
  30.             <li> <a href="#">2</a> </li>  
  31.             <li> <a href="#">3</a> </li>  
  32.             <li> <a href="#">2</a> </li>  
  33.             <li> <a href="#">3</a> </li>  
  34.             <li> <a href="#">4</a> </li>  
  35.             <li> <a href="#">5</a> </li>  
  36.             <li> <a href="#">6</a> </li>  
  37.             <li> <a href="#">下一页</a> </li>  
  38.         </ul>  
  39.     </div>  
  40. </div>  
  41. </body>  
  42. </html>  

 这里也可以多套一层的方式设置left:-50%,更合理,也可以避免一些不必要的IE BUG。举一反三,这种float元素居中的方式其实可以延展应用到很多需要浮动元素又居中的情况。

==============================================================================

设置容器的浮动方式为相对定位

然后确定容器的宽高 比如宽500 高 300 的层

然后设置层的外边距

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <!DOCTYPE HTML>  
  2. <html>  
  3. <head>  
  4.     <style type="text/css">   
  5.         div{  
  6.             width: 500px;  
  7.             height: 300px;  
  8.             margin: -150px 0 0 -250px;  
  9.             position: absolute;  
  10.             left: 50%;  
  11.             top: 50%;  
  12.             background-color: yellow;   
  13.         }  
  14.     </style>   
  15. </head>   
  16. <body>  
  17.     <div>  
  18.         元素居中  
  19.     </div>  
  20. </body>  
  21. </html>  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 实现水平居中有多种方法,其中一种是使用以下 CSS: ```css .element { width: 200px; /* 设置宽度 */ margin: 0 auto; /* 设置左右外边距为 auto */ } ``` 如果想要使用浮动实现水平居中,可以使用以下 CSS: ```css .element { width: 200px; /* 设置宽度 */ float: left; /* 设置浮动 */ margin: 0 auto; /* 设置左右外边距为 auto */ } ``` 这样就可以使元素在父容器中水平居中,并且使用浮动实现。 ### 回答2: 在CSS3中,要实现X轴居中浮动,可以使用以下步骤: 1. 首先,将要居中元素设置为浮动,可以使用`float: left;`或`float: right;`属性。 2. 接下来,为包含该元素的父元素添加以下样式: ```css .parent { display: flex; /* 将父元素设为弹性容器 */ justify-content: center; /* 水平居中 */ } ``` 3. 最后,为了确保浮动元素居中容器内居中,可以给浮动元素添加一个margin,确保浮动元素居中容器内居中。 例如: ```css .child { float: left; margin: 0 auto; /* 在父元素中水平居中浮动元素 */ } ``` 通过上述步骤,可以实现将浮动元素在X轴方向上居中显示。请注意,这些方法都是使用CSS3的新属性和特性来实现的,因此在使用之前,需要确保浏览器兼容这些特性,或使用兼容性前缀。 ### 回答3: 在CSS3中,要实现X轴居中浮动,可以使用以下方法。 首先,我们需要将要居中元素设置为浮动。可以使用`float: left;`或`float: right;`来实现。 然后,我们通过使用transform属性和translateX函数来移动元素。具体来说,我们可以使用`transform: translateX(-50%);`来将元素向左移动自身宽度的一半。 接下来,我们将元素的左侧边距设置为50%。可以使用`margin-left: 50%;`来实现。这样,元素就会以其左侧边距的一半作为偏移量,向左移动。 最后,由于元素的位置已经居中,但是其内容的起始位置仍然是默认的左对齐。因此,我们可以使用`text-align: center;`来设置元素内容的对齐方式为居中。 下面是一个示例代码: ```html <style> .centered { float: left; transform: translateX(-50%); margin-left: 50%; text-align: center; } </style> <div class="centered"> 这是一个居中浮动元素。 </div> ``` 通过以上CSS样式,我们可以将元素在X轴居中浮动

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值