[前端]HTML盒模型与尺寸,标准文档流,块级元素、内联元素和行内块,CSS选择器

HTML盒模型与尺寸

浏览器把每个元素都看成一个矩形盒子,由4部分组成:content内容(文字/图片)、padding内边距(内容与边框之间)、border边框、margin外边距(盒子与盒子之间)。

**box-sizing属性:**控制元素尺寸计算规则的一个属性。content-box ,默认值/标准盒模型;border-box,常用/IE盒模型,怪异模型盒。

标准盒模型/IE盒模型的区别:设定的width和height,到底包不包含内边距(padding)和边框(border)。标准盒模型:宽高不包含padding和border(只管内容区的大小);IE 盒模型:宽高包含padding和border(管整个盒子的外框大小)。

项目中通常可以使用以下CSS代码进行全局重置:

复制代码
html {
  box-sizing: border-box;
}
*, *:before, *:after {
  box-sizing: inherit;  /* 让所有元素及伪元素都继承 border-box */
}

最常用全局样式(项目必写):

复制代码
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box; /* 让所有盒子宽度好计算 */
}

尺寸分两大类:固定单位(px) + 相对单位(%/em/rem/vw/vh)

px:物理像素(绝对尺寸);

%百分比:(相对父元素宽度);

em/rem(字体相对单位),em:相对于自身font-size,默认 1em=16px,rem:相对于html根标签font-size,移动端常用;、

vw/vh(视口单位,相对于浏览器可视区),1vw=可视宽度1%,全屏布局常用。

HTML标准文档流

标准文档流,普通流/正常流,normal flow,默认浏览器排版规则,元素天生在标准流里,浮动、定位会脱离标准流。

页面默认从上到下、从左往右排布,分两类排布规则:

1、块级元素 (block):垂直自上而下挨个独占一行,div、p、h1、u,默认:独占整行,从上往下依次堆放,默认宽度100%占满父容器。

2、 行内 / 行内块 (inline/inline-block):水平从左到右同行排列,span、a、img、input,在同一行从左往右排,一行放不下自动换行,尺寸由内容决定。

标准流三大特性:默认布局,不用加任何CSS,原生生效;元素位置互相挤占、互相影响:A元素位置变了,后面元素跟着挪位;遵循盒模型规则,margin正常塌陷、margin正常合并(上下外边距重叠)。

块级元素、内联元素和行内块

块级元素,display:block,独占一行,自动换行,width/height/padding/margin 全都生效(盒模型完整),默认宽度:撑满父容器100%。

内联元素,display:inline,同行排列,不换行,宽高设置无效 width/height不生效,大小由内容撑开,左右padding、左右margin生效;上下padding、上下margin无效。

行内块,display:inline-block,并排一行,默认缝隙(换行空格造成),width、height、padding、margin全部正常生效。

CSS选择器

CSS Selector:

1、基本选择器:元素选择器、类选择器、ID选择器和通配符(*)。

2、组合选择器:后代选择器(div p,div 里的所有 p)、子选择器(ul > li,直接子元素)、相邻兄弟(h1 + p,紧接在 h1 后的 p)、通用兄弟(h1 ~ p,h1之后的所有p)。

3、属性选择器:attr:有该属性、attr=value:属性值等于、attr\^=val:属性以val开头、attr$=val:属性以val结束、attr\*=val:属性包含val。

4、伪类选择器:a:hover、a:active、:focus、:nth-child(n)、:not(.active)。

5、伪元素选择器:p::before { content: ""; }、p::first-line { color: gray; }、::after(在后面插入内容)、::selection(选中文本)。

DOM提供:document.querySelector('CSS选择器')

选择器优先级:

!important > 行内样式 > ID选择器 > 类/属性/伪类 > 标签/伪元素 > 通配符

相关推荐
biu_biubiu11 小时前
我开源了 Codebook
前端·vue.js
下山11 小时前
怎么把带自研插件的 DeepSeek Harness 部署到云服务器
前端
彭亚川Allen12 小时前
985 在职研究生到底怎么样?是不是水硕?是不是.....?
前端·后端·程序员
YufJi12 小时前
两棵树,两个线程:一个小程序引擎的架构拆解
前端
super_Omni12 小时前
Chrome 插件入驻实战:从 Manifest V3 到过审上架的完整路径
大数据·前端·chrome
腾讯数据架构师12 小时前
任务跑完怎么直接出图表?CubeStudio 任务可视化 ECharts 数据格式实操(CSV/JSON + metric.json,11 种图表一键渲染)
前端·json·echarts·数据可视化
小小小米粒12 小时前
不是在构造方法「之前」修饰 Bean、注入;是构造方法跑完之后,才做属性注入,再跑 @PostConstruct。
前端
小李科技13 小时前
【性能优化】事件委托:目标定位与 React/Vue 实战
前端·vue.js·react.js·面试·性能优化·前端框架
QianhangQianping13 小时前
一块大屏的数据在浏览器里怎么变成画面:背景、子屏、前景三层结构
前端·低代码·架构·编辑器·数据可视化·大屏可视化
梦想很大很大13 小时前
让 Codex 自由发挥,给 nvm-desktop 换个 UI
前端·人工智能·设计