千锋教育-做有情怀、有良心、有品质的职业教育机构

领取全套视频

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术要点  >  正文
分享到:

如何使用CSS居中?Div-10种不同的方式

时间:2022-09-20 11:19     来源:千锋教育 作者:syq

  作为一名web开发人员,有时将 div 居中感觉就像是地球上最艰难的工作之一。在本文中,您将学习 10 种不同的居中方法。我们将探讨如何使用 CSS 位置属性、CSS 弹性框和 CSS 网格将 div 居中。读完这篇文章后,我相信你会开始像专业人士一样居中。

如何使用CSS居中

  如何居中 aDiv

  在本教程中,我将对下面讨论的所有 10 种方法使用相同的 HTML。HTML 中只包含一个父项和一个子项。divdiv

  本文的主要目的是围绕其父级将内部中心化。我只会更改CSS文件,但您将能够看到所有10种不同的方法都生效。div

  主 HTML 文件如下所示:

11

  仅使用基本样式,如以下行所示:

12

  我们将得到这样的东西:

13

  基本的 HTML 和 CSS 样式为我们提供了什么。

  我们只是做一个父母,并给它一个和一个,和一个。div width height 400px color #f55353

  同样,我们在里面创造了一个孩子,给它一个和一个,给它一个。div width height 100px color #feb139

  本文的最终目标是进行此转换:

14

  如何使用 CSS 属性将 Div 居中position

  1. 如何使用位置:相对、绝对和顶部、左侧偏移值

15

  CSS 中的位置属性设置元素在页面上的定位方式。位置属性的默认值为 。位置属性采用的其他值为 、 和 。static relative absolute fixed sticky

  现在,当我们给一个DOM元素一个,它相对于整个页面变得绝对。如果我们想将 围绕整个页面居中,这将非常有用。position: absolutediv

  另一方面,将父元素设置为 ,使子元素(带有 )相对于父元素而不是整个页面是绝对的。position: relativeposition: absolute

  在上面的例子中,我们就是这样做的。我们给父元素一个,给子元素一个。position: relative position: absolute

  除了位置属性,我们还可以指定其他四个属性,即 、 ,然后确定元素的最终位置/位置。top right bottom left

  和 指定元素的垂直定位,其中 as 并指定水平定位。top bottom left right

  2.如何使用位置:相对和绝对,顶部,左侧,右侧和底部偏移值和边距:自动

16

  继续我们从上面第1点开始的仓位知识,我们在这里使用CSS中的属性。 允许浏览器为子元素选择合适的边距。marginmargin: auto

  在大多数情况下,它允许子元素采用其指定的宽度,并且浏览器在左右边距对或上边距和下边距对之间或两者之间平均分配剩余空间。

  如果我们只提到 和 ,它将子元素垂直居中。top: 0bottom: 0margin: auto

  类似地,如果我们只提到 和 ,那么它将使子级水平居中。left: 0right: 0margin: auto

  如果我们提到上面代码块中所示的所有属性,那么我们就会得到一个水平和垂直方向的完美居中的div。

  如何使用 CSS 弹性框将 Div 居中

  3. 如何使用弹性框、对齐内容和对齐项目

  上述两种方法基于更经典的页面元素对齐方法。现代方法利用 Flexbox(用于单向布局建模)和网格布局(用于更复杂的二维布局建模)属性。

  让我们看看弹性框方法:

  Flexbox不仅仅是一个单一的属性,而是一个由一组属性组成的模块。其中一些属性用于容器(即父容器),而另一些则用于其中的子元素。

  下图显示了用于与 Flexbox 相关的父元素和子元素的属性列表。

17

  现在无法涵盖本文中的所有属性。相反,让我们来看看我们在本文中使用的一些属性。

  如上所述,Flexbox 模型中有两个不同的实体,即父容器和子元素。

  该属性将容器定义为弹性容器。 是另一个父容器属性,可以采用四个值(默认值)、和 。display: flex flex-direction row row-reverse column column-reverse

  使用Flexbox时,我们需要考虑两个不同的轴,即主轴和十字轴。

  对于 is 或 的情况,水平轴是主轴,垂直轴是交叉轴。flex-direction row row-reverse

  同样,当 是 或 时,垂直轴是主轴,水平轴是交叉轴。请参阅下图,以获得视觉清晰度:flex-direction column column-reverse

