盒模型

一.盒模型包括哪些属性?

盒模型包括的属性有:

  • margin:外边距。它包括margin-top、margin-right、margin-buttom、margin-left。margin的最基本用途就是控制元素周围空间的间隔,它永远是透明的。
  • border:边框。它包括border-top、border-right、border-buttom、border-left。
  • padding:内边距。它包括padding-top、padding-right、padding-buttom、padding-left。padding是用来使元素与内容有一定的间隔。
  • content。
    在网页中,每个元素都被认为是一个矩形的盒子。
    盒模型

    如果要它显示你设计的宽高大小,使用命令 box-sizing: border-box;,这样有的时候会便于计算。
    这里需要强调一下:
    1.对于行内元素,手动设置宽高是无效的,它本身的宽高是由自身决定的。
    2.行内元素可以设置margin、padding,但是只有水平方向,也就是左右方向的margin和padding是有效的,垂直方向,也就是上下方向的margin和padding是无效的。而如果上下padding如果设置边框或者背景色,会把边框和背景色撑开。但是它本身并不会挤占空间,这样的话可能会出现一个覆盖的问题。

二.边距合并

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。但是注意只有普通文档流中块框的垂直外边距才会发生外边距叠加。行内框、浮动框或绝对定位框之间的外边距不会合并。设置了display:inline-block的元素,垂直margin不会被合并
一般来说, 垂直外边距合并有三种情况:

  • 元素自身合并。当元素没有内容(即空元素)、内边距、边框时, 它的上下边距就会相遇了, 即会产生合并(垂直方向)。 如果为元素添加内容、 内边距、 边框其中的任何一项, 都会取消合并。
  • 元素合并相邻元素(兄弟合并),如果它们的上下边距相遇,即会产生合并。
  • 包含元素合并(父子合并)。包含元素的外边距隔着父元素的内边距和边框,当这两项都不存在的时候,父子元素垂直外边距相邻,产生合并。 添加任何一项即会取消叠加。

三.text-align: center的作用是什么,作用在什么元素上?能让什么元素水平居中。

text-align: center的用于块级元素,比如说一个div或者段落上,使块级元素内部的行内元素水平居中。这个所谓的居中是针对自己的父容器,可以参考下面的示例。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>盒模型</title>
<style>
    .box1{
    width: 100px;
    height: 100px;
    border: 3px solid;
    margin: 20px;
    padding: 20px;
}
    .box2{
        width: 50px;
        height: 50px;
        border: 3px solid;
        margin: 5px;
        padding: 5px;
        background: red;
        text-align: center;
   }
</style>
</head>
<body>
    <div class="box1">
        <div class="box2">
            <a href="#">Link</a>
        </div>
    </div>
</body>
</html>
针对父容器居中

四.如果遇到一个属性想知道兼容性,在哪查看?

想要知道一个属性的兼容性,可以在Can I Use上面查看。
比如说输入text-align,就可以知道它的兼容性。

Can I Use

五.IE 盒模型和W3C盒模型有什么区别?

IE盒模型并不只是设置的内容宽高大小,还要包括border和padding;W3C盒模型只是内容宽高的大小。

  • ie678怪异模式(不添加 doctype)使用 ie 盒模型,宽度=边框+padding+内容宽度。


    IE 盒模型
  • chrome, ie9+, ie678(添加 doctype) 使用标准盒模型, 宽度= 内容宽度。


    标准盒模型

六.以下代码的作用?兼容性?

*{ box-sizing: border-box;
}

box-sizing是定义元素盒尺寸大小的方式。它的属性值可以为content-box、padding-box、border-box、inherit。

  • box-sizing: content-box;这是盒模型默认值,也就是上面提到的标准盒模型。计算方法为width/height=content,表示指定的宽度和高度仅限内容区域,边框和内边距的宽度不包含在内。
  • box-sizing: padding-box;计算方法为width/height=content+padding,表示指定的宽度和高度包含内边距和内容区域,边框宽度不包含在内。
  • box-sizing: border-box;计算方法为width/height=content+padding+border,表示指定的宽度和高度包含边框、内边距和内容区域。这就是上面提到的IE盒模型
  • box-sizing: inherit;继承父元素中box-sizing属性的值。

为了说明,来举个例子。

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>盒子尺寸的计算方法</title> 
<style type="text/css"> 
div {  
    margin:5px;  
    width:200px;                   
    height:80px;                      
    background-color: red;  
    border:10px solid;       
    padding:10px;                    
    font-weight:bold;  
    font-size:18px;  
    line-height:40px;  
}  
.s1 {  
    box-sizing:border-box;  
.s2 {  
    box-sizing:padding-box;   
}  
.s3 {  
    box-sizing:content-box;   
}  
</style> 
</head> 
<body> 
<div class="s1">border-box</div> 
<div class="s2">padding-box</div> 
<div class="s3">content-box</div> 
</body> 
</html> 

但是由于webkit内核的浏览器不支持属性值padding-box,故表现出默认的content-box效果。


效果图

再来回到题目当中,“*”表示选中所有的元素,box-sizing使用的计算方法为border-box,它使页面所有元素使用content里包括border、padding的盒模型,也就是采用IE盒模型。
举个例子。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>盒模型</title>
<style>
    .box{
    width: 100px;
    height: 100px;
    border: 3px solid;
    margin: 20px auto;
    padding: 20px;
    background: yellow;
    }
    *{
        box-sizing: border-box;
    }
</style>
</head>
<body>
    <div class="box">       
    </div>
</body>
</html>

盒模型大小

盒模型大小

经过审查元素,就可以看到它显示的总尺寸就是设置content的宽高。
它的兼容性可以在Can I Use上面查看。
box-sizing兼容性

七.代码

写一个 btn 的class, 任何 a,span,div,button添加此class后后变成如下按钮的样式(鼠标hover背景色#c14d21,鼠标按下背景色#e25f31)。

<a class="btn" href="#">确定</a>
<span class="btn" >取消</span>
<div class="btn">提交</div>
<button class="btn"> 发送</button>

效果

代码的github地址:Github
预览效果

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,721评论 1 92
  • 一、盒模型包括哪些属性? CSS盒模型~即定义了Web页面中的元素是如何看做盒子来解析CSS盒模型属性有: con...
    dengpan阅读 403评论 0 0
  • 原文地址:谈谈我对盒模型的理解 盒子是无处不在的。 html任何一个元素都可以看作一个盒子,这个盒子不可见,但是...
    薛普定朗谔克阅读 13,693评论 2 12
  • 课程目标 掌握盒模型相关知识点 了解IE盒模型和W3C 盒模型区别 学习建议 视频未覆盖的知识点会提供详细的文档资...
    饥人谷_江君阅读 589评论 0 3
  • 1、盒模型包括哪些属性 盒模型包括4个属性:content,padding,border,margin. cont...
    _hello__world_阅读 246评论 0 0