浅谈CSS定宽居中的奥秘

CSS样式中水平居中和垂直居中

文本居中对齐
  • 水平居中对齐
    文本的水平居中对齐的设置其实很简单,代码如下:

.h-center{
text-align: center;
}

  • 垂直居中对齐
    文本的垂直居中对齐的设置其实很简单, 代码如下:

.v-center{
line-height:200px;
height:200px;
}
/如果存在多行的文本,添加以下代码/
.v-center{
line-height:1.5;
display: inline-block;
vertical-align:center;
}

通过text-align就可以实现水平居中vertical-align 也可以在垂直方向做到居中.

position属性和margin属性设置居中

代码:

*{
    margin:0;
        }
.center{
				position: relative;
			}
			.box{
				position: absolute;
		/*		top:0;
				left: 0;
				right: 0;
				bottom: 0;  
				margin: auto;*/
				margin: 0 auto; //水平居中
			}
absolute 和margin(负值)

利用了绝对定位,绝对定位的百分比是相对于父元素的宽高,所以我们可以根据这个原理将元素居中显示。但是要注意:绝对定位是基于子元素的左上角来说的,但是要想让子元素居中显示,就要解决这个问题。
此时可以利用margin的负值来实现效果,当外边距为负值时,元素向相反方向定位,这样我们将子元素的外边距设置为子元素的宽高的一半就可以实现了。

.center{
				position: relative;
			}
			.box{
				top: 50%;
				left: 50%;
				position: absolute;
				margin-top: -50px;
				margin-left: -50px;
			} 
absolute 和 calc

同样需要知道子元素的宽高。

.center{
			   position: relative;
		   }
		   .box{
			   position: absolute;
			   top: calc(50% - 50px ); 
				/* 减号前后没有空格,该样式不生效*/
			   left: calc(50% - 50px );
		   }
flex(常用)
.center{display: flex;
        justify-content: center; /*设置主轴的对齐方式*/
        align-items: center; /*设置交叉轴的对齐方式*/
        }
absolute 和 transform

不需要子元素宽高固定,但是依赖于translate2d的兼容性

.center{
position:relative;
}
.box{
position:absolute;
top: 50%;
left: 50%;
tranform:translate(-50%, -50%);
}

css-table

css新增的样式table 也能设置居中。

           .center{
				display:table-cell;
				text-align: center;
				vertical-align: middle;
			}
			.box{
				display:inline-block;
			}

使用float实现左右对齐

注意:如果子元素的高度大于父元素,且子元素设置了浮动,那么子元素将溢出,这时候你可以使用 “clearfix(清除浮动)” 来解决该问题。

使用padding属性设置垂直对齐

1)当对齐的行数超过单行的时候,padding:文本仍然处于容器垂直居中的位置,但是容器的 height 会随着文本行数的增加而增大;
2)line-height=height:容器的 height 不变,line-height 是文本的行间距,文本会溢出容器显示;
多行文本可使用 vertical-align: middle; 来实现元素的垂直居中,但是如果子元素的内容体积大于父元素的内容体积时,仍然会溢出,后面需要使用文字溢出处理来解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值