一、块元素、行内元素和行内块元素

行内元素特征:
(1)设置宽高无效
(2)对margin仅设置左右方向有效,上下无效;padding设置上下左右都有效,即会撑大空间
(3)不会自动进行换行
块状元素特征:
(1)能够识别宽高
(2)margin和padding的上下左右均对其有效
(3)可以自动换行
(4)多个块状元素标签写在一起,默认排列方式为从上至下
行内块状元素特征:
(1)不自动换行
(2)能够识别宽高
(3)默认排列方式为从左到右

二、CSS 盒子模型(Box Model)

所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。
CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。
盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

下面的图片说明了盒子模型(Box Model):

CSS box-model
不同部分的说明:
Margin(外边距) - 清除边框区域。Margin没有背景颜色,它是完全透明
外边距:
不会影响可见框大小
但外边距会影响盒子的位置
一共有四个方向的外边距
margin-top 正值向下移动
margin-right
margin-bottom
margin-left正值向右移动
如果设置左和上边的外边距,则会移动元素自身,而设置下和右外边距则会移动其他元素
margin也可以设置负值,则元素会向相反的方向移动
默认情况下 设置margin-right没有任何作用
margin会影响到盒子实际占用空间大小

Border(边框) - 边框周围的填充和内容。边框是受到盒子的背景颜色影响
边框(border):边框属于盒子的边缘
边框的大小会影响到盒子的大小
要设置边框,至少设置三个样式
边框的宽度:border-width(会有默认值,一般是3px)
可以用四个值来指定四个方向的边框宽度(上边框 右边框 下边框 左边框)
三个值(上 左右 下)
两个值(上下 左右)
一个值(上下左右)
边框的颜色:border-color(也可以省略不写 默认是黑色)
同样可以分别指定四个边框的颜色,规则和border-width一样
边框的样式:border-style (默认值是None 表示没有边框)
solid表示实线
dotted表示点状虚线
dashed 表示线状虚线
double 双线效果
同样可以指定4个边框
border-width: 10px 20px 30px 40px;
除了border-width 还有一组border-xxx-width xxx可以是top right bottom left
border-top-width: 10px;
border-color: orange,red,blue,green;
border-style: solid;
border的简写属性:border:没有顺序要求
除了border还有四个 border-xxx (top right bottom left)

Padding(内边距) - 清除内容周围的区域。会受到框中填充的背景颜色影响
内边距(padding):
一共有四个方向的内边距 padding-top padding-right padding-bottom padding-left
内边距的设置会影响到盒子大小
背景颜色会延伸到内边距上
一个盒子的可见框大小,由内容区 内边距 和边框共同决定
所以在计算盒子大小时,需要将这三个区域加到一起计算

Content(内容) - 盒子的内容,显示文本和图像
默认情况下盒子可见框大小由内容区,内边距和边框共同决定
box-sizing:设置盒子尺寸的计算方式(设置width和height的作用)
可选值:
content-box 默认值 宽度和高度设置内容区大小
boder-box 宽度和高度设置整个盒子的可见框大小
width和height指定的是内容区和内边距和总框的大小

三、文档流

文档流(normal flow)
网页是一个多层的结构
通过CSS可以分别为每一层来设置样式
作为用户来讲只能看见最顶上一层
这些层中最底下的一层称为文档流,文档流是网页的基础
我们所创建的元素,默认是在文档流中进行排列
对于我们来说元素主要有两个状态
一个是在文档流中,
一个是不在文档流中(脱离文档流)

元素在文档流中的特点:

块元素:
块元素在页面中独占一行,自上向下垂直排列
默认宽度是父元素的全部(会把父元素撑满)
默认高度是被内容(子元素)撑开
行内元素:
行内元素不会独占页面一行,只占自身的大小
行内元素在页面中自左向右水平排列,如果一行中不能容纳下所有的行内元素,则元素会换到第二行
继续自左向右排列(书写习惯一致)
行内元素的默认宽度和高度都是被内容撑开

四、水平方向的布局

