前端开发是很多朋友有关注的类型,那么web前端开发css盒模型 css盒子模型有几种,我爱编程网为大家带来了相关文章,希望给大家提供参考。
什么是css盒子模型
css盒子模型又称为框模型,盒子的最内部是元素的实际内容即元素内容,紧挨着元素框外部的是内边距,其次是边框,然后最外层是外边距,这几部分共同组成了盒子模型
盒子模型是html+css中最核心的基础知识,理解了这个重要的概念才能更好的排版,进行页面布局。下面是总结的关于css盒子模型的知识,希望对大家有所帮助。
一、css盒子模型概念
CSS css盒子模型又称框模型 (Box Model) ,包含了元素内容(content)、内边距(padding)、边框(border)、外边距(margin)几个要素。如图:
图中最内部的框是元素的实际内容,也就是元素框,紧挨着元素框外部的是内边距padding,其次是边框(border),然后最外层是外边距(margin),整个构成了框模型。通常我们设置的背景显示区域,就是内容、内边距、边框这一块范围。而外边距margin是透明的,不会遮挡周边的其他元素。
那么,元素框的总宽度 = 元素(element)的width + padding的左边距和右边距的值 + margin的左边距和右边距的值 + border的左右宽度;
元素框的总高度 = 元素(element)的height + padding的上下边距的值 + margin的上下边距的值 + border的上下宽度。
二、css 外边距合并(叠加)
两个上下方向相邻的元素框垂直相遇时,外边距会合并,合并后的外边距的高度等于两个发生合并的外边距中较高的那个边距值,如图:
比较容易理解,所以在页面中有时候遇到实际情况是需要考虑这个因素的。当然外边距合并其实也有存在的意义,如下图:
需要注意的是:只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。
css reset 中也会经常用到
* {
margin : 0;
padding : 0;
}三、box-sizing属性介绍
box-sizing属性是用户界面属性里的一种,之所以介绍它,是因为这个属性跟盒子模型有关,而且在css reset中有可能会用到它。
box-sizing : content-box|border-box|inherit;(1) content-box ,默认值,可以使设置的宽度和高度值应用到元素的内容框。盒子的width只包含内容。
即总宽度=margin+border+padding+width
(2) border-box , 设置的width值其实是除margin外的border+padding+element的总宽度。盒子的width包含border+padding+内容
即总宽度=margin+width
很多CSS框架,都会对盒子模型的计算方法进行简化。
(3) inherit , 规定应从父元素继承 box-sizing 属性的值
关于border-box的使用:
1、一个box宽度为100%,又想要两边有内间距,这时候用就比较好
2、全局设置 border-box 很好,首先它符合直觉,其次它可以省去一次又一次的加加减减,它还有一个关键作用——让有边框的盒子正常使用百分比宽度。
四、实际开发中遇到的和框模型相关的应用及小问题。
1、margin越界(第一个子元素的margin-top和最后一个子元素的margin-bottom的越界问题)
以第一个子元素的margin-top 为例:
当父元素没有边框border时,设置第一个子元素的margin-top值的时候,会出现margin-top值加在父元素上的现象,解决方法有四个:
(1)给父元素加边框border (副作用)
(2)给父元素设置padding值 (副作用)
(3)父元素添加 overflow:hidden (副作用)
(4)父元素加前置内容生成。(推荐)
以第四种方法为例:
.parent {
width : 500px;
height : 500px;
background-color : red;
}.parent : before {
content : " ";
display : table;}.child {
width : 200px;
height : 200px;
background-color : green;
margin-top : 50px;}
<div class="parent">
<div class="child"></div> </div>2、 浏览器间的盒子模型。
(1)ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值。
(2)标准盒子模型与IE模型之间的差异:
标准的盒子模型就是上述介绍的那种,而IE模型更像是 box-sizing : border-box; 其内容宽度还包含了border和padding。解决办法就是:在html模板中加doctype声明。
3、用盒子模型画三角形
<!DOCTYPE html><html>
<head>
<style>
.triangle {
width : 0;
height: 0;
border : 100px solid transparent;
border-top : 100px solid blue; /*这里可以设置border的top、bottom、left、right
四个方向的三角*/
}
</style>
</head>
<body>
<div class="triangle"></div>
</body></html>页面显示结果为:
css盒子模型有几种
CSS盒子模型是用于布局和定位网页元素的基本概念。它描述了一个元素在网页中的尺寸、边框、内边距和外边距之间的关系。
每个HTML元素都可以被看作是一个矩形的盒子,其中包含内容、内边距、边框和外边距。CSS盒子模型定义了这些组成部分的尺寸和相互关系。
在CSS中,有两种盒子模型:标准盒子模型和IE盒子模型。
1、标准盒子模型(Standard Box Model)
标准盒子模型是CSS的默认盒子模型。在标准盒子模型中,一个元素的总宽度(width)和总高度(height)由内容区域(content)、内边距(padding)、边框(border)组成。换句话说,元素的宽度和高度不包括内边距和边框。
标准盒子模型的计算公式:
我爱编程网
总宽度 = 内容宽度(width) + 左内边距(padding-left) + 右内边距(padding-right) + 左边框宽度(border-left) + 右边框宽度(border-right)总高度 = 内容高度(height) + 上内边距(padding-top) + 下内边距(padding-bottom) + 上边框宽度(border-top) + 下边框宽度(border-bottom)
2、IE盒子模型(IE Box Model)
IE盒子模型是早期Internet Explorer浏览器(IE5及以下版本)采用的盒子模型。在IE盒子模型中,元素的总宽度和总高度包括了内容区域(content)、内边距(padding)和边框(border)。
IE盒子模型的计算公式:
总宽度 = 内容宽度(width) + 左内边距(padding-left) + 右内边距(padding-right) + 左边框宽度(border-left) + 右边框宽度(border-right)总高度 = 内容高度(height) + 上内边距(padding-top) + 下内边距(padding-bottom) + 上边框宽度(border-top) + 下边框宽度(border-bottom)
现在的浏览器中,默认使用的是标准盒子模型。如果你希望使用IE盒子模型,可以通过设置CSS的box-sizing属性为border-box来实现。
.element { box-sizing: border-box;}
这将使元素采用IE盒子模型,使元素的宽度和高度包括了内边距和边框。
几个容易出错的css盒子模型细节-jerrylsxu
css是前端必须掌握的技能之一。其中的box模型,如图所示:
大体就是border、margin、padding和content,概念挺好理解。但当盒子模型与其他属性一块使用时产生的现象,或许您还难以回答上来。下面来看看几个容易搞错的css盒子模型细节。
问题一:嵌套块级元素时,子元素margin的参考标准是?具体来说就是父元素的content-box,padding-box还是border-box?
来看以下的例子:
#box3
{
width:400px;
height:400px;
margin:20px;
padding:20px;
border:20px solid;
background-color:#ccc;
overflow:hidden;
}
#box3_3
{
width:200px;
height:200px;
margin:20px;
padding:20px;
border:20px solid #0f0;
background-color:#f00;
}
可以清楚看到,子元素margin以包含元素content-box为参考
问题二:overflow:hidden隐藏的是超出哪里的部分呢?具体来说就是超出content-box,padding-box还是margin-box会被隐藏?
依然来看一个例子,css如下:
#box1
{
width:100px;
height:100px;
margin:20px;
padding:20px;
border:20px solid;
background-color:#ccc;
overflow:hidden;
}
#box1_1
{
width:200px;
height:200px;
background-color:#f00;
}
通过以上例子可以知道。overflow:hidden,隐藏超出padding-box的部分
问题三:position:absolute定位参考点是什么?
我们都知道,当给一个元素应用position:absolute绝对定位后。会以最近拥有定位属性的父元素为定位参考。同时可以通过left和top指定相对父元素的偏移距离。那么这个左上角具体是指父元素哪里呢?元素本身又以哪个点来定位呢?
#box2
{
position:relative;;
width:400px;
height:400px;
margin:20px;
padding:20px;
border:20px solid;
background-color:#ccc;
}
#box2_2
{
position:absolute;
left:auto;
top:auto;
width:100px;
height:100px;
padding:20px;
border:10px solid #0f0;
background-color:#f00;
}
子元素有margin 子元素无margin left/top为默认值 left/top为0
通过点击上面的按钮,可以得到以下结论:
元素自身的参考点是最外围的盒子,即margin-box,无margin则为border-box,以此类推。
left/top指定值后,参照父元素的padding-box左上角
left/top为默认值,子元素还在原来的位置上,即相对于父元素的content-box左上角
问题四:元素的背景覆盖到哪个区域,border-box?padding-box还是margin-box?
这里要区分background-color和background-image两种情况。
1.对于背景颜色,颜色会填满border-box。
2.对于背景图片,默认会填充padding-box。左上方从padding-box的区域开始填充,右侧和下侧会超出到border-box的区域,但不会超出到margin-box
3.在css3中,可以通过background-originr更改背景图片的填充区域
来看以下css,
#box4
{
width:100px;
height:100px;
margin:20px;
padding:20px;
border:20px dotted;
background-color:#ccc;
overflow:hidden;
}
#box5
{
width:400px;
height:300px;
margin:20px;
padding:20px;
border:20px dotted;
background-color:lightblue;
background-image:url('');
background-repeat:no-repeat;
overflow:hidden;
}
background-origin:border-boxpadding-boxcontent-box
以上就是我爱编程网为大家带来的web前端开发css盒模型 css盒子模型有几种,希望能帮助到大家,了解更多相关信息,敬请关注我爱编程网。