mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
1408 字
4 分钟
前端学习笔记
2025-02-18
统计加载中...

block#

div 默认是一个 ```block“ 属性

block会默认自己占据独立的一行,并会占满父类的整个宽度

可以设置宽高,内外边距会推开其他元素。

以下是默认 display: block 属性的元素

名称作用
div定义文档中的分区或节,用于组合其他块级元素
p定义段落
h1-h6定义HTML标题,h1最大,h6最小
blockquote定义块引用,通常用于长引用
pre定义预格式文本,保留空格和换行
ul定义无序列表
ol定义有序列表
form定义供用户输入的HTML表单
  1. inline

行内元素,不会独占一行,

宽高(width&height)设置会忽略,这是因为它的大小是依据内容(content)决定

内外边距(margin)只会在水平推开别的元素

这是为您补充的几个HTML标签及其作用:

以下是默认 display: inline 属性的元素

名称作用
a定义超链接,用于从一个页面链接到另一个页面
span定义文档中的行内元素组合,用于对行内元素进行样式设置
code定义计算机代码文本,通常以等宽字体显示
strong定义重要文本,通常以粗体显示

inline-block#

inline-block 是 CSS 中 display 属性的一个值,它结合了行内元素和块级元素的特性。

inline-block 是 CSS 中 display 属性的一个值,它结合了行内元素块级元素的特性。

特性说明
同行显示像行内元素一样,可以多个元素并排在一行
可设宽高像块级元素一样,可以设置 widthheight
内外边距上下左右的内外边距(margin/padding)都能正常生效
不强制换行不会像块级元素那样在元素前后强制换行
.element {
display: inline-block;
width: 150px; /* 可以设置宽度 */
height: 100px; /* 可以设置高度 */
margin: 10px; /* 四周外边距都生效 */
padding: 20px; /* 四周内边距都生效 */
}

flex#

给父元素,定义属性后,父属性就是一个 flex 容器(flex container),它的子元素则叫(flex item)

如下图 main axis 为主轴,而cross axis为交叉轴,默认主轴从左到右,交叉轴从上到下

容器属性(父元素)

属性常用值作用
displayflex开启弹性布局
flex-directionrow(默认值) / column / row-reverse(从右到左) / column-reverse(从下到上)主轴方向(行/列)
flex-wrapwrap / nowrap是否换行
justify-contentcenter(主轴居中)/ space-around(间距相同) / space-between(除第1和n元素间距平分) / flex-start(flex起始点) / flex-end(终点) / space-evenly(所有间距相同)主轴对齐
align-itemscenter / stretch单行交叉轴对齐
align-contentstretch(默认值) / center / space-evenly多行交叉轴分布

项目属性(子元素)

属性常用值作用
flex-grow0 / 1剩余空间放大比例
flex-shrink1 / 0空间不足缩小比例
flex-basisauto / 100px项目初始尺寸
flex1 / none上面三个的简写
align-selfcenter / flex-start单个项目交叉轴对齐
order0 / -1排列顺序(越小越前)

grid#

父元素#

属性常用值作用
displaygrid开启网格布局
grid-template-columns100px 1fr 2fr / repeat(3, 1fr)定义列宽
grid-template-rows100px auto / repeat(2, 1fr)定义行高
gap10px / 20px 10px行列间距(行 列)
justify-itemsstretch / center / start / end单元格内水平对齐
align-itemsstretch / center / start / end单元格内垂直对齐
place-itemscenter stretchalign-items + justify-items 简写
justify-contentcenter / space-between整个网格水平对齐(容器大时)
align-contentcenter / space-around整个网格垂直对齐(容器大时)
grid-template-areas"header header" "sidebar main"区域命名布局

子元素#

属性常用值作用
grid-column1 / 3 / 1 / span 2跨列(起始/结束)
grid-row1 / 3 / 1 / span 2跨行(起始/结束)
grid-areaheader / 1 / 1 / 3 / 3放入命名区域 或 指定位置
justify-selfcenter / stretch / start / end单个项目水平对齐
align-selfcenter / stretch / start / end单个项目垂直对齐
place-selfcenter stretchalign-self + justify-self 简写

Flex vs Grid 快速选择#

场景推荐
一维布局(行或列)Flex
二维布局(行列都有)Grid
内容驱动(大小不确定)Flex
布局驱动(先画格子)Grid
导航栏/菜单Flex
整体页面框架Grid

CSS 定位#

position 属性#

特点参考系是否脱离文档流
static默认值,正常文档流
relative相对自身原位置偏移元素原本位置
absolute绝对定位最近的非static祖先
fixed固定定位视口(viewport)
sticky粘性定位父容器 + 视口特殊

偏移属性#

属性作用常用值
top距离参考系上边界0 / 10px / 20%
right距离参考系右边界0 / 10px / 20%
bottom距离参考系下边界0 / 10px / 20%
left距离参考系左边界0 / 10px / 20%
z-index层叠顺序(数值越大越靠上)1 / 999 / -1

1. relative(相对定位)#

.box {
position: relative;
top: 10px;
left: 20px;
}

2. absolute(绝对定位)#

把container当成参考系

.container {
position: relative;
}
.child {
position: absolute;
top: 0;
right: 0;
}

3. fixed(固定定位)#

滚动页面时始终可见

.header {
position: fixed;
top: 0;
left: 0;
width: 100%;
}

4. sticky(粘性定位)#

滚动到顶部时固定

.section-title {
position: sticky;
top: 0;
}

注意事项#

场景说明
z-index生效条件仅对非static定位元素有效
absolute参考系若祖先全static,参考根元素(html)
sticky限制父容器不能有overflow
fixed移动端在iOS下可能有兼容性问题

em和rem#

em,rem是允许浏览器控制字体大小的单位, px会写死

em#

用在font-size时,相对于自己的父元素计算大小

rem#

相对于根元素计算大小

分辨#

  • 用em定义组件内部元素间相互关联的尺寸。比如组件内标题比例, 与字体联动的内边距,图标大小等。谨慎在font-size上使用em。

  • 用rem定义与根元素相关的全局尺寸。比如正文基础字号,布局间 距,模块尺寸等。

  • 用px定义不应随任何因素缩放的固定尺寸。比如边框宽度,阴影偏 移,固定大小的媒体元素等。

css重置#

html {
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
margin: 0;
}

盒子尺寸控制#

box-sizing: content-box;
/* content-box为默认值, 它的计算方式为: border+padding+width/height */
box-sizing: border-box;
/* border-box则是 width和height定义从边框border开始计算 */
/* 其中的 content大小会依据 padding border 自动向内收缩计算 */
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

前端学习笔记
https://blog.cutebaka.cloud/posts/frontend/
作者
0x0AB8
发布于
2025-02-18
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时