diff --git "a/\344\270\201\346\235\250\346\202\246/20241021 css\345\256\232\344\275\215.md" "b/\344\270\201\346\235\250\346\202\246/20241021 css\345\256\232\344\275\215.md" new file mode 100644 index 0000000000000000000000000000000000000000..ec8a8144ffd39573bafd36d4ab0956b676ae388d --- /dev/null +++ "b/\344\270\201\346\235\250\346\202\246/20241021 css\345\256\232\344\275\215.md" @@ -0,0 +1,219 @@ +### css定位 +1. 静态定位 +* 默认定位:所有元素在默认情况下都是静态定位的。 +* 特点:静态定位的元素不受 top、right、bottom、left 和 z-index 属性的影响。 +* 用途:通常用于不需要特殊定位的普通文档流元素。 + +2. 相对定位 +* 相对自身定位:元素相对于其正常位置进行偏移。 +* 特点:使用 top、right、bottom、left 属性进行偏移,但元素仍占据原来的空间。 +* 用途:用于微调元素位置,同时保持元素在文档流中的原始位置。 + +3. 绝对定位 +* 相对包含块定位:元素相对于其最近的已定位(非 static)祖先元素进行定位。 +* 特点:脱离文档流,不占据空间;可以使用 top、right、bottom、left 属性精确定位。 +* 用途:用于创建复杂的布局,如弹出菜单、工具提示等。 + +4. 固定定位 +* 相对视口定位:元素相对于浏览器视口进行定位。 +* 特点:脱离文档流,不占据空间;即使页面滚动,元素也保持在固定位置。 +* 用途:用于创建固定在页面上的元素,如导航栏、返回顶部按钮等。 + +5. 粘性定位 +* 相对和固定定位的结合:元素根据用户的滚动位置在相对定位和固定定位之间切换。 +* 特点:在 top、right、bottom、left 属性指定的阈值内,元素表现为相对定位;超出阈值后,表现为固定定位。 +* 用途:用于创建在滚动时保持可见的元素,如表头、侧边栏等。 + +6. 包含块 +* 定义:定位元素的参考点或上下文。 +* 相对定位:包含块是元素的正常位置所在的块级框。 +* 绝对定位和固定定位:对于绝对定位,包含块是最近的已定位祖先元素;对于固定定位,包含块是视口。 + +7. z-index 属性 +* 定义:控制定位元素在 z 轴上的堆叠顺序。 +* 特点:仅对定位元素(非 static)有效。 +* 用途:用于解决元素之间的重叠问题。 + +8. position 属性值 +* static:默认值,元素按照正常的文档流进行布局。 +* relative:元素按照正常文档流进行布局,但会相对于其正常位置进行偏移。 +* absolute:元素从文档流中脱离,相对于其最近的非 static 定位祖先元素进行定位。如果没有这样的祖先元素,则相对于初始包含块(通常是浏览器窗口)。 +* fixed:元素从文档流中脱离,相对于浏览器窗口进行定位,即使页面滚动,元素也会停留在相同的屏幕位置。 +* sticky:元素根据用户的滚动位置进行定位。它的行为类似于 relative 定位,直到一个指定的滚动阈值被越过,然后它的行为类似于 fixed 定位。 + +9. 偏移属性 +* top:定义了元素顶部边缘与其包含块顶部边缘的距离。 +* right:定义了元素右边边缘与其包含块右边边缘的距离。 +* bottom:定义了元素底部边缘与其包含块底部边缘的距离。 +* left:定义了元素左边边缘与其包含块左边边缘的距离。 + +10. 定位上下文 +* 普通流:大多数元素默认的布局方式,元素按照HTML中的顺序,从上到下,从左到右排列。 +* 定位上下文:由 position 属性非 static 的元素创建的包含块,其子元素可以相对于这个新的包含块进行定位。 + +11. 层叠上下文 +定位元素可以创建层叠上下文,这影响了元素在Z轴上的堆叠顺序。层叠上下文由以下条件之一触发: + +* position 属性非 static 且 z-index 属性非 auto。 +* 元素的 opacity 属性小于 1。 +* 元素的 transform 属性非 none。 +* 元素的 filter 属性非 none。 +* 元素的 perspective 属性非 none。 +* 元素的 clip-path 属性非 none。 +* 元素的 mask 或 -webkit-mask 属性非 none。 +* 元素的 isolation 属性为 isolate。 + +12. 定位和尺寸 +* 当元素的 position 属性设置为 absolute 或 fixed 时,如果未指定宽度和高度,元素的尺寸可能会收缩以适应其内容。 +* 使用 margin、border 和 padding 可以调整定位元素的大小和位置。 + +13. 实践技巧 +* 使用 transform 属性进行定位,因为它不会引起文档的重排,只会引起重绘。 +* 避免使用 position: absolute; 对多个子元素进行定位,因为它会将元素从文档流中脱离,可能导致布局复杂化。 +* 使用 position: sticky; 可以实现在某个滚动范围内保持相对定位的效果,超出范围后变为固定定位。 +* 使用 z-index 属性控制元素的堆叠顺序,但要注意它只对定位元素有效。 + +示例代码 +```` +css +/* 相对定位 */ +.relative-box { + position: relative; + top: 20px; + left: 30px; +} + +/* 绝对定位 */ +.absolute-box { + position: absolute; + top: 20px; + right: 20px; +} + +/* 固定定位 */ +.fixed-box { + position: fixed; + bottom: 0; + left: 0; +} + +/* 粘性定位 */ +.sticky-box { + position: sticky; + top: 0; +} +```` + +#### 作业 +27.1 +代码: +```` + + + +
+
+ 8888 +
+
+ +```` +图示:![27.1](../作业图片/27.1.png) + +27.2 +代码: +```` + + + +
+ 8888
+
+

