html块级元素的水平垂、直居中的方式

说明

  • 对于初学者来说,块级元素的剧中,也是一大难题,我学习的时候,也是一脸懵逼,每次遇到都要百度,但是写的多了也自然记住一些常用的剧中方式,但是还是很模糊,今天就来好好总结一些。

布局

  • 布局即为简单,一个div套着一个div,使inner1在wrap居中显示。
 <body>
     <div id="wrap">
         <div class="inner1"></div>
     </div>
 </body>

水平剧中

  • margin: 0 auto;

    • 子元素的宽度小于父元素,不然子元素宽度等于父元素宽度,就没意义了。
     #wrap{
      width: 500px;
      height: 500px;
      margin: 0 auto;
      background-color: red;
     }
    
    #wrap .inner1{
      width: 100px;
      height: 100px;
      margin: auto;
      background-color: blue;
     }
  • 绝对定位 + 负外边距
    • 一开始我也不理解,看图一,当子元素left: 50%;它会以父元素为参照,定位到left值为父元素宽度的一半,如图1的有图,可以看到在将子元素向左移动自身宽度的一半即可水平剧中,因此加上margin-left: 50px;
     #wrap{
      width: 500px;
      height: 500px;
      margin: 0 auto;
      position: relative;
      background-color: red;
     }
    
    #wrap .inner1{
      width: 100px;
      height: 100px;
      position: absolute;
      left: 50%;
      margin-left: -50px;
      background-color: blue;
     }

  • 绝对定位 + translateX
    • 上面的方式,有一个缺点,子元素高宽度要知道,但是兼容性好,transform为CSS3新属性,因此有兼容性问题,但是它不需要知道高度值。
     #wrap{
      width: 500px;
      height: 500px;
      margin: 0 auto;
      position: relative;
      background-color: red;
     }
    
    #wrap .inner1{
      width: 100px;
      height: 100px;
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      background-color: blue;
     }

垂直居中

  • 绝对定位 + margin: auto 0;

    • 具体什么原理,我也不是很了解。设置top、bottpm为相同的值,不一定是 0,上下外边距auto即可。
     #wrap{
      width: 500px;
      height: 500px;
      margin: 0 auto;
      position: relative;
      background-color: red;
     }
    
    #wrap .inner1{
      width: 100px;
      height: 100px;
      position: absolute;
      top: 0;
      bottom: 0;
      margin: auto 0;
      background-color: blue;
     }
  • 绝对定位 + translateY
    • 原理与上面的水平居中:绝对得 + translateX的方式一样。
     #wrap{
      width: 500px;
      height: 500px;
      margin: 0 auto;
      position: relative;
      background-color: red;
     }
    
    #wrap .inner1{
      width: 100px;
      height: 100px;
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background-color: blue;
     }

注意

  • 上面只是把水平、垂直居中分开来举例,想要实现水平垂直居中,只要把相应的结合在一起即可。另外我们还可以使用flex布局,实现水平、垂直居中,这里不再讨论了。
  • 绝对定位 + margin实现水平、垂直居中
 //另外一种也如此
 #wrap{
    width: 500px;
    height: 500px;
    margin: 0 auto;
    position: relative;
    background-color: red;
 }

  #wrap .inner1{
    width: 100px;
    height: 100px;
    position: absolute;
    //left、top设置为 50%
    top: 50%;
    left: 50%;
    //左、上边距再往回拉自身宽度的一本即可
    margin-left: -50px;
    margin-top: -50px;
    background-color: blue;
 }

原文地址:https://www.cnblogs.com/HJ412/p/10888131.html

时间: 2024-11-05 14:38:44

html块级元素的水平垂、直居中的方式的相关文章

多个块级元素在水平方向占位置,实现在窗口变大变小的同时,四个图片依然会随之而动,从而显示响应式的效果

原理:块级元素想要在页面水平和垂直方向都居中:先让元素定位(绝对定位),然后水平方向上面:left=50%,margin-left=-(1/2*width) 垂直方向页面居中:top=50%,margin-top=-(1/2*height) 代码如下: <div class="footer_top">    <div class="footer_slogen">        <span class="one">

浅谈块级元素的水平格式化细节

