总结一下各种居中(内联元素、块级元素、浮动元素、绝对定位元素)*(水平、垂直)

  在平时写网页样式的时候,元素居中应该是最常见不过的了,在这里我们把常见居中的情况简单总结一下。本文讨论以下几种情况:内联元素、块级元素、浮动元素、绝对定位元素。居中的情况分两种情况:水平居中和垂直居中。刚接触到居中,我想到的是两个方向,一是使元素内部的所有元素相对于此元素居中,另一个是元素在其他元素中居中。以下的居中我们讨论的都是元素在其他元素中居中。

  (一)内联元素

  水平居中:只需在其父元素的样式中加上text-align: center;即可。

  垂直居中:

  1. line-height

  2. padding

  3. line-height 和 padding结合

  三种方法都是在父元素上添加

<div class="aha">
    <span>从明天起</span>
</div>

<style>

  .aha{
    border: 1px solid red;
    text-align: center;
    line-height: 100px;
    /* padding: 30px 0; */
  }

</style>

  效果图:

  (二)块级元素

  A. 水平居中:修改margin,分两种情况讨论,一种是宽度固定,一种是宽度不固定。

   a)宽度固定时,margin-left: auto; margin-right: auto;

   b)宽度不固定时,margin-left: 20px; margin-right: 20px;

<body>
  <div class="parent">
    <div class="child">haha</div>
  </div>
</body>

<style>
    .parent{
      border: 1px solid red;
    }
    .child{
      width: 100px;
      border: 1px solid green;
      margin-left: auto;
      margin-right: auto;
    }
 </style>

  效果图:

  

<body>
  <div class="parent">
    <div class="child">haha</div>
  </div>
</body>

<style>
    .parent{
      border: 1px solid red;
    }
    .child{
      border: 1px solid green;
      margin-left: 100px;
      margin-right: 100px;
    }
</style>

  效果图:

  

  B. 垂直居中:设置父元素的padding: 100px 0; 不管高度是否确定。

<body>
  <div class="parent">
    <div class="child">haha</div>
  </div>
</body>

<style>
    .parent{
      border: 1px solid red;
      padding: 150px 0;
    }
    .child{
      /* height: 100px; */
      border: 1px solid green;
    }
</style>

  效果图:

  

  垂直居中也分两种情况一是当父元素高度固定时,有两种方法,第一种可以考虑position: absolute;缺点是子元素的宽高得固定,且父元素的高度不能自适应,具体代码如下:

<body>
  <div class="parent">
    <div class="child">haha</div>
  </div>
</body>

<style>
    .parent{
      border: 1px solid red;
      box-sizing: border-box;
      position: relative;
      height: 200px;  // 如果设置全屏height: 100vh;
    }
    .child{
      border: 1px solid green;
      position: absolute;
      margin: auto;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      width: 100px;
      height:100px;
    }
</style>

  效果图:

  第二种是IE的话使用table标签,或者给div添加table的相关属性(具体方法见文末),Chrome和移动端可以使用flex布局。

<body>
  <div class="parent">
    <div class="child">haha</div>
  </div>
</body>

<style>
    .parent{
      border: 1px solid red;
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100px;
    }
    .child{
      border: 1px solid green;
    }
</style>

  效果图:

  

  

  垂直居中还有一种情况是父元素高度不固定时,父元素用flex布局;

display: flex;
justify-content: center;
align-items: center;

  (三)浮动元素,看到这个分类是不是想吐槽,没错,我也想,本来都让人家靠左站或者靠右站了,还要让它居中,真是闲的。

  如果碰到这种情况我们可以试着把浮动元素包裹在其他类型的元素里面,例如inline-block元素里,再把这个inline-block元素居中。inline-block元素有一个坑,就是包起来之后下面会有一个缝隙,加上这样一句话,vertical-align: top; 方方老师说别问他为什么,那你也别问我为什么,我也不知道。。。inline-block元素居中,在其父元素上添加text-align: center;

  (四)绝对定位元素:分两种情况,宽高固定和宽高不固定。

  首先宽高固定:

<body>
  <div class="parent">
    <div class="child">haha</div>
  </div>
</body>

<style>
    .parent{
      border: 1px solid red;
      position: relative;
      height: 200px;
    }
    .child{
      border: 1px solid green;
      width: 100px;
      height: 100px;
      position: absolute;
      top: 50%;
      left: 50%;
      margin-left: -50px;
      margin-top: -50px;
    }
</style>

  效果图:

  宽高固定还有一种方法,参考上面的块级元素垂直居中的父元素高度固定的第一种方法。

  然后是宽高不固定,把上一种情况的margin-left和margin-top换成transform: translate(-50%, -50%)。

以上(三)、(四)种是脱离文档流的情况,所有脱离文档流的元素都变成了块级元素。

