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>

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

具体看一个实例
首先把里面的元素设置为p标签,对p标签设置100宽高,为了方便查看加上了边框和背景色
此时,margin这个属性是生效的,所有的块状元素均能够居中显示

p{
    margin:0 auto;
    height: 100px;
    width: 100px;
    background: #fff;
    border:1px solid red;}

效果如下:
这里写图片描述
这时,为了让所有的p元素位于一行,使用float:left

p{
    margin: 0 auto;
    float: left;
    height: 100px;
    width: 100px;
    background: #fff;
    border: 1px solid red;}

显示效果如下,发现:margin控制的居中属性失效
这里写图片描述
说解决办法之前我们看一下如果内部是行内元素的基本效果
此处使用span标签进行试验
也是设置宽高均为100,为了方便查看加上了边框和背景色,此时父元素有一个属性是:text-align:center;

span{
    height: 100px;
    width: 100px;
    background: #fff;
    border: 1px solid red;}

显示效果如下,所有的span位于同一行,也能够居中,但是由于是行内元素,宽高不生效
这里写图片描述

span{
    display:block;
    height:100px;
    width:100px;
    background:#fff;
    border:1px solid red;
}

此时添加上了display:block;将所有的span转化为了块状元素的显示效果,发现宽高能够正常显示了,但是却不位于同一行了,而且也不能够居中
这里写图片描述
此时如果加入float:left和margin:0 auto; 发现显示效果和使用p元素一样,出现了居中属性失效
这里写图片描述
接下来看解决办法
设置外层的div的text-align:center;

div{
    background:#ccc;
    width:600px;
    height:300px;
    margin:50px auto;
    text-align:center;}

然后设置span标签的display为inline-block 去掉之前定义的margin和float

span{
    display:inline-block;
    height:100px;
    width:100px;
    background: #fff;
    border: 1px solid red;
    }

效果如图
这里写图片描述
然后设置p标签的display为inline-block 去掉之前定义的margin

p{
    display:inline-block;
    height:100px;
    width:100px;
    background:#fff;
    border: 1px solid red;
}

效果如本文第一张图片效果

一般通常会在内部这几个标签外部套一个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: 实现水平居中有多种方法,其中一种是使用以下 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轴居中浮动
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值