33333333333333

+
+ + + +```` +图示:![27.2](../作业图片/27.2.png) + +27.3 +代码: +```` + + + + +
+ 你来晚了 +
+ 我结婚了 + +
+
+ + +```` +图示:![27.3](../作业图片/27.3.png) \ No newline at end of file diff --git "a/\344\270\201\346\235\250\346\202\246/20241023 css\351\200\211\346\213\251\345\231\250\350\257\246\350\247\243.md" "b/\344\270\201\346\235\250\346\202\246/20241023 css\351\200\211\346\213\251\345\231\250\350\257\246\350\247\243.md" new file mode 100644 index 0000000000000000000000000000000000000000..52601ff2f9e2c27f7e513ec139a6283288297f3c --- /dev/null +++ "b/\344\270\201\346\235\250\346\202\246/20241023 css\351\200\211\346\213\251\345\231\250\350\257\246\350\247\243.md" @@ -0,0 +1,81 @@ +### css选择器 +```` + div 标签选择器 + + .box 类名选择器 + + #box id选择器 + + div p 后代选择器 + + div.box 交集选择器 + + div,p,span 并集选择器 + + div>p 子代选择器 + + * : 通配符 + + div+p: 选中div后面相邻的第一个p + + div~p: 选中的div后面所有的p +```` + +### 属性选择器 + +属性选择器的标志 + +性符号是 `[]`。 + +匹配含义: + +``` +^:开头 $:结尾 *:包含 +``` + +格式: + +- `E[title]` 选中页面的E元素,并且E存在 title 属性即可。 + +- `E[title="abc"]`选中页面的E元素,并且E需要带有title属性,且属性值**完全等于**abc。 + +- `E[attr~=val]` 选择具有 att 属性且属性值为:用空格分隔的字词列表,其中一个等于 val 的E元素。 + +- `E[attr|=val]` 表示要么是一个单独的属性值,要么这个属性值是以“-”分隔的。 + +- `E[title^="abc"]` 选中页面的E元素,并且E需要带有 title 属性,属性值以 abc 开头。 + +- `E[title$="abc"]` 选中页面的E元素,并且E需要带有 title 属性,属性值以 abc 结尾。 + +- `E[title*="abc"]` 选中页面的E元素,并且E需要带有 title 属性,属性值任意位置包含abc。 + +### 结构伪类选择器 + +伪类选择器的标志性符号是 `:`。 + +CSS中有一些伪类选择器,比如`:link`、`:visited`、`:hover`、`:active`、`:focus`。 + +CSS3又新增了其它的伪类选择器。这一小段,我们来学习CSS3中的**结构伪类选择器**:即通过**结构**来进行筛选。 + + +**1、格式:(第一部分)**(重要) + +- `E:first-child` 匹配父元素的第一个子元素E。 + +- `E:last-child` 匹配父元素的最后一个子元素E。 + +- `E:nth-child(n)` 匹配父元素的第n个子元素E。**注意**,盒子的编号是从`1`开始算起,不是从`0`开始算起。 + +- `E:nth-child(odd)` 匹配奇数 + +- `E:nth-child(even)` 匹配偶数 + +- `E:nth-last-child(n)` 匹配父元素的倒数第n个子元素E。 + +**2、格式:(第二部分)** + +- `E::first-letter` 设置元素 E 里面的**第一个字符**的样式。 + +- `E::first-line` 设置元素 E 里面的**第一行**的样式。 + +- `E::selection` 设置元素 E 里面被鼠标选中的区域的样式(一般设置颜色和背景色)。 \ No newline at end of file diff --git "a/\344\270\201\346\235\250\346\202\246/20241024 css\350\277\207\346\270\241 2(3)D\350\275\254\346\215\242 \345\212\250\347\224\273.md" "b/\344\270\201\346\235\250\346\202\246/20241024 css\350\277\207\346\270\241 2(3)D\350\275\254\346\215\242 \345\212\250\347\224\273.md" new file mode 100644 index 0000000000000000000000000000000000000000..ecfb3cc1fa5d5cc2d2d6389db9d6d2d806dda2ef --- /dev/null +++ "b/\344\270\201\346\235\250\346\202\246/20241024 css\350\277\207\346\270\241 2(3)D\350\275\254\346\215\242 \345\212\250\347\224\273.md" @@ -0,0 +1,356 @@ +### css动画 + +##### 文本 +1. text-shadow:设置文本的阴影 + +格式举例: + +```javascript + text-shadow: 20px 27px 22px pink; +``` + +参数解释:水平位移 垂直位移 模糊程度 阴影颜色。 + +2. 凹凸文字效果 +text-shadow 可以设置多个阴影,每个阴影之间使用逗号隔开 +格式举例: +```` +.tu { + text-shadow: -1px -1px 1px #fff, 1px 1px 1px #000; + } +```` + +##### 盒模型中的 box-sizing 属性 +这就需要用到 `box-sizing`属性。它的属性值可以是:`content-box`、`border-box` + +1. **外加模式:** + +```javascript + box-sizing: content-box; +``` + +解释:此时设置的 width 和 height 是**内容区域**的宽高。`盒子的实际宽度 = 设置的 width + padding + border`。此时改变 padding 和 border 的大小,也不会改变内容的宽高,而是盒子的总宽高发生变化。 + + +2. **内减模式:**【需要注意】 + +```javascript + box-sizing: border-box; +``` + +解释:此时设置的 width 和 height 是**盒子**的总宽高。`盒子的实际宽度 = 设置的 width`。此时改变 padding 和 border 的大小,会改变内容的宽高,盒子的总宽高不变。 + + +##### 私有前缀 +格式如下: + +```html + -webkit-: 谷歌 苹果 + -moz-:火狐 + -ms-:IE + -o-:欧朋 +``` + +格式举例如下: + +```css + background: -webkit-linear-gradient(left, green, yellow); + background: -moz-linear-gradient(left, green, yellow); + background: -ms-linear-gradient(left, green, yellow); + background: -o-linear-gradient(left, green, yellow); + background: linear-gradient(left, green, yellow); +``` + +##### 边框 +1. 边框圆角:`border-radius` 属性 +单个属性的写法: + +```css + border-top-left-radius: 60px 120px; //参数解释:水平半径 垂直半径 + + border-top-right-radius: 60px 120px; + + border-bottom-left-radius: 60px 120px; + + border-bottom-right-radius: 60px 120px; + +``` + +复合写法: + +``` + border-radius: 60px/120px; //参数:水平半径/垂直半径 + + border-radius: 20px 60px 100px 140px; //从左上开始,顺时针赋值。如果当前角没有值,取对角的值 + + border-radius: 20px 60px; +``` + +最简洁的写法:(四个角的半径都相同时) + +``` + border-radius: 60px; +``` + + +2. 边框阴影:`box-shadow` 属性 +格式举例: + +``` + box-shadow: 水平偏移 垂直偏移 模糊程度 阴影大小 阴影颜色 + + box-shadow: 15px 21px 48px -2px #666; +``` + +参数解释: + +- 水平偏移:正值向右 负值向左。 + +- 垂直偏移:正值向下 负值向上。 + +- 模糊程度:不能为负值。 + +另外,后面还可以再加一个inset属性,表示内阴影。如果不写,则默认表示外阴影。例如: + +``` + box-shadow:3px 3px 3px 3px #666 inset; +``` + +3.边框图片 +### 边框图片 + +边框图片有以下属性: + +```javascript + /* 边框图片的路径*/ + border-image-source: url("images/border.png"); + + /* 图片边框的裁剪*/ + border-image-slice: 27; + + /*图片边框的宽度*/ + border-image-width: 27px; + + /*边框图片的平铺*/ + /* repeat :正常平铺 但是可能会显示不完整*/ + /*round: 平铺 但是保证 图片完整*/ + /*stretch: 拉伸显示*/ + border-image-repeat: stretch; +``` + +我们也可以写成一个综合属性: + +```javascript + border-image: url("images/border.png") 27/20px round; +``` + +##### 过渡:transition + +transition 包括以下属性: + +- `transition-property: all;` 如果希望所有的属性都发生过渡,就使用all。 + +- `transition-duration: 1s;` 过渡的持续时间。 + +- `transition-timing-function: linear;` 运动曲线。属性值可以是: + - `linear` 线性 + - `ease` 减速 + - `ease-in` 加速 + - `ease-out` 减速 + - `ease-in-out` 先加速后减速 + +- `transition-delay: 1s;` 过渡延迟。多长时间后再执行这个过渡动画。 + +上面的四个属性也可以写成**综合属性**: + +```javascript + transition: 让哪些属性进行过度 过渡的持续时间 运动曲线 延迟时间; + + transition: all 3s linear 0s; +``` + + `transition-property: all`:意思是让盒子的所有属性(包括宽度、背景色等)在变化时都进行过渡 + + `transition-property: width`:意思是只让盒子的宽度在变化时进行过渡 + + ##### 2D转换 + 通过 `transform` 转换来实现 2D 转换或者 3D 转换。 + +- 2D转换包括:缩放、移动、旋转。 + +1. 缩放:`scale` +格式: + +```javascript + transform: scale(x, y); + + transform: scale(2, 0.5); +``` + +参数解释: x:表示水平方向的缩放倍数。y:表示垂直方向的缩放倍数。如果只写一个值就是等比例缩放。 + +取值:大于1表示放大,小于1表示缩小。不能为百分比。 + +2. 位移:translate + +格式: + + +```javascript + transform: translate(水平位移, 垂直位移); + + transform: translate(-50%, -50%); +``` + +参数解释: + +- 参数为百分比,相对于自身移动。 + +- 正值:向右和向下。 负值:向左和向上。如果只写一个值,则表示水平移动。 + +3. 旋转:rotate + +格式: + +```javascript + transform: rotate(角度); + + transform: rotate(45deg); +``` + +参数解释:正值 顺时针;负值:逆时针。 + +##### 3D 转换 +1. 旋转:rotateX、rotateY、rotateZ + +**3D坐标系(左手坐标系)** +浏览器的这个平面,是X轴、Y轴;垂直于浏览器的平面,是Z轴。 + +2. 移动:translateX、translateY、translateZ + +**格式:** + +```javascript + transform: translateX(100px); //沿着 X 轴移动 + + transform: translateY(360px); //沿着 Y 轴移动 + + transform: translateZ(360px); //沿着 Z 轴移动 + +``` + +3. 透视:perspective +- 作为一个属性,设置给父元素,作用于所有3D转换的子元素 + +- 作为 transform 属性的一个值,做用于元素自身。 + +4. 3D呈现(transform-style) +3D元素构建是指某个图形是由多个元素构成的,可以给这些元素的**父元素**设置`transform-style: preserve-3d`来使其变成一个真正的3D图形。属性值可以如下: + +```css + transform-style: preserve-3d; /* 让 子盒子 位于三维空间里 */ + + transform-style: flat; /* 让子盒子位于此元素所在的平面内(子盒子被扁平化) */ + +``` + +##### 动画 +1、定义动画的步骤 + +(1)通过@keyframes定义动画; + +(2)将这段动画通过百分比,分割成多个节点;然后各节点中分别定义各属性; + +(3)在指定元素里,通过 `animation` 属性调用动画。 + +```` +定义动画: + @keyframes 动画名{ + from{ 初始状态 } + to{ 结束状态 } + } + + 调用: + animation: 动画名称 持续时间; +```` +animation属性的格式如下: + +```javascript + animation: 定义的动画名称 持续时间 执行次数 是否反向 运动曲线 延迟执行。(infinite 表示无限次) + + animation: move1 1s alternate linear 3; + + animation: move2 4s; +``` + +### 2、动画属性 + +我们刚刚在调用动画时,animation属性的格式如下: + +animation属性的格式如下: + +```javascript + animation: 定义的动画名称 持续时间 执行次数 是否反向 运动曲线 延迟执行。(infinite 表示无限次) + + animation: move1 1s alternate linear 3; + + animation: move2 4s; +``` + + +可以看出,这里的 animation 是综合属性,接下来,我们把这个综合属性拆分看看。 + +(1)动画名称: + +```javascript + animation-name: move; +``` + +(2)执行一次动画的持续时间: + +```javascript + animation-duration: 4s; +``` + +备注:上面两个属性,是必选项,且顺序固定。 + +(3)动画的执行次数: + +```javascript + animation-iteration-count: 1; //iteration的含义表示迭代 +``` + +属性值`infinite`表示无数次。 + +(3)动画的方向: + +```javascript + animation-direction: alternate; +``` + +属性值:normal 正常,alternate 反向。 + +(4)动画延迟执行: + + +```javascript + animation-delay: 1s; +``` + +(5)设置动画结束时,盒子的状态: + +```javascript + animation-fill-mode: forwards; +``` + +属性值: forwards:保持动画结束后的状态(默认), backwards:动画结束后回到最初的状态。 + +(6)运动曲线: + +``` + animation-timing-function: ease-in; +``` + +属性值可以是:linear ease-in-out steps()等。 + +注意,如果把属性值写成**` steps()`**,则表示动画**不是连续执行**,而是间断地分成几步执行。我们接下来专门讲一下属性值 `steps()`。 diff --git "a/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/271.html" "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/271.html" new file mode 100644 index 0000000000000000000000000000000000000000..2153fd434da42329c05c461a46eb927dbbf70a88 --- /dev/null +++ "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/271.html" @@ -0,0 +1,74 @@ + + + + + + Document + + + +
+
+ +
+
+ + +
+
+ + +
+
+ + \ No newline at end of file diff --git "a/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/272.html" "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/272.html" new file mode 100644 index 0000000000000000000000000000000000000000..ec0280632472f4749d66b61fe7a4c35930307960 --- /dev/null +++ "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/272.html" @@ -0,0 +1,45 @@ + + + + + + Document + + + +
+
+ +