18

19

  父容器的属性定义其子容器沿主轴的对齐方式。因此,设置其所有子元素相对于主轴的中心对齐。justify-content justify-content: center

  同样,父容器的属性定义其子容器沿交叉轴的对齐方式。因此,设置其所有子元素相对于十字轴的中心对齐。align-items align-items: center

  因此,下面的代码块将在垂直和水平方向上将我们的子元素完全对齐在父元素的中心。

  在此方法中,我们不需要为子元素显式指定任何内容。,然后处理父组件中的所有内容。display: flex justify-contentalign-items

20

  4. 如何使用弹性框、对齐内容和对齐自我

  此方法只是上述方法的替代方法,并且与它非常相似。

  但是,为了代替使用属性(在父容器属性中),它设置所有子元素相对于交叉轴的对齐方式,我们使用(在子元素中)来设置各个柔性项目在交叉轴上的对齐方式。align-items align-self

21

  5. 如何使用弹性框和保证金:自动

  弹性盒为我们提供了非常强大的对齐和空间分配功能。同样如上所述,让浏览器为子元素选择合适的边距。margin: auto

  在大多数情况下,它允许子元素采用其指定的宽度,并且浏览器在左边距对或上边距和下边距对之间或两者之间平均分配剩余空间。

  这意味着将父容器设置为 并为子容器提供 a,浏览器可以沿垂直和水平方向均匀分布剩余空间。flexmargin: auto

22

  如何使用 CSS 网格将 Div 居中

  6. 如何使用网格、对齐内容和对齐项

  CSS 网格或仅网格用于二维布局建模,而 Flexbox 则用于一维建模。

  与 Flexbox 类似,我们有网格容器或父容器以及网格项或子项的概念。

  下图列出了可用于父项和子项的所有属性。由于 CSS Grid 本身就是一个巨大的主题,因此本文的讨论范围不在于每个属性。因此,让我们讨论一下我们在本文中使用的属性。

23

  display: grid启动元素以成为网格容器。

  justify-items并分别沿内联(行)轴和块(列)轴对齐网格内的项目。align-items

  另一方面,如果网格的总大小小于网格容器(如果所有网格项的大小都使用非柔性单位(如 px)进行调整,则可能会发生这种情况),在这种情况下,我们可以使用 和 来控制网格容器中网格的对齐方式。justify-contentalign-content

  justify-content并分别沿内联(行)轴和块(列)轴对齐网格。align-content

  至于我们的情况,只有一个网格单元格,里面只有一个子元素,所以我们可以使用或以及或互换并获得相同的结果。justify-contentjustify-itemsalign-contentalign-items

24

  7. 如何使用网格和放置项

  可用于在同一声明中同时设置 和 属性。类似地设置两者,并且是相同的声明。place-items align-items justify-itemsplace-content justify-conten talign-content

  如上所述,在此用例中,我们可以使用 或 以及 或 互换。以同样的方式,我们也可以使用以及互换并获得相同的结果(特别是对于这个用例。对于任何其他用例,我们需要分析应该使用哪个属性)。justify-content justify-items align-content align-itemsplace-items place-content

25

  8. 如何使用网格、对齐自我和证明自我

  与 Flexbox 类似,网格还支持使用 和 属性(要在子元素中指定的属性)对齐单个网格项。align-self justify-self

  justify-self沿内联(行)轴对齐网格单元格内的网格项,而沿块(列)轴对齐网格单元格内的网格项。align-self

26

  9. 如何使用网格和放置自

  该属性在单个声明中同时设置 和 属性。因此,指定一个子元素以垂直和水平地使子元素居中。place-selfjustify-selfalign-selfplace-self: center