元素水平方向的布局:

元素在其父元素中水平方向的位置由以下七个属性共同决定:
margin-left
border-left
padding-left
width
padding-right
border-right
margin-right
一个元素在其父元素中必须满足以下等式:
margin-left + border-left + padding-left + width + padding-right + border-right + margin-right = 其父元素内容区的宽度(必须满足)
如果计算结果使等式不成立,则称其为过渡约束,则等式会自动调整
如果所有的值没有为 auto的情况则浏览器会自动调整margin-right以使等式满足
这七个值有三个值可以设置auto,width,margin-left margin-right(width的值默认是auto)
如果某个值为auto,则自动调整auto那个值使等式成立
如果将一个宽度和一个外边距设置为auto则宽度会调整到最大,设置为auto的外边距会自动为0
如果三个值都是auto则宽度为最大,外边距都是0
如果两个外边距是auto 宽度固定值,则将外边距会设置为相同的值
经常利用这个特点 使一个元素在其父元素中水平居中
示例:
width:xxpx;
margin:0 auto;
如果width值为1000
0+0+0+1000+0+0+(-200)=800 margin-right自动为-200

五、垂直方向的布局

默认情况下父元素高度会被内容撑开
子元素是在父元素的内容区中排列的
如果子元素大小超过了父元素,则子元素会从父元素中溢出
使用overflow来设置父元素如何处理溢出的子元素
可选值:
visible:默认值 子元素会从父元素中溢出,在父元素的外部显示
hidden: 溢出的内容将会被裁剪不会显示
scroll: 生成两个滚动条,通过滚动条来查看完整的内容
auto: 根据需要生成滚动条
overflow: visible;
overflow: hidden;
overflow: scroll;
overflow: auto;
overflow-x: 单独处理水平方向溢出
overflow-y: 单独处理竖直方向溢出

六、外边距的折叠问题

相邻的垂直方向外边距会发生折叠现象

兄弟元素:
兄弟元素间的相邻垂直外边距 会取两者之间的较大值(两者都是正值)
如果有相邻外边距一正一负,则取两者的和
如果相邻外边距两个都是负的则取绝对值大的
兄弟之间元素重叠是对开发有利的,不需要处理。
父子元素:
父子元素间的相邻外边距,子元素会传递给父元素(上外边距)
父子外边距的折叠会影响到页面的布局,必须要进行处理

七、行内元素的盒模型

行内元素不支持设置宽度和高度

行内元素可以设置padding,但是垂直方向不影响页面布局
行内元素可以设置border,但是垂直方向不影响页面布局
行内元素可以设置margin,但是垂直方向不影响页面布局
display 设置元素显示的类型
可选值:
inline:将元素设置为行内元素
block:将元素设置为块元素
inline-block 将元素设置为行内块元素
行内块,既可以设置宽度和高度又不会独占一行
table 将元素设置为一个表格
none 元素不在页面中显示
visibility:用来设置元素的显示状态
可选值:
visible 默认值 元素在页面中正常显示
hidden 元素在页面中隐藏 不显示(但位置会保留)

八、浏览器默认样式

可以引入重置样式表 reset.css normalize.css

reset.css直接去除了浏览器默认样式
normalize.css对默认样式进行了统一
默认样式:
通常情况下 浏览器会为元素设置一些默认样式
默认样式会影响到页面的布局,通常情况下
在编写网页时必须去除浏览器默认样式(PC端)

  *{margin: 0;padding:0;}