table标签是默认的绝对居中,IE也支持兼容性更好,上面提到的用div添加table的相关属性模仿table标签,class值为table的div设置属性display: table; class值为tr的div设置属性display: table-row; class值为td的div设置属性display: table-cell; vertical-align: middle;

  

原文地址:https://www.cnblogs.com/CCCLARITY/p/8271267.html

时间: 2024-08-28 20:55:36

总结一下各种居中(内联元素、块级元素、浮动元素、绝对定位元素)*(水平、垂直)的相关文章

CSS3与页面布局学习总结(二)——Box Model、边距折叠、内联与块标签、CSSReset

一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border).内边距(Padding)和内容(Content),其实盒子模型有两种,分别是 ie 盒子模型和标准 w3c 盒子模型,加上了doctype声明,让所有浏览器都会采用标准 w3c 盒子模型去解释你的盒子.当设置一个元素的样式如下: <!DOCTYPE html> <html> <

css 内联与块

内联元素可以理解为不能直接设置宽度和高度元素,比如span,你为他设置宽度和高度没有效果,除非你把它设置成块级元素. 如下面的代码把display:block;属性值去掉的话,宽度和高度都不会起作用了. 1 <span style="width:100px;height:100px;display:block;"></span> margin可以控制内联和块级元素的间距,而不光是内联元素. 主要注意他们之间的转换问题,如块级元素加float属性会变为内联元素.

CSS3与页面布局学习总结——Box Model、边距折叠、内联与块标签、CSSReset

目录 一.盒子模型(Box Model) 1.1.宽度测试 1.2.溢出测试 1.3.box-sizing属性 1.4.利用CSS画图 二.边距折叠 2.1.概要 2.2.垂直方向外边距合并计算 三.内联与块级标签 3.1.行内标签与块标签区别 3.2.隐藏 3.3.行内块标签 3.4.菜单示例 四.重置浏览器默认样式 4.1.CSSReset 4.1.1.MT css reset 4.1.2.PC css reset 4.1.3.PPTV css reset 4.1.4 YUI css res

CSS3(二)Box Model、边距折叠、内联与块标签、CSSReset

目录 一.盒子模型(Box Model) 1.1.宽度测试 1.2.溢出测试 1.3.box-sizing属性 1.4.利用CSS画图 二.边距折叠 2.1.概要 2.2.垂直方向外边距合并计算 三.内联与块级标签 3.1.行内标签与块标签区别 3.2.隐藏 3.3.行内块标签 3.4.菜单示例 四.重置浏览器默认样式 4.1.CSSReset 4.1.1.MT css reset 4.1.2.PC css reset 4.1.3.PPTV css reset 4.1.4 YUI css res

HTML 基础 内联与块元素

什么是块级元素和内联元素 block(块)元素的特点: ①总是在新行上开始: ②高度,行高以及外边距和内边距都可控制: ③宽度100%,除非设定一个宽度. ④它可以填写内联元素和其他块元素 inline元素的特点: ①和其他元素都在一行上: ②高,宽度不可改变: ③宽度就是它的文字或图片的宽度,不可改变 ④内联元素只能容纳文本或者其他内联元素 其中css的display属性能修改块元素与内联元素 ◎ blockquote - 块引用 ◎ center - 举中对齐块 ◎ ul - 非排序列表(无

css基础 display:block 行内标签转为块级标签

礼悟:    公恒学思合行悟,尊师重道存感恩.叶见寻根三返一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼养身心,诚劝且行且珍惜.              ide:visual studio 2017             browser:Chrome                     os:win7 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8&qu

行内标签 和 块级标签

块级标签 div    ………………块级标签 h1~h6   ………………标题 ul (内含多个li) ol (内含多个li) dl (内含一个dt    多个dd)………………列表 table(内含tr  th  td)……………………表格 p…………………………………………段落 br…………………………………………换行 form……………………………………表单 行级标签 span a……………………超链接 img……………………图片 var……………………变量,显示斜体 strong…………

行内标签与块级标签的转换

display : inline-block  块级标签转换为行内标签 display : block  行内标签转换为块级标签 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style="dis

吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:块级按钮(拉伸至父元素100%的宽度)

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"

css基础 行内元素 块级元素

1.行内元素(内联元素 inlineElement) 特点:不占据一行,无法设置宽高及行高,其宽度随着内容增加,高度随字体大小而改变,margin只对左右起作用,上下无效. 常见有: a - 锚点,b - 粗体(不推荐),br - 换行,em - 强调,font - 字体设定(不推荐),i - 斜体,img - 图片,input - 输入框,label - 表格标签, select - 项目选择,small - 小字体文本,span - 常用内联容器,定义文本内区块,strike - 中划线,s