内边距不能为负值,而外边距可以为负(测试极限)无极限,设置为负的内边距都会默认改为0 盒子的width值并不会随着增加的padding margin而改变,它并不是可见的值,往往在内容区左右添加边距,会隐式的增加width值. 水平格式化的七个属性:margin-left.border-left.width.border-right.margin-right,这些属性的值加起来正好是包含块也就是父盒子的width,所谓元素框与父元素的width相同. width.margin-left.marg

块级元素的水平、垂直居中

HTML: <div class="parent"> <div class="child"></div> </div> 1.固定宽高 /* 利用calc */ .parent{ position: relative; height: 500px; width: 300px; margin: 0 auto; border: 1px solid pink; } .child{ width: 200px; height: 1

CSS行内元素和块级元素的居中

一.水平居中 行内元素和块级元素不同,对于行内元素,只需在父元素中设置text-align=center即可; 对于块级元素有以下几种居中方式: 1.将元素放置在table中,再将table的margin-left和margin-right设置成auto,将table居中,使在其之中的块级元素叶居中,但是这种方式不符合语义化标签的规范; 2.将块级元素转换行内元素(通过设置display:inline)后再居中.这种方式使居中元素变成行内元素而致使无法设置宽高; 3.设置父元素float:lef

透彻理解块级元素的宽度

块级元素和行内元素 CSS把处在正常文档流中的不同html元素区分为块级元素(block element)和行内元素(inline element).一般来说,所谓块级元素就是指当它们显示在浏览器中时,会在自身前后各插入一个空行,而使自身在页面中占据一个相对独立的块状区域的元素.因此,HTML文档中连续的块级元素的典型显示方式就是"堆叠".块级元素的例子有h1到h6.div.p等.而行内元素则是指以自身所包含的内容决定在页面中占据空间的大小,并且可以与其他行内元素共处一行的元素.行内元

Flex实现水平竖直居中布局

传统的布局使用的是“盒模型”加上display.position和float属性,但是对于一些特殊的布局实现例如居中却是比较麻烦,所以,为了解决一些复杂的布局问题,一种更为灵活的布局方式出现了,那就是Flex布局. Flex 即为Flexible Box,指的是“弹性布局”,它可以为盒模型提供更加灵活的布局方式,例如,用flex可以优雅地实现水平竖直居中的布局. 例如下面这个例子,我们想做的是让child元素在parent里面水平竖直居中: <!DOCTYPE html> <html l

让div等块级元素水平以及垂直居中的解决办法

一.背景 我们在设计页面的时候,经常要把div等块级元素居中显示,而且是相对页面窗口水平和垂直方向居中显示,如让登录窗口居中显示.我们传统解决的办法是用纯CSS来让div等块级元素居中.在本文中,我将给大家讲述如何用CSS和jQuery两种方法让div等块级元素水平和垂直居中. 二.解决办法 1.CSS让div等块级元素水平居中 原理:让一个div等块级元素水平居中,直接用CSS就可以做到.只要设置了div等块级元素的宽度,然后使用margin设置边距0 auto,CSS自动算出左右边距,使得d

行内元素和块级元素水平及垂直居中

首先,介绍一下行内元素和块级元素,这个很重要,因为有的属性只能用于块元素,而有的正好相反,在一定的情况下,它们也可以相互转换,比如用display来进行设置. 行内元素: ①不占据一整行,随内容而定,有以下特点: ②不可以设置宽高,也不可以设置行高,其宽度随着内容增加,高度随字体大小而改变. ③内联元素可以设置外边界,但是外边界不对上下起作用,只能对左右起作用. ④也可以设置内边界,但是内边界在ie6中不对上下起作用,只能对左右起作用. 常用的内联元素有: a - 锚点,b - 粗体(不推荐),

块级元素水平和垂直方向居中的方式

块级元素水平和垂直方向居中的方法一共三种 1.先设置块级元素的宽高,然后利用定位和外边距将元素在水平和垂直方向上居中 示例: <style> .father{ width: 100%; height: 500px; position: relative; } .son{ width: 100px; height: 100px; position: absolute; top: 50%; left: 50%; margin-left: -50px; margin-top: -50px; back