整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

CSS基础-盒子模型

SS盒模型本质上是一个盒子,每一个元素都被抽象成一个盒子,每一个盒子又包括四部分

内容(content),内填充(padding),边框(border),外边距(margin)

盒子模型简图

标准盒子模型&&IE盒子模型

  • IE盒子模型

width = content-width + padding-width + border-widthheight = content-height + padding-height + border-height

  • 标准盒子模型

width = content-widthheight = content-height

BFC块级元素

一个块格式化上下文(block formatting context) 是Web页面的可视化CSS渲染的一部分。它是块盒子的布局发生,浮动互相交互的区域。

  • CSS2.1中规定满足下列CSS声明之一的元素便会生成BFC
- 根元素,即HTML元素
- float的值不为none
- overflow的值不为visible
- display的值为inline-block、table-cell、table-caption
- position的值为absolute或fixed
  • 作用
- 自适应两栏布局
- 可以阻止元素被浮动元素覆盖
- 可以包含浮动元素——清除内部浮动
- 分属于不同的BFC时可以阻止margin重叠

可替换元素

在 CSS 中,可替换元素replaced element)的展现效果不是由 CSS 来控制的。这些元素是一种外部对象,它们外观的渲染,是独立于 CSS 的简单来说就是通过修改某个属性就使得显示变换的元素

  • 常见替换元素

img/object/video/iframe/textarea/input

  • 特征
- 内容和外观不受页面上CSS的影响
- 有默认的尺寸,并且在很多CSS上有自己的表达样式

伪元素

  • ::before
在元素内容之前插入额外生成的内容
  • ::after
在元素内容之后插入额外生成的内容
  • ::first–letter
选取元素的首个字符
  • ::first–line
选取元素的第一行
  • ::selection
对用鼠标键盘等已选取的文字部分应用样式
  • ::spelling-error
表示浏览器标记为不正确拼写的文本段
只有一小部分CSS属性可用于 ::spelling-error 伪元素选择器:
color/background-color/cursor/caret-color/outline
text-decoration/text-emphasis-color/text-shadow
  • ::grammar-error
伪元素应用于浏览器标识为语法错误的文本段
只有一小部分的css能够应用在::grammar-error的选择器中
color/background-color/cursor/text-emphasis-color/text-shadow/outline/text-decoration
  • ::focus-within
当元素本身或其后代获得焦点时,:focus-within伪类的元素就会有效

focus-within兼容情况

SS3中包含几个新的文本特征。

在我这里您将了解以下文本属性:

  • text-shadow

  • box-shadow

  • text-overflow

  • word-wrap

  • word-break


浏览器支持

属性




text-shadow4.010.03.54.09.5
box-shadow10.04.0 -webkit-9.04.03.5 -moz-5.13.1 -webkit-10.5
text-overflow4.06.07.03.111.09.0 -o-
word-wrap23.05.53.56.112.1
word-break4.05.515.03.115.0

CSS3 的文本阴影

CSS3 中,text-shadow属性适用于文本阴影。

您指定了水平阴影,垂直阴影,模糊的距离,以及阴影的颜色:

实例

给标题添加阴影:

