CSS进阶(四)——盒模型

1 基本概念

  • 页面的所有元素都可以看成一个盒子。
  • 盒子模型由content、padding、border、margin 四大属性构成

content:内容

  • 四大属性中的必填项。元素的内容可以是文本、图片等多种类型。
  • 我们可以通过width、height属性来设置元素内容的宽高,可以通过overflow属性处理内容溢出的情况。

padding:内边距

  • 内边距也称为“补白”,指元素内容和边框之间的距离。
  • 可以通过内边距的四个方向属性设置指定方向与边框的距离:padding-toppadding-rightpadding-bottompadding-left(也可以通过简写属性padding设置:上 右 下 左)

border:边框

  • 设置边框属性有三个属性:border-width(边框宽度)、border-style(边框类型)、border-color(边框颜色)。

margin:外边距

  • margin可以设定盒子与盒子之间的距离,可能是父子元素的距离,也可能是兄弟元素之间的距离。
  • margin也是CSS布局的一个重要手段。
  • margin的属性和padding样,可以指定上下左右四个方向的外边距:margin-topmargin-rightmargin-bottommargin-left(同样是顺时针,上右下左的顺序)。

2 深入border

  • border:0和border:none是不同的。区别如下:
    • border:0;把边框的宽度定义为0,虽然页面上看不见,但浏览器依然会进行渲染
    • border:none;定义无边框,页面上看不见,同时浏览器也不会进行渲染
    • 在IE6和IE7上会存在显示得不一样的兼容效果,性能上差别不大;

3 深入padding

  • 通过padding可以实现背景图片 + 偏移内容的按钮效果:

v2-b826890c603e9771f56ef75b596b9f6e_hd.jpg

 

4 外边距叠加

  • margin用来设置盒子与盒子之间的距离,但如果设置上下相邻的两个盒子的margin属性的话,会出现外边距叠加的情况:
  • 比如说A和B两个元素垂直相邻,A{margin-bottom:10px}B{margin-top:15px;},最终叠加的距离等于15px(取外边距的最大值)。
  • margin叠加的注意事项:
    • 只有垂直的外边距会叠加(margin-top+margin-bottom),而水平的外边距不会;
    • 外边距叠加最终的高度取外边距中的最大值;
    • 垂直外边距叠加,只会在三种情况下出现:同级元素叠加、父子元素叠加、空元素;
    • 只有blockinline-block元素才会有外边距叠加的情况,inline行内元素的margin-topmargin-bottom设置无效;
  • CSS之所以定义外边距叠加,初衷是为了更好的对文章进行排版,像文章的段落之间就是垂直相邻的,显然外边距叠加时只保留一个值排版更优美。

v2-a77ef20629eae2662cde36f74593d5c7_hd.jpg

  • 所以我们在实际的开发中,应当统一使用margin-top或统一使用margin-bottom,不要混用,从而可以降低出现问题的风险。

5.5 负margin技术

5.5.1 负margin简介

v2-1631c2db764a60888fc019b44a8ae4b2_hd.jpg

 

  • 在普通文档流中,设置负margin的元素流动方向是从右到左,从下到上;
  • 在浮动布局中,则是根据浮动的方向来定;

5.5.2 负margin技巧

  • 图片与文字对齐

v2-07a6a10f2c5afbd770de24e336dc5ad3_hd.jpg

 

  • 负margin实现自适应两列布局

v2-3660bd205d25c7208129b336e742385c_hd.jpg

 

  • 负margin实现元素垂直居中

v2-97dfef4d0d2eaf4c1e9901d5b617bd9d_hd.jpg

 

  • 通过margin-top:-1来实现选中tab的下边框效果

v2-fb054ec34ad896b5e42064ce0f01a4ac_hd.jpg

 

5.6 overflow

  • overflow四个属性来定义当内容溢出元素边框时的处理:
    • overflow:visible:默认值,溢出的内容可见;
    • overflow:hidden:溢出的内容隐藏,以免影响布局;
    • oveflow:scroll:通过滚动条显示内容溢出;
    • overflow:auto:和scroll相似,不同的是auto值溢出时,才显示;
  • 另外overflow:hidden可以清除浮动

 

转载于:https://my.oschina.net/chengxiancheng/blog/1634045

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值