27

  10. 如何使用网格和边距:自动

  与弹性盒类似,网格还为我们提供了强大的对齐和空间分配功能。

  如第 5 点所示,我们可以使用 Grid 而不是使用 Flexbox 执行类似的过程,如果我们对齐子元素,我们将得到相同的结果。margin: auto

28

  这是结果

  正如预期的那样,遵循上述任何一种方法都将导致这种情况:

29

  总结

  在本文中,我们了解了如何使用 10 种不同的方法将 div 居中。这些方法是:

  使用位置:相对、绝对和顶部、左偏移值

  使用位置:相对和绝对,顶部,左侧,右侧和底部偏移值和边距:自动

  使用弹性框、对齐内容和对齐项目

  使用弹性框,对齐内容并对齐自我

  使用弹性框和边距:自动

  使用网格、对齐内容和对齐项

  使用网格和放置项

  使用网格,对齐自我和对齐自我

  使用网格和位置自

  使用网格和边距:自动

  我们还研究了所有这些属性(如 、 等)的含义,以及我们如何将它们中的一些组合在一起以将 div 居中。justify-content align-items position

相关文章

热门视频

开班信息

  • Unity游戏开发班--------------------

    07.13抢座

  • 网络安全培训班--------------------

    06.15抢座

  • 大数据培训班--------------------

    06.29抢座

  • 软件测试培训班--------------------

    06.15抢座

  • UI交互设计培训--------------------

    06.29抢座

  • 物联网培训班--------------------

    06.29抢座

  • Java培训班--------------------

    06.15抢座

  • 云计算培训班--------------------

    06.29抢座

  • Python培训班--------------------

    06.29抢座

  • HTML5大前端班--------------------

    06.15抢座

  • 北京总部地址:北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术学院广场服务楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 深圳校区地址:深圳市宝安区宝安大道5010号西部硅谷B座C区1层108
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 上海校区地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 广州校区地址:广州市白云区永平街永泰学山塘学山文化创意谷A1栋六楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 郑州二七区校区地址:郑州市二七区航海中路60号海为科技园C区10层
    郑州高新区校区地址:郑州市高新区金梭路与银杏路交叉口教育科技产业园南门D座4层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 大连校区地址:辽宁省大连市高新园区爱贤街10号大连设计城A座901
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 武汉金融港校区地址:武汉市东新区光谷大道77号金融港B18栋三、四层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 成都校区地址:成都市高新区肖家河沿街138号肖家河大厦三楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 西安校区地址:西安市雁塔区高新六路52号立人科技C座西区4楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 杭州旺田校区:浙江省杭州市上城区九堡镇旺田书画城A座4层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 青岛校区地址:青岛市市北区龙城路31号卓越世纪中心4号楼5层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 重庆校区地址:重庆市九龙坡区科园一路3号渝高大厦9楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 长沙校区地址:湖南省长沙市岳麓区麓谷企业广场A2栋三单元306号
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 哈尔滨校区地址:哈尔滨市松北区世泽路689号 科技创新城4号楼405
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 南京校区地址:南京市建邺区应天大街780号弘辉产业园1栋2层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 太原校区地址:太原市小店区长治路230号能源互联网大厦6层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 沈阳校区地址:辽宁省沈阳市浑南区世纪路16号东大软件园B园B1座A201
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 合肥校区地址:合肥市包河区徽州大道396号东方广场B座12A
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 贵阳校区地址:贵阳市云岩区延安东路37号物资大厦老楼9楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、网络营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 济南校区地址:济南市历下区历山路36号齐鲁师范学院利宝产业大厦3F
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python人工智能+数据分析培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、网络安全培训、区块链培训、影视剪辑包装培训、游戏原画培训、全媒体运营培训
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 千锋教育服务号

    了解千锋动态
    关注千锋教育服务号

  • 千锋教育移动站

    扫一扫快速进入
    千锋移动端页面

  • 千锋互联服务号

    扫码匿名提建议
    直达CEO信箱