h1{text-shadow:5px5px5px#FF0000;}


CSS3 box-shadow属性

CSS3 中 CSS3 box-shadow 属性适用于盒子阴影

实例

div{box-shadow:10px10px;}


接下来给阴影添加颜色

实例

div{box-shadow:10px10pxgrey;}


接下来给阴影添加一个模糊效果

实例

div{box-shadow:10px10px5pxgrey;}

尝试一下 »


你也可以在 ::before 和 ::after 两个伪元素中添加阴影效果

实例

#boxshadow{position:relative; box-shadow:1px2px4pxrgba(0, 0, 0, .5); padding:10px; background:white;}#boxshadowimg{width:100%; border:1pxsolid#8a4419; border-style:inset;}#boxshadow::after{content: ''; position:absolute; z-index: -1; /* hide shadow behind image */box-shadow:015px20pxrgba(0, 0, 0, 0.3); width:70%; left:15%; /* one half of the remaining 30% */height:100px; bottom:0;}


阴影的一个使用特例是卡片效果

实例

div.card{width:250px; box-shadow:04px8px0rgba(0, 0, 0, 0.2), 06px20px0rgba(0, 0, 0, 0.19); text-align:center;}

文字卡片 » 图片卡片 »


CSS3 Text Overflow属性

CSS3文本溢出属性指定应向用户如何显示溢出内容

实例

p.test1{white-space:nowrap; width:200px; border:1pxsolid#000000; overflow:hidden; text-overflow:clip; }p.test2{white-space:nowrap; width:200px; border:1pxsolid#000000; overflow:hidden; text-overflow:ellipsis; }

尝试一下 »


CSS3的换行

如果某个单词太长,不适合在一个区域内,它扩展到外面:

CSS3中,自动换行属性允许您强制文本换行 - 即使这意味着分裂它中间的一个字:

CSS代码如下:

实例

允许长文本换行:

p{word-wrap:break-word;}

尝试一下 »


CSS3 单词拆分换行

CSS3 单词拆分换行属性指定换行规则:

CSS代码如下:

实例

p.test1{word-break:keep-all;}p.test2{word-break:break-all;}

尝试一下 »


新文本属性

属性描述CSS
hanging-punctuation规定标点字符是否位于线框之外。3
punctuation-trim规定是否对标点字符进行修剪。3
text-align-last设置如何对齐最后一行或紧挨着强制换行符之前的行。3
text-emphasis向元素的文本应用重点标记以及重点标记的前景色。3
text-justify规定当 text-align 设置为 "justify" 时所使用的对齐方法。3
text-outline规定文本的轮廓。3
text-overflow规定当文本溢出包含元素时发生的事情。3
text-shadow向文本添加阴影。3
text-wrap规定文本的换行规则。3
word-break规定非中日韩文本的换行规则。3
word-wrap允许对长的不可分割的单词进行分割并换行到下一行。

如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!


个网页前端是由HTML DOM与嵌套组合形成视图结加上 CSS 样式的修饰形成视图,由JavaScript 接受用户的交互请求,以事件机制来响应用户交互操作而形成的。CSS是前台页面形式最重要的部分,它负责控制DOM元素的页面布局和颜色、大小的属性。

在CSS中有一著名的盒子模型理论,可以用它来控制DOM的位置。基于div+css技术的“盒子模型”的出现大大代替了传统的table表格嵌套。

虽然其十分好用,但是对于很多新手来说,却很难搞清楚它几个属性和内容之间的联系个区别。

盒子模型概念

所有页面的元素都可以看做一个盒子,占据着一定的页面空间。一般来说这些被占据的空间往往会比单纯的内容要大。因此,可以通过盒子的边框和距离等参数来控制内容的位置。

Div+CSS 盒子模型

说明:

1、Margin:中文叫外边距,主要作用是控制边框外(Border以外)的区域,外边距是透明的

2、Border:中文叫边框,是围绕在内边距(Padding)和内容外的边框。注意,它不是透明的

3、Padding:中文叫内边距,控制内容周围的区域,内边距是透明的

4、Content:内容,盒子的内容,显示文本和图像。

5、在Css文件中设置的Div的Css.width和Css. height就是内容的宽和高。

6、盒子实际尺寸有可能大于内容尺寸:

盒子模型的总宽度等于content(宽)+padding(左右)+border(左右)+margin(左右);

盒子模型的总高度等于content(高)+padding(上下)+border(上下)+margin(上下);

实例演示--原始样式

接下来通过实例演示的方式来一一讲解Margin、Border、Padding的作用和区别。

页面如图所示:


原始样式

代码:

HTML:
<body>
    <div class="TsetUpper"></div>
    <div class="TsetMiddle"></div>
    <div class="TsetDown"></div>
</body>
CSS:
.TsetUpper{
	width: 400px;
	height: 200px;
	background-color: black;
	position: relative;
	margin: auto;
	text-align: center;
}
.TsetMiddle{
	width: 600px;
	height: 200px;
	background-color: red;
	position: relative;
	margin: auto;
}
.TsetDown{
	width: 400px;
	height: 200px;
	background-color: black;
	position: relative;
	margin: auto;
	text-align: center;
}

Border

元素边框:我们可以在CSS边框属性中设置元素边框的样式和颜色。

按如下代码设置Div(TsetMiddle)的Border(边框):

border-style:solid;
border-width: 10px;
border-color: aqua;

刷新页面如下图:此时TsetMiddle这个盒子的总宽度已经变成200+30+30了,而且可以设置其底色和线条样式。

Border

Margin

margin 控制周围的元素区域。margin 没有背景颜色,是完全透明的。通过margin可以控制元素与四周元素的空隙距离;

按如下代码设置Div(TsetMiddle)的margin(外边距):

margin: 30px auto;

刷新页面如下图:此时TsetMiddle这个盒子的总宽度已经变成200+30(Border)+30(Margin)+30(Border)+30(Margin)了。

Margin

Padding

Padding:当元素的 padding(填充)内边距被清除时,所释放的区域将会受到元素背景颜色的填充。

按如下代码设置Div(TsetMiddle)的margin(外边距):

padding: 30px;

刷新页面如下图:此时TsetMiddle这个盒子的总宽度已经变成200+30(Padding)+30(Border)+30(Margin)+30(Padding)+30(Border)+30(Margin)了。

Padding

总结

1、各属性的值可以用px为单位,也可以用em,百分比等。

2、可以利用盒子的各种属性,调整其内容在父容器中的位置。