CSS盒子模型和水平、竖直方向的布局相关推荐

  1. 利用CSS使元素在水平方向或水平,竖直同时居中

    水平居中 三种方法,参考: <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset ...

  2. CSS | DIV 水平和竖直方向居中

    1.竖直方向: 最近做个小页面遇到了点麻烦:需要设置元素的竖直方向居中. 以往的经验: display: inline-block; vertical-align: middle; 就可以解决.但是这 ...

  3. 对象水平对齐,并且按照竖直方向排列

    ;; ;;程序名称:对象水平对齐程序,并且按照竖直方向排列 ;;执行命令:tb2 ;;程序功能:将选定的对象左对齐,并且按照竖直方向排列. ;; (defun c:tb2(/ selobjs oldc ...

  4. CSS盒子模型学习-02

    1.文档流 网页是一个多层结构,一层叠加一层:通过CSS可以分别为每一层来设置样式:作为用户来讲只能看到最顶上一层:这些层中,最底下的一层称为文档流,文档流是网页的基础. 我们所创建的元素默认都是在文 ...

  5. div+css盒子模型

    目录 文章目录 前言 css是什么? css的引入方式 选择器 字体和文本样式 选择器进阶 结构选择器 页面布局 盒子模型 浮动属性 定位属性 案例:底部半透明定位效果 综合案例:学成在线项目 总结 ...

  6. CSS 盒子模型及 float 和 position

    ## CSS和模型 ## CSS盒模型本质上是一个盒子,封装周围的 HTML 元素,包括 外边距(marign),边框(border),填充(padding),内容物(content) 盒子模型的类型 ...

  7. CSS盒子模型之CSS3可伸缩框属性(Flexible Box)

    CSS盒子模型(下) 一.CSS3可伸缩框(Flexible Box) 可伸缩框属性(Flexible Box)是css3新添加的盒子模型属性,有人称之为弹性盒模型,它的出现打破了我们经常使用的浮动布 ...

  8. [HTML/CSS]盒子模型,块级元素和行内元素

    目录 概述 盒子模型 块级元素 行内元素 可变元素 总结 概述 在div+css中,了解块级元素和行内元素还是非常有必要的,比如:对行内元素使用width属性就会失效.虽然自己不是做前端的,但是,在项 ...

  9. 前端基础之CSS盒子模型

    目录 长度单位 像素 百分比 em rem 颜色单位 RGB RGBA 文档流(normalflow) 盒子模型 内容区(content) 边框(border) 内边距(padding) 外边距(ma ...

最新文章

  1. 用eclipse生成可运行jar包、启动jar包及常见错误
  2. 如何向妻子解释面向对象设计(OOD)
  3. Future获取线程返回值能使线程顺序执行?
  4. php 下载.csv,php 文件流的形式下载csv
  5. 上传附件删除、session清空问题
  6. Eclipse常用快捷键与代码模板
  7. leetcode刷题:删除链表中的节点
  8. Java SpringMVC
  9. HTML知识积累及实践(一)- 标签样式
  10. Python JSONPath示例
  11. windows安装python3步骤_windows下python3第三方库安装方法总结
  12. 我的Android进阶之旅------Android【设置】-【语言和输入法】-【语言】列表中找到相应语言所对应的列表项
  13. [wechart] 微信小程序使用粘性定位position: sticky的注意事项(避坑)
  14. vue实现非同源图片的下载功能--跨域问题(解决浏览器打开图片,而不是下载)
  15. mmClassification学习笔记
  16. Unity学习2:如何实现个性化渲染平面(图文详细)
  17. SAP 自动记账 零星记录
  18. Django中.py文件详解
  19. 以太坊:过去、现在、未来
  20. grbl学习之旅---开始

热门文章

  1. docker入门之基础命令
  2. 【树莓派入门】树莓派如何更换桌面壁纸?
  3. 如何修改驱动使得NVIDIA Geforce GTX 970, 980, 980 TI and Titan X等显卡可以在Win XP/Win 2003 server x64下驱动?...
  4. 牛客练习赛13-B,幸运数字2
  5. American Fuzzy Lop(AFL)介绍
  6. 【工作复盘】2021年1月份工作复盘——2021年1月30日
  7. 【GNN报告】赵越-图神经网络与异常检测
  8. DayZ一键开服安装,开服工具,模组mod下载更新,工具!支持版本最新1.08--------1.03
  9. 解决:element切换tab时table的抖动问题
  10. HTML中div与span的区别,在HTML的网页布局里div与span有什么区别