Blogger Information
Blog 16
fans 0
comment 0
visits 13952
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
CSS进阶怪异盒模型和常用元素对齐方式
wen。
Original
592 people have browsed it

怪异盒模型(box-sizing)

在前几章中我们提到盒模型,何为盒模型呢?有HTML元素可以看作盒子,在CSS中,盒模型就是用来设计和布局时使用的常用术语。

在布局盒模型的时候,是让我们头疼的就是隐形式的marginpadding,这些隐形式的间距会让我们的布局变得不可控,常常会使得排版错乱,这个时候就出现怪异盒模型box-sizing

1.box-sizing原理

最主要的用法是规定容器元素的最终尺寸计算方式。

如果我们创建一个<div>没有设置box-sizing属性为border-box的话(默认值为content-box),例子如下;

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=<>, initial-scale=1.0">
  6. <title>盒模型(box-sizing)</title>
  7. <style>
  8. :root{
  9. font-size: 10px;
  10. }
  11. div{
  12. width: 20em;
  13. height: 15em;
  14. background-color: lightgreen;
  15. }
  16. .box{
  17. padding: 1em;
  18. border: 2px solid;
  19. /* 将背景色载切到内容区,让padding可视化 */
  20. background-clip: content-box;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div class="box"></div>
  26. </body>
  27. </html>

效果如下
盒模型讲解
默认W3C标准盒子(content-box),borderpadding的设置是会破坏掉元素的宽高,必须得重新计算,非常麻烦;这个时候就用到我们的主角border-box了。

版本 说明 能否继承 备注
CSS3 content-box 元素的填充和边框布局和绘制指定宽度和高度除外 默认值
CSS3 border-box 置border、padding不会影响元素width与 height的尺寸 IE模型

新增如下代码

  1. /* IE怪异盒模型 */
  2. box-sizing: border-box;

IE怪异盒模型

2.元素对齐方式

元素对齐方式是最基础,而且也是最考验大家基本功扎实程度;因为元素对齐几乎是必选项,每个页面布局都会用到。

2.1水平居中方式

水平居中方式一共有两种

  • 行内或行内块的水平居中

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>水平居中问题</title>
    7. <style>
    8. div{
    9. width: 10em;
    10. height: 10em;
    11. border: 1px solid;
    12. }
    13. /* 行内或行内块水平居中 */
    14. .box{
    15. text-align: center;
    16. }
    17. </style>
    18. </head>
    19. <body>
    20. <div class="box">
    21. <span>文字标题</span>
    22. </div>
    23. </body>
    24. </html>

    行内水平居中

  • 块元素的水中居中

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>水平居中问题</title>
    7. <style>
    8. div{
    9. width: 10em;
    10. height: 10em;
    11. border: 1px solid;
    12. }
    13. /* 块元素的水平居中 */
    14. .box>div{
    15. width: 5em;
    16. height: 5em;
    17. background-color: yellow;
    18. /* 使用text-align: center;是无效的,需要用到margin: ; */
    19. margin: auto;
    20. }
    21. </style>
    22. </head>
    23. <body>
    24. <div class="box">
    25. <div></div>
    26. </div>
    27. </body>
    28. </html>

    块元素的水平居中

    注意:使用margin来实现块的水平居中,挤压式的居中;auto这个值由浏览器根据上下文自动计算。

2.2垂直居中方式

行内元素使用line-height实现居中效果,但是图片img不能够使用line-height实现居中,因为img已经有高度了,所以需要使用padding方法实现垂直居中效果。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>垂直居中问题:padding</title>
  7. <style>
  8. .box{
  9. width: 15em;
  10. /* 不要使用高度,这个高度应该由padding挤出来 */
  11. /* height: 15em; */
  12. border: 1px solid;
  13. }
  14. .box{
  15. padding: 5em 0;
  16. }
  17. .box img{
  18. width: 5em;
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <div class="box">
  24. <img src="https://img.php.cn/upload/course/000/000/001/5fae4f08a043a576.png" alt="">
  25. </div>
  26. </body>
  27. </html>

效果如下
垂直居中方式

元素 展现形式 实现代码 备注
行内元素 水平 text-align: center; 行内元素或行内块可以实现水平居中
块元素 水平 margin: auto; 不能使用text-align,需要用margin实现水平居中
行内元素 垂直 line-height 行内元素或行内块可以实现垂直居中
图片元素 垂直 padding 不能使用line-height,需要用padding挤出来
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post