盒子模型

盒子模型(Box Model)组成

概念: CSS 盒子模型本质上是一个盒子,封装周围的 HTML 元素,它包括:边框、外边距、内边距、和实际内容


外边距

边距声明顺序:上、右、下、左

居中
margin:0 auto;

外边距可以让块级盒子水平居中,但是必须满足两个条件:

  • 盒子必须指定了宽度width
  • 盒子左右的外边距都设置为 auto

注意:以上方法是让块级元素水平居中,行内元素或者行内块元素水平居中给其父元素添加 text-align:center 即可

边距负值
  h2 {
    border: solid 2px green;
    margin-left: -50px;
    margin-right: -50px;
    text-align: center;
  }

设置负边距后会溢出容器

外边距合并

使用 margin 定义块元素的垂直外边距时,可能会出现外边距的合并。 主要有两种情况:

  1. 相邻块元素垂直外边距的合并,合并后外边距和较大的相同



    解决方案:
    尽量只给一个盒子添加 margin 值

  2. 嵌套块元素垂直外边距的塌陷


另一种情况是单独为子元素设置上边距,父盒子被带下来

解决方案:
1 可以为父元素定义上边框。
2 可以为父元素定义上内边距。
3 可以为父元素添加 overflow:hidden(常用)
4 子元素margin-top改为padding-top(常用)

内边距(padding)

padding属性用于设置内边距,即边框与内容之间的距离

padding:top right bottem left;

给盒子指定padding值之后,发生了 2 件事情:

  1. 内容和边框有了距离,添加了内边距。
  2. padding影响了盒子实际大小。 也就是说,如果盒子已经有了宽度和高度,此时再指定内边框,会撑大盒子
    解决:如果保证盒子跟效果图大小保持一致,则让 width/height 减去多出来的内边距大小即可

注意:如果盒子本身没有指定width/height属性, 则此时padding不会撑开盒子大小

box-sizing
描述
content-box 元素width和height是内容大小,不包括内边距和边框
border-box 元素width和height包括内边距和边框
inherit 从父元素继承 box-sizing 属性的值
清除内外边距

网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致。因此我们在布局前,首先要清除下网页元素的内外边距

* {
  padding: 0; /* 清除内边距 */
  margin: 0; /* 清除外边距 */
}

注意:行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。但是转换为块级和行内块元素就可以了

边框(border)

border可以设置元素的边框,边框对块元素和行内元素都起作用。
border: 边框颜色 边框样式 边框宽度

div{
    border : border-width  border-style  border-color;
}

示例:

h2 {
    border-top-style: double;
    border-width: 8px;
        border-top-color: red;
}
圆角边框
div{
  border-radius: length;
  border-top-left-radius: length;
}

length可以为数值或百分比的形式
如果是正方形,想要设置为一个圆,把数值修改为高度或者宽度的一半即可,或者直接写为 50%

行内元素绘制圆角
em {
    border-radius: 50%;
    border-bottom: solid 2px red;
}
边框样式

border-style:none;

类型 描述
none 定义无边框
dotted 定义点状边框。在大多数浏览器中呈现为实线
dashed 定义虚线。在大多数浏览器中呈现为实线
solid 定义实线
double 定义双线。双线的宽度等于 border-width 的值
groove 定义 3D 凹槽边框。其效果取决于 border-color 的值
ridge 定义 3D 垄状边框。其效果取决于 border-color 的值
inset 定义 3D inset 边框。其效果取决于 border-color 的值
outset 定义 3D outset 边框。其效果取决于 border-color 的值
表格的细线边框

border-collapse属性控制浏览器绘制表格边框的方式,它控制相邻单元格的边框。
语法:

border-collapse: collapse; 

表示相邻边框合并在一起。边框会影响盒子实际大小

轮廓线

outline: 颜色 样式 大小

div {
  outline: red solid 2px;
}

元素在获取焦点时产生,并且轮廓线不占用空间。可以使用伪类:focus定义样式

  • 轮廓线显示在边框外面
  • 轮廓线不影响页面布局
线条样式

