zoukankan      html  css  js  c++  java
  • 05.CSS盒模型

    在前面的文章中,我们讲到过,网页的内容是由多个标签来完成布局的,要完成网页的有效布局,并达到预期的效果,我们需要了解一下CSS中的盒模型;

    A. 先来了解下,盒模型是个什么玩意;

        盒模型: (Box Model) : 是W3C规定一个浏览器如何渲染,显示一个元素, 根据元素的种类,可以将盒模型分为块级元素盒模型和行内盒模型;

         在百度上搜索一下盒模型,一大堆的图片就出来了, 我们挑一个来说一下

         

    网上的其它图与这个图也差不多,所包含的内容都一样

    从上图我们可以发现我,一个盒模型包括几个内容:

     01. margin: 指外边距,表示这个元素在四周与其它元素之间的边距; 

     02. border: 指边框, 即这个元素的边框;

     03. padding: 指内边距,就是从边框到内容区的距离;

     04. content: 就是内容区了,这里才是可以真正用来定东西或放其它元素的地方;所放的元素从左上角开始排列;

    在上面讲到的外边距,边框,内边距这三个内容,可以独立设置, 即四个方向可以只设置一个方向,不一定需要四周都设置上内容, 

    这个可以依据自己在实际应用中的需求来决定要不要设置;

    看完上面的图,我们可能就会问了, 这个元素多宽多高啊,上面的图中都没说, 

    别急, 别急,我们再来看另外一个盒模型的图:

    看完这个图就懵逼了吧, 上面的图看着一样,为什么他们标注的宽和高的位置不一样;

     呵呵,其实并不是标错了哈, 上面标的都是对的, 只是应用的规则不一样, 想信大家在网上也了解过,对于盒模型,有标准盒模型和怪异盒模型的说法, 

    这里的怪异,并不是说它长得怪啊, 只是他们计算宽和高的标准不一样; 

    而造成这种问题的原因主要是因为,不同的浏览器开发商对规则的应用不一样而已;

    首先, 从上图我们能够清楚, width, height  可分别设置元素的宽度和高度, 

    若这个宽和高,指定的是 content 区的尺寸,如果要设置边框和内边距,不能影响我内容区的这种模型, 就是标准盒模型了;

    若这个宽和高,指定的是元素在网页中所占用的尺寸,如果要设置边框和内边距,不能再向外扩张了,只能你自己内部解决,这种就叫做怪异盒模型了;

    这二种盒模型不存在好与坏的说法, 关键在于大家在实际项目应用中,哪种符合应用需要;

    为了避免因浏览器的不同而影响我们设计的网页的布局效果,大家最好在网页中设置好布局的盒模型样式;

    若使用标准盒模型,可设置:  box-sizing:content-box; (设置的尺寸是指content区的尺寸)

    若使用怪异盒模型,可设置:  box-sizing:border-box;  (设置的尺寸是指 border 区的尺寸)

     -----------------------------------------------------

    B. 盒模型中关于边框及内边距的特性知识

        在了解了盒模型的常规信息后,我们可以来了解一下,合模型中关于边框与内边距的信息, 我们通过元素检查来看下面的图:

    从右下角的结构图,我们可以看到左侧的中,同时应用了外边距,边框,内边距内容;

    四条边框,分别应用了不同的样式效果: 可以通过右上角的样式内容看出各自的效果,这里不再详述,我们重点讲一下一些特殊的点;
     --> 内容区是200*200(不括边框和内边距), 而这二个值是设置的width, height值, 这个元素应用的,肯定是: 标准盒模型; 

     --> 这是内容区这几个字,为什么与上边和左边隔那么远, 前面不是讲,内容区是从左上角开始排列的吗?

          其实这里主要是因为应用了padding的效果, 结合右下脚结构图可以看到,内容区四周我们都应用了50像素的内边距, 结合这个情况,我们

          可以了解第一个特性点:  padding区的背景颜色,与内容区的一样;

     --> 再来仔细看一下左,上,右侧的边框,我们应用的是特殊的效果,除了指定的边框颜色外,其它的地方的颜色,也与内容区的底色是一样的,

          这就是第二个特性点: 当边框在应用非solid样式时,边框主色外的颜色,也是与内容区的颜色一样的;

     -->: 扩展一下边框颜色的应用: 将右上脚样式中,针对顶部边框红色部分,改成 transparent 会是什么效果呢?

          

             从实际展示效果来看,当应用transparent时,整条边框的颜色都变成了与内容区一样了;

       -->   继续扩展,如果我们不指定边框的颜色呢,边框以是什么颜色啊?

              为毛是黑色啊??????

                 这主要是因为,在没有指定边框颜色时,边框颜色按内容区的文字的颜色为标准进行了设置,

                我们可以试着改变一下文字的颜色,来看下效果(将内容区的颜色设置为lime, 则内容区的文字颜色与顶部边框默认颜色都变了);

                 

       -->   那如果我们直接把上面的边框取消,又会是什么效果呢?

      ( ^_^取消了,当然就没有上面的边框了咯)

    -------------------------------------------------------------------------------------------------------------------------------------------

    C. 现在再来说一下,关于margin, padding设置尺寸的问题;

         -->可以像上面例子一样,一个一个设置,用谁就设置谁,其它不用的,可以不管;

         -->不一个一个设置,统一设置, 这个时候就得讲究一下,

              * 若只设置一个值:  表示上,右,下,左四个方向统一都是这个值;

              * 若设置二个值: 则第一个值表示上下的值,第二个值表示左右的值;

                 (左右的值可以设置auto让元素居中展示,但上下不能这样设置<至少在讲到现在还不行,如何垂直方向上居中展示,后面来讲>)

              * 若设置三个值,则第一,三个分别表示上,下的值, 第二个表示左右的值;

              * 若设置四个值,则分别代表上,右,下,左四个方向的值;

              

     

  • 相关阅读:
    利用js在Table中追加数据
    C#API配置跨域
    C#linq查询DataTable
    erlang格式化输出
    erlang 的源代码保护机制
    MP3格式音频文件结构解析
    使用异步 I/O 大大提高应用程序的性能
    虚拟机安装mac 关键是换引导
    C/C++规则整理
    字节对齐
  • 原文地址:https://www.cnblogs.com/jieling/p/10834151.html
Copyright © 2011-2022 走看看