遥遥领先

+
+ + \ No newline at end of file diff --git "a/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/273.html" "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/273.html" new file mode 100644 index 0000000000000000000000000000000000000000..13500a872b64e45fb0ef54e6b2fab753fec451a5 --- /dev/null +++ "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/273.html" @@ -0,0 +1,46 @@ + + + + + + Document + + + +
+
+
+ + \ No newline at end of file diff --git "a/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/274.html" "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/274.html" new file mode 100644 index 0000000000000000000000000000000000000000..0927793ab3b3d5451c7afc0887dfe9c19a82abf4 --- /dev/null +++ "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/274.html" @@ -0,0 +1,93 @@ + + + + + + Document + + + +
+ + + + + + + + + + + + + +
+ + \ No newline at end of file diff --git "a/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/275.html" "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/275.html" new file mode 100644 index 0000000000000000000000000000000000000000..778a0c94ce452a739291daf65c8cb9cb09ccdac1 --- /dev/null +++ "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/275.html" @@ -0,0 +1,53 @@ + + + + + + Document + + + +
+
+
+
+ + \ No newline at end of file diff --git "a/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/28.1.html" "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/28.1.html" new file mode 100644 index 0000000000000000000000000000000000000000..80e343481659d8da057c3fa20d0c37c3043ee485 --- /dev/null +++ "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/28.1.html" @@ -0,0 +1,87 @@ + + + + + + Document + + + + +
+
+ + 《大鱼》
演唱:周深
海浪无声将夜幕深深淹没
漫过天空尽头的角落
+
+
+ + 《大鱼》
演唱:周深
海浪无声将夜幕深深淹没
漫过天空尽头的角落
+
+
+ + 《大鱼》
演唱:周深
海浪无声将夜幕深深淹没
漫过天空尽头的角落
+
+
+ + 《大鱼》
演唱:周深
海浪无声将夜幕深深淹没
漫过天空尽头的角落
+
+
+ + + \ No newline at end of file diff --git "a/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/28.2.html" "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/28.2.html" new file mode 100644 index 0000000000000000000000000000000000000000..4c4132a2d99ec49fc44840542ac0df80ee29c29f --- /dev/null +++ "b/\344\270\201\346\235\250\346\202\246/\344\275\234\344\270\232/28.2.html" @@ -0,0 +1,108 @@ + + + + + + Document + + + + +
+
+
+
+
+
+ + + \ No newline at end of file