设置控件相对于父控件居中

css盒子模型

盒子模型

一、display:block

  • block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。
  • block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。
  • block元素可以设置margin和padding属性。

二、display:inline

  • inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。
  • inline元素设置width,height属性无效。
  • inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。

三、display:inline-block

  • 简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性。

行内元素(display:inline)

只需要把行内元素包裹在一个属性display为block的父层元素中,并且把父层元素添加如下属性即可:
    text-align: center
适用元素:文字,链接,及其其它inline或者inline-*类型元素
(inline-block,inline-table,inline-flex)

块状元素(display:block)

#块级元素一个占一行
设置
.center {
  margin-left :auto;
  margin-right :auto;
}
需要居中的块级元素必须有固定的宽度,否则占据整个宽度

多个块级元素居中

#设置为inline-block
.center{
  display:inline-block;
}
#设置父节点: text-align: center;
body{
  text-align:center;
}

<div class="center">水平居中的块状元素</div>
<div class="center">水平居中的块状元素</div>

其他方法

使用flexbox布局:
  只需要把待处理的块状元素的父元素添加属性display:flex及justify-content:center即可

单行行内元素垂直居中

#将原来的inline元素设置为
height = line-height = 父元素的高度
a {
  height :200px;
  line-height :200px;
}

多行的行内元素

#设置父元素属性:
display:table-cell;
vertical-align: center;

已知高度的块状元素

.item {
  top: 50%;
  margin-top:-50px; //设置为高度的一半
  position:absolute
  padding: 0;
}

未知高度的块级元素

.item{
  top: 50%;
  position: absolute;
  transform: translateY(-50%); /* 这里我们使用css3的transform来达到类似效果 */
}

水平垂直居中

.item{
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -75px; //控件高的一半
  margin-left: -75px;
}

未知宽度和高度的控件水平垂直居中

.item{
 position: absolute;
 top: 50%;
 left: 50%;
 transform: translate(-50%, -50%);
}

使用flex布局实现水平垂直居中

.item{
  background: #222;
  color: #FFF;
  width: 100px;
  height: 100px;
}


.parent{
  display: flex;
  justify-content:center;
  align-items: center;
  
  /* 注意这里需要设置高度来查看垂直居中效果 */
  background: #AAA;
  height: 300px;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,686评论 1 92
  • •前端面试题汇总 一、HTML和CSS 21 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? ...
    Simon_s阅读 6,582评论 0 8
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 8,892评论 0 6
  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 10,122评论 0 26
  • 一 外部式css样式 (也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css...
    KunMitnic阅读 4,580评论 0 1