outline-style: double;

描述
none 默认。定义无轮廓
dotted 定义点状的轮廓
dashed 定义虚线轮廓
solid 定义实线轮廓
double 定义双线轮廓。双线的宽度等同于 outline-width 的值
groove 定义 3D 凹槽轮廓。此效果取决于 outline-color 值
ridge 定义 3D 凸槽轮廓。此效果取决于 outline-color 值
inset 定义 3D 凹边轮廓。此效果取决于 outline-color 值
outset 定义 3D 凸边轮廓。此效果取决于 outline-color 值
线条宽度

outline-width: 10px;

去除input获取焦点后的轮廓线
input:focus {
  outline: none;
}
display

display 控制元素的显示机制。display可以将行内元素转化为块级元素或行内块元素,或相反

选项 说明
none 隐藏元素
block 显示为块元素
inline 显示为行元素,不能设置宽/高
inline-block 行级块元素,允许设置宽/高
visibility

控制元素的显示隐藏,在隐藏后空间位也保留。

div {
  visibility: hidden;
}
选项 说明
hidden 隐藏
visible 可见,默认
collapse 当在表格元素中使用时,此值可删除一行或一列,但是它不会影响表格的布局,用在普通元素和hidden一致
inherit 和父元素一致
溢出控制

overflow:hidden;

选项 说明
hidden 溢出内容隐藏
scroll 显示滚动条(有些浏览器会一直显示,有些在滚动时显示)
auto 根据内容自动处理滚动条
尺寸定义

可以使用多种方式为元素设置宽、高尺寸
heightwidth可以设置以下值:

选项 说明
width 宽度
height 高度
min-width 最小宽度
min-height 最小高度
max-width 最大宽度
max-height 最大高度
fill-available 撑满可用的空间
fit-content 根据内容适应尺寸
响应式图片
img {
  max-width: 90%;
  min-width: 50%;
}

图片最大宽度不超过容器宽度90%,最小不低于容器的50%

fill-available


在chrome 浏览器中使用前缀-webkit-书写样式

span {
  background: #e67e22;
  display: inline-block;
  width: -webkit-fill-available;
  height: -webkit-fill-available;
}

上面是行块元素可以撑满可用空间

fit-content

根据内容自动适应宽度,让元素居中显示的效果


<div>baidu</div>
div {
  background: #e67e22;
  width: fit-content;
  margin: auto;
}

div元素不再独占一行,而是根据内容设置宽度,从而可以使用margin: auto;实现居中

max-content

容器尺寸按子元素最大宽度设置,子元素最大宽度是多少,容器宽度就是多少


<main>
  <div>www.baidu.com</div>
  <div>baidu</div>
</main>
main {
    width: max-content;
    margin: auto;
}

div {
    margin-bottom: 20px;
    background: #f1c40f;
    word-break: break-all;
    padding: 10px;
}
min-content

容器尺寸按子元素最小宽度设置,子元素最小宽度是多少,容器宽度就是多少


main {
     /* 宽度为子元素最小宽度 */
      width: min-content;
    /* 居中 */
      margin: auto;
}

div {
      margin-bottom: 20px;
      background: #f1c40f;
      word-break: break-all;
      padding: 10px;
}

div:nth-child(1) {
      width: 100px;
}
<body>
  <main>
    <div>baidu</div>
    <div>ali</div>
  </main>
</body>

子元素宽度最大为width: 100px;,父元素同样为100px

盒子阴影

box-shadow 属性为盒子添加阴影
box-shadow: h-shadow v-shadow blur spread color inset;

  1. h-shadow必须,水平阴影的位置,允许负值
  2. v-shadow必须,垂直阴影的位置,允许负值
  3. blur 可选,模糊距离
  4. spread 可选,阴影尺寸
  5. color 可选,阴影颜色
  6. inset可选,将外部阴影改为内部

注意:盒子阴影不占用空间,不会影响其他盒子排列
box-shadow可以同时设置多个值:
可以设置任意多个阴影,每个阴影互不干扰。

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

推荐阅读更多精彩内容