css盒子模型、垂直外边距合并
css盒子模型由四部分组成:内容(content)、填充(padding)、边框(border)、边距(margin),其中css样式中定义的width属性是定义内容区域的宽度,正常情况下,设置了内容区域的宽度后,再设置盒子的填充、边框、边距值,盒子在页面中实际占据的页面尺寸的计算是:
水平方向上::width+2*padding+2*border+2*margin,
垂直方向上::height+2*padding+2*border+2*margin,
不过需要注意的是行内元素,在不改变它的表现行为时,它是不能设置垂直方向上的填充值与边距值。
边距(margin)
边距描述的是盒子与盒子之间的距离,也就是在这个盒子的多远的距离可以放置另外一个盒子。 边距的设置中存在经典的问题:垂直外边距合并;常常出现在父元素与第一个子元素之间或者是垂直方向上的同级元素之间;表现为给元素设置上边距时,子元素与父元素之间或者父元素与它的同级元素之间没有像预期那样隔开距离,而是父元素与它的同级元素之间产生了外边距。
解决外边距合并的方法是:
1、浮动(float)
2、定位(position:absolute)
3、填充(padding),给父元素在垂直方向上设置填充,以隔开父级元素与子元素的边距;
4、边框(border),原理同上;
5、overflow:hidden;
其中,overflow:hidden 的作用并不止于解决垂直外边距合并,它还有清除浮动的作用;
填充(padding)
填充指的是在盒子的内部,距离盒子四周多远的距离之内才可以将盒子放进来,不过在内部的盒子可以通过改变自己的边距(margin)来修改自己与父元素盒子四周的距离而无视父元素内部填充的设置。元素设置了overflow:hidden,在它的填充区域内出现隐藏,而是超出边距则隐藏超出部分。
内容(content)
在css中设置的宽度与高度,是内容区域的宽高,但是有一个属性可以设置盒子的组成:
box-sizing:border-box|content-box|inherit
其中border-box代表在css中设置的width与height属性中包括了边框与填充;
content-box表示在css中设置的width与height属性只是内容区域的宽度与高度;
inherit是继承父元素。
<div class="wrapper">
<div class="border-box" style="width:200px;box-sizing:border-box;"></div> //在整个页面中所占的尺寸是200px
</div>
<div class="wrapper">
<div class="content-box" style="width:200px;box-sizing:content-box;"></div> //在整个页面中所占的尺寸计算为
水平方向上::width+2*padding+2*border+2*border,
垂直方向上::height+2*padding+2*border+2*border,
</div>
<div class="wrapper" style="width:200px;">
<div class="inherit" style="box-sizing:inherit;"></div> //继承父元素
</div>
css盒子模型、垂直外边距合并的更多相关文章
- CSS 垂直外边距合并:规范、延伸、原理、解决办法
<CSS 权威指南>第七章基本视觉格式化.p192,提到了 垂直外边距合并 的情况,解释总体算清晰,但是感觉不全且没有归纳成一条一条的,参考 CSS框模型中外边距(margin)折叠图文详 ...
- CSS min-height不能解决垂直外边距合并问题
垂直外边距合并有一种情况是嵌套元素的垂直外边距合并,当父级元素没有设定外边距时,在顶部或者底部边缘的子元素的垂直外边距就会和父级的合并,导致父级也有了“隐形”的垂直外边距. 当父级元素的min-hei ...
- 文本溢出、垂直外边距合并、BFC、hasLayout
今天学习文本溢出,又遇到了一些小问题,先上图: 关于文本溢出推荐:http://www.cnblogs.com/yzg1/p/5089534.html 从里面学习到单行文本和多行文本溢出, overf ...
- 【css基础】垂直外边距的合并
近期在重温<CSS权威指南>,还是想把基础再打坚固点,如今对垂直外边距的合并问题进行简单总结. 1. 两个块级元素的外边距都大于0时,取那个最大值作为两个块级元素的垂直边距 请看以下一个小 ...
- CSS 基础 例子 盒子模型及外边距塌陷
我们通常设置的宽度和高度,是指盒子模型中内容(content)的宽度和高度.元素的高度,还要加上上下padding和上下border,元素整个盒子的高度还要加上上下margin:宽度类似计算. 注意: ...
- CSS盒子模型以及外边框合并的问题
盒子模型 我们把布局里面的所有东西都可以想象成一个盒子,盒子里面又装着小盒子,小盒子里面又装着小小盒子......所以布局的万物基于盒子.即使一个小小的元素p,也可以把它抽象成为一个盒子.你现在心里有 ...
- 前端 CSS 盒子模型 padding 内边距 属性
padding:就是内边距的意思,它是边框到内容之间的距离 另外padding的区域是有背景颜色的.并且背景颜色和内容区域的颜色一样.也就是说background-color这个属性将填充所有的bor ...
- css的外边距合并或者外边距塌陷问题
第一种情况: 已知两个宽和高均为100px,margin均为20px的div垂直排列,现象如下图所示: 当设置css1的margin-bottom:40px:或者css2的margin-top:40p ...
- 前端学习(十三):CSS盒子模型
进击のpython ***** 前端学习--CSS盒子模型 在前面的时候也说过,包括分析网页结构的时候,提到了,网页就其实就是一个一个盒子叠起来的 那现在就是有装饰的盒子,难度就变得深刻 所以说为了能 ...
随机推荐
- js json.stringfy()和json.parse()的用法
1.JSON.parse;作用:将JavaScript对象表示法的JSON字符串转换为对象(字符串转对象)语法:JSON.parse(text [, reviver])text 必选. 一个有效的 J ...
- ArcMap操作随记(1)
1.用python代码,将属性表中属性进行合并 代码:'ID'+str(!FID!) 2.地类编码与地类的转换 以python为例 显示代码块(预逻辑脚本代码): def getType(value) ...
- springsecurity-01-0511
springsecurity-01-0511课堂代码 BaseController package com.springsecurity.springsecurity.controller; impo ...
- 使用pyautogui自动在某网站投票的脚本
网页自动投票: # !/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan import re import pypercli ...
- linux内存(一) 内核空间与用户空间
来自如下网站 https://www.cnblogs.com/sparkdev/p/8410350.html 内核空间和用户空间 对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间 ...
- Docker安装与基本命令
docker安装 Ubuntu 更新apt包索引 sudo apt-get update 更新apt包索引 sudo apt-get upgrade 安装docker sudo apt-get ins ...
- 反射操作dll类库之普通类和各种方法调用
一.使用方法 查找DLL文件, 通过Reflection反射类库里的各种方法来操作dll文件 二.步骤 加载DLL文件 Assembly assembly1 = Assembly.Load(" ...
- width:auto 和 width:100%有什么区别
width:auto 和 width:100%有什么区别 宽度计算不同 <div class="parent"> <span class="child& ...
- 把项目发布到tomcat中的方式
1.相对路径方式1:把项目index.html放在tomcat的webapps/ROOT下,浏览器访问地址:http://www.aaa.com:8080/index.html 2.相对路径方式2:在 ...
- 假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以 某个固定的已知的前缀开头的,如果将它们全部找出来?
使用 keys 指令可以扫出指定模式的 key 列表. 对方接着追问:如果这个 redis 正在给线上的业务提供服务,那使用 keys 指令会 有什么问题? 这个时候你要回答 redis 关键的一个特 ...