十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
CSS盒子模型就是在CSS技术所使用的一种思维模型。CSS假定所有的HTML文档元素都生成一个描述该元素在HTML文档布局中所占空间的矩形元素框,可以形象地将其看作是一个盒子。通过定义一系列与盒子相关的属性,可极大地丰富和促进各个盒子乃至整个HTML文档的表现效果和布局结构。
创新互联作为成都网站建设公司,专注重庆网站建设公司、网站设计,有关成都定制网页设计方案、改版、费用等问题,行业涉及地磅秤等多个领域,已为上千家企业服务,得到了客户的尊重与认可。
CSS盒子模型由内容区、填充、边框和空白边四部分组成。内容区是盒子模型的中心,呈现盒子的主要信息内容;填充是内容区和边框之间的空间;边框是环绕内容区和填充的边界;空白边位于盒子的最外围,是添加在边框外周围的空间。
扩展资料:
CSS盒子模型特点:
1、丰富的样式定义:CSS提供了丰富的文档样式外观,以及设置文本和背景属性的能力;允许为任何元素创建边框,以及元素边框与其他元素间的距离,以及元素边框与元素内容间的距离;允许随意改变文本的大小写方式、修饰方式以及其他页面效果。
2、易于使用和修改:CSS可以将样式定义在HTML元素的style属性中,也可以将其定义在HTML文档的header部分,也可以将样式声明在一个专门的CSS文件中,以供HTML页面引用。总之,CSS样式表可以将所有的样式声明统一存放,进行统一管理。
3、多页面应用:CSS样式表可以单独存放在一个CSS文件中,这样我们就可以在多个页面中使用同一个CSS样式表。CSS样式表理论上不属于任何页面文件,在任何页面文件中都可以将其引用。这样就可以实现多个页面风格的统一。
参考资料来源:百度百科-CSS盒子模型
盒子模型分为哪几部分?
一个盒子模型分成几部分:
- 内容区(content)
- 内边距(padding)
- 边框(border)
- 外边距(margin)12345
内容区
内容区:盒子中放置内容的区域,也就是元素中的文本内容,子元素都是存在于内容区中的。
如果没有元素设置内边距和边框,则设置内容大小偶人和盒子大小一致123
通过width 和height 两个属性可以设置内容的大小1
width 和height属性值适合用于块元素1
内边距
内边距:元素内容区与边框以内的空间1
默认情况下width和height不包含padding的大小
12
使用padding属性来设置元素的内边距
举例:
-padding:10px 20px 30px 40px;
这样会设置元素的 上,右,下,上 四个方向的内边距。(按照顺时针方向)
padding:10px 20px 30px;
分别指定 上,左右,下 四个方向的内边距
padding:10px 20px;
分别指定 上下,左右 四个方向的内边距
padding:10px ;
分别指定 上左下右 四个方向的内边距
同时在CSS中还提供padding-top padding-right padding-left padding-bottom1234567891011121314
边框
可以在元素周围创建边框,边框是元素可见的最外部1
可以使用border属性来设置盒子的边框:
-border:1px red solid;
上边的样式分别指定了边框的 宽度 ,颜色,样式123
也可以使用border-top/left/right/bottom分别指定 上右下左 四个方向的边框
和padding一样,默认width 和height 并包括边框的宽度123
边框样式
边框样式可以设置多种样式:
-none(没有边框)
-dotted(点线)
-dashed(虚线)
-solid(实线)
-double(双线)
-groove(槽线)
-ridge(脊线)
-inset(凹线)
-outset(凸线)1234567891011
外边距
外边距是原素边框与周围元素相距的空间1
使用margin属性可以设置外边距1
用法和padding 类似,同样也提供了四个方向的
margin-top/right/bottom/left12
当将左右外边距设置为auto时,浏览器会将左右外边距设置为相等,所以这行代码 margin:0 auto 可以使元素居中
1
margin 在一个声明中设置所有外边距属性。
margin-top 设置元素的上外边距。
margin-bottom 设置元素的下外边距。
margin-left 设置元素的左外边距。
margin-right 设置元素的右外边距。
备注 :我们需要在不同设备的不同尺寸屏幕下去浏览网页,传统的网页布局方式很难满足响应式布局的需要。因此css3提出了一些全新的布局属性,包括: 弹性盒子模型 , 多列属性 , 响应式布局 等等。弹性盒子模型的最大特征在于动态修改子元素的宽度和高度,以满足在不同尺寸屏幕下的恰当布局。
说明 :盒子模型的内容范围包括内容(content)、内边距(padding)、边框(border)和外边距(margin)。盒子模型就是通过div和css样式来设计一个可以添加逻辑的效果。
备注 :内边距(padding)在 content 外,边框内。内边距有1个参数时,上下左右外边距都为该参数值;2个参数时,第一个参数为 上下 外边距值,第二个参数为 左右 外边距值;4个参数分别代表 上右下左 外边距值。
边框可以创造出效果出色的边框,并可以应用于任何元素。 基本的边框属性 :
简化写法
备注: border: 1px solid red; 三个参数分别为边框的宽度、样式和颜色属性。
css3提供的边框属性
eg1 :圆角边框的绘制
阴影属性(box-shadow)的4个参数分别代表:背景阴影 向右 移动10个像素,再 向下 移动20个像素;阴影 透明度 ;阴影 颜色 。
备注:围绕在内容边框的区域就是外边距(margin),外边距默认是透明区域,外边距接受任何长度单位和百分数值。外边距和内边距的属性比较相似。margin的参数个数和对应代表大含义和padding一致。
盒子模型示例
说明:最外层的div为容器层,之后为边框、内边距和内容区域。
说明:外边距合并就是一个叠加的概念。外边距合并遵循边距大的一方,即元素1的外边距为10px,元素2的外边距为20px,则元素1和元素2间的距离为20px;元素1的外边距为10px,元素2的外边距为10px,则元素1和元素2间的距离为10px。
(1) 弹性容器属性
(2) 弹性子元素属性
eg1 :
CSS 有 非常重要的 三个特性:层叠性、继承性、优先级。
相同选择器 给设置 相同的样式,此时一个样式就会 覆盖(层叠) 另一个冲突的样式。
层叠主要解决样式冲突的问题 。
层叠性原则:
CSS中的继承:子标签会继承父标签的某些样式,如 文本颜色 和 字号。
简单理解:子承父业。
当同一个元素指定多个选择器,就会有优先级的产生。
优先级注意点:
权重叠加 :如果是复合选择器,则会有权重叠加,需要计算权重。
练习:
页面布局要学习三大核心: 盒子模型, 浮动 和 定位 .
学习好盒子模型能非常好的帮助我们布局页面.
网页布局过程:
网页布局的核心本质: u 就是利用 CSS 摆盒子 /u。
所谓 盒子模型 :就是把 HTML 页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。
CSS 盒子模型本质上是一个盒子,封装周围的 HTML 元素,它包括:u边框/u、u外边距/u、u内边距/u、和 u实际内容/u
border可以设置元素的边框。边框有三部分组成: 边框宽度(粗细)、 边框样式 、 边框颜色
语法:
CSS 边框属性允许你指定一个元素边框的 样式 和 颜色 。
语法
边框样式 border-style 可以设置如下值:
边框简写:
边框分开写法:
课堂要求:请给一个 200*200 的盒子,设置上边框为红色,其余边框为蓝色(提示:一定注意边框的层叠性)
border-collapse 属性控制浏览器绘制表格边框的方式。它控制相邻单元格的边框。
语法:
边框会额外增加盒子的实际大小。因此我们有两种方案解决:
padding 属性用于设置内边距,即 边框与内容 之间的距离。
padding 属性(简写属性)可以有一到四个值。
以上 4 种情况,我们实际开发都会遇到。
内边距会影响盒子实际大小
当我们给盒子指定 padding 值之后,发生了 2 件事情:
也就是说,如果盒子已经有了宽度和高度,此时再指定内边框,会撑大盒子。
解决方案:
u如果保证盒子跟效果图大小保持一致/u,则 让 width/height 减去多出来的内边距大小 即可。
padding内边距可以撑开盒子,我们可以做非常巧妙的运用.
因为每个导航栏里面的字数不一样多,我们可以不用给每个盒子宽度了,直接给padding最合适。
相关取值:
padding内边距可以撑开盒子, 有时候,也会让我们去修改宽度。
现实开发时候,小米侧边栏,文字距离左侧的距离不能用text-indent调整,这样不精确,实际开发的做法是:给padding值,这样更加精确
如果盒子本身没有指定width/height属性, 则此时padding不会撑开盒子大小.
margin 属性用于设置外边距,即控制盒子和盒子之间的距离。
margin 简写方式代表的意义跟 padding 完全一致。
外边距可以让 块级 盒子 水平居中 ,但是必须满足两个条件:
① 盒子必须指定了宽度(width)。
② 盒子 左右的外边距 都设置为 auto 。auto----自动
常见的写法,以下三种都可以:
注意: 以上方法是让块级元素水平居中, 行内元素或者行内块元素水平居中给其父元素添加 text-align:center 即可。
使用 margin 定义块元素的 垂直外边距 时,可能会出现外边距的合并。
主要有两种情况:
1. 相邻块元素垂直外边距的合并
2. 嵌套块元素垂直外边距的塌陷
当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有下外边距 margin-bottom,下面的元素有 上外边距 margin-top ,则他们之间的垂直间距不是 margin-bottom 与 margin-top 之和。取两个值中的 较大者这种现象被称为 相邻块元素垂直外边距的合并 。
解决方案:
对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。
解决方案:
① 可以为父元素定义上边框。
② 可以为父元素定义上内边距。
③ 可以为父元素添加 overflow:hidden。
还有其他方法,比如浮动、固定,绝对定位的盒子不会有塌陷问题,后面再总结。
网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致。因此我们在布局前,首先要清除下网页元素的内外边距。
注意: 行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距(因为设置了也不起作用)。但是转换为块级和行内块元素就可以了。
因为网页美工大部分效果图都是利用 PS(Photoshop) 来做的,所以以后我们大部分切图工作都是在 PS 里面完成。
因为网页美工大部分效果图都是利用 PS(Photoshop) 来做的,所以以后我们大部分切图工作都是在 PS 里面完成。
总结
标签都是有语义的, 合理的地方用合理的标签。比如产品标题 就用 h, 大量文字段落就用p
类名就是给每个盒子起了一个名字,可以更好的找到这个盒子, 选取盒子更容易,后期维护也方便。
大部分情况两个可以混用,两者各有优缺点,但是根据实际情况,总是有更简单的方法实现。
布局有很多种实现方式,同学们可以开始先模仿我的写法,然后再做出自己的风格。
最后同学们一定多运用辅助工具,比如屏幕画笔,ps等等
去掉 li 前面的 项目符号(小圆点)
语法:
圆角边框、盒子阴影、文字阴影
(重点记住前两个,文字阴影做了解)
在 CSS3 中,新增了 圆角边框 样式,这样我们的盒子就可以变圆角了。
border-radius 属性用于设置元素的外边框圆角。
语法:
radius 半径(圆的半径)原理:(椭)圆与边框的交集形成圆角效果
CSS3 中新增了盒子阴影,我们可以使用 box-shadow 属性为盒子添加阴影。
语法:
注意 :
在 CSS3 中,我们可以使用 text-shadow 属性将阴影应用于文本。
语法:
CSS中, Box Model叫盒子模型(或框模型),Box Model规定了元素框处理元素内容(element content)、内边距(padding)、边框(border) 和 外边距(margin) 的方式。在HTML文档中,每个元素(element)都有盒子模型,所以说在Web世界里(特别是页面布局),Box Model无处不在。下面是Box Model的图示:
说明:上图中,由内而外依次是元素内容(content)、内边矩(padding-top、padding-right、padding- bottom、padding-left)、边框(border-top、border-right、border-bottom、border- left)和外边距(marging-top、margin-right、margin-bottom、margin-left)。
内边距、边框和外边距可以应用于一个元素的所有边,也可以应用于单独的边。而且,外边距可以是负值,而且在很多情况下都要使用负值的外边距。
下图是W3School的Box Model 图解:
示例代码如下:
htmlhead
style type="text/css"
/* “*” 代表通配符,代表适用于所有标签*/
*{ padding: 0px; margin: 0px; }
/*ID选择器*/
#myDiv{ /*实际的宽度,width+左右边距+左右边框*/
width: 200px; height: 300px; border: 1px solid red; /*
padding填充,内边距
*/
/*
1.上下左右的的值
2.上下,左右
3.上,左右,下
4.上,右,下,左(顺时针方向)
*/
padding: 0px 10px 0px; margin: 10px 20px 10px; }
#myDiv2{ width: 200px; height: 300px; border: 1px solid green; }
/*类选择器*/
.title{ color: blue; font-size: 14px; }
/*混合使用*/
span.title{ font-size: 25px; }
div p{ /*代表div下的p标签*/
font-size: 20px; color: yellow; }
/style
meta http-equiv="Content-Type" content="text/html; charset=utf-8" /
titleTitle/title/headbody
div id="myDiv"
pabc/p
/div
div id="myDiv2"/div
span class="title"Javascript/span
i class="title"ActionScript/i/body/html
说了这么多,怎样选择,根据项目情况而定,以及个人熟练程度。。。加油
内容 content :盒子的主要区域,盒子中的文本内容以及后代元素都显示在内容区域中。
内边距 padding :内容与盒子边界的距离。
边框 border :边框显示在盒子的边界上。
外边距 margin :盒子和相邻兄弟元素或父元素的距离。
盒子的大小=内容的大小+内边距的大小+边框的大小
元素默认 总宽度 = 父元素内容的宽度 - 元素自己的左右外边距
元素默认 内容宽度 = 父元素内容的宽度 - 元素自己的左右外边距 - 元素自己的左右边框宽度 - 元素自己的左右内边距