视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
HTML元素居中定位与尺寸拉伸_html/css
2020-11-27 16:36:52 责编:小采
文档

块级元素就是那些自为一行的元素,有高度宽度。行内元素没有高度,行内块级元素有高度,不换行。

好了,下面用几个刚刚试验的例子把这部分知识小记一下,为日后深入学习打基础。

1.水平居中

  • 非块级元素水平居中:
  • 设置父元素的text-align:center就可以了。

  • 块级元素水平居中:
  • position不是absolute也不是fixed时(也就是并未脱离文档流),margin-left=margin-right=auto,块级元素width不是aoto,就可实现水平居中。

     1 2  3  4  5 18 19 20 header21 22 container23 24 
    25

    2.垂直居中

  • 文本垂直居中
  • 如果只有 一行本文,设置容器的line-height等于容器height。

     #container{ border: 1px solid blue; margin:0 auto; width: 300px; height: 300px; text-align: center; line-height: 300px; } 

    如果是 多行文本至少要再加一个容器box把文本包起来,可以设置box的margin或者其父容器的margin。另一个方法就是使用vertical-align属性,但这个属性只对表格元素有效,所以需要设置box父元素display:table,设置box的display:table-cell。

  • 块级元素垂直居中
  • 要借助position和left、top几个属性。top表示向下平移,其他同理。position属性有四个值:

    static: 静态定位,默认值,在文档流中不移动,此时top等属性无效。

    relative:相对定位,相对自己原本位置定位,不脱离文档流。

    absolute:绝对定位,相对非static父元素定位,脱离文档流(原来位置被别人占了)。

    fixed:固定定位,相对浏览器窗口定位,也脱离文档流,总用做购物车广告等。

    如果要垂直居中的元素设置成绝对定位,top和left在按容器和居中元素大小设置一下就可以了, 但前提是父元素是非static的。就像下面这样。

          header content 

    换几种情况考虑,如果居中元素是相对定位的,就不要求父元素是非static的了。这固然好,但是不方便计算偏移量,偏移量是相对自己原位置算的,如果居中元素上方有兄弟节点也需要考虑进去,麻烦的是如果兄弟节点大小不固定,恐怕只能用脚本动态去算了。如果居中元素是固定定位的呢?考虑了一下,使用固定定位做垂直居中没有什么特殊的优势。

    3.拉伸

    对于行内元素、行内块级元素、浮动元素、表格及绝对定位元的素:

  • left=right=auto,width=auto时是 横向收缩的
  • top=bottom=auto,height=auto时,是 纵向收缩的
  • 对于块级元素和绝对定位的元素:

  • left=right!=auto,width=auto时是 横向拉伸的
  •        我是横向拉伸的div1 

    auto通常是默认值,我们看到的非块级元素横向纵向多数是收缩的,如图中label。而块级元素div默认是横向拉伸纵向收缩的,如图中div1。浏览器通常会给元素加默认样式,所以元素并没有完全与浏览器窗口贴上,如果添加*{margin:0;padding:0;}就显示正常了。

    对于绝对定位元素:

  • top=bottom=!auto,height=auto时,是 纵向拉伸的。
  •       我是纵向拉伸的div2 

    auto与100%的尺寸差别

    auto意味着元素尺寸是自动调整的,width/height:100%会将元素尺寸拉伸到父元素大小,其外边距、边框等可能超过父元素。但table不会出现这种情况,因为表格的width/height规定的是table-cell的外部尺寸。

    W3C的盒子模型中width/height规定的是content的尺寸,IE的盒子模型width/height规定的是含border的尺寸。

    下载本文
    显示全文
    专题