26、web前端开发之CSS3(三)
5. 文本(Text)
CSS3大大增强了对文本样式和排版的控制,使得网页设计更加灵活和多样化。本讲详细介绍CSS3中常用的文本相关属性,包括文本对齐、字体大小、行高、字母间距、单词拆分、溢出隐藏等,帮助开发者更好地控制和优化网页中的文本显示效果。
5.1. 文本对齐(text-align
)
text-align
属性用于控制块级元素(如div
、p
等)中的文本水平排列方式。通过合理使用text-align
,可以实现文本的左对齐、右对齐、居中对齐以及两端对齐。
属性值:
start
:将文本对齐到容器的开始边(通常是左边)。end
:将文本对齐到容器的结束边(通常是右边)。left
:将文本对齐到容器的左边。right
:将文本对齐到容器的右边。center
:将文本居中对齐。justify
:将文本对齐到容器的两端,调整空格以填充容器宽度。match-parent
:将文本对齐方式与父容器相同。
示例:
.text-align-center { text-align: center;
}
效果: 文本居中对齐。
5.2. 文本变换(text-transform
)
text-transform
属性用于控制文本的大小写显示方式,通过改变字母的大小写可以增强文本的视觉效果,尤其适用于标题和按钮设计。
属性值:
none
:不改变文本的大小写。uppercase
:将所有字母转换为大写。lowercase
:将所有字母转换为小写。capitalize
:将每个单词的首字母转换为大写,其余字母小写。inherit
:继承父容器的text-transform
属性值。
示例:
.title { text-transform: uppercase;
}
效果: 将所有字母转换为大写。
5.3. 字体大小(font-size
)
font-size
属性用于设置文本的字号大小,可以精确控制字体在屏幕上的显示尺寸。
属性值:
- 绝对单位:
px
(像素):基于屏幕像素的绝对测量。pt
(点):1点=1/72英寸,主要用于打印。pc
(派卡):1派卡=12点。
- 相对单位:
em
:相对于父元素的font-size
。rem
:相对于根元素的font-size
。%
:相对于父元素的font-size
。
示例:
.main-content { font-size: 1.5rem;
}
效果: 将文本字号设置为根元素字号的1.5倍。
注意事项:
- 使用
rem
单位可以更好地实现响应式设计,因为它基于根元素的字号,可以通过调整根字号来统一改变页面的字体大小。 - 使用相对单位比绝对单位更具灵活性,尤其是在需要适应不同屏幕尺寸的情况下。
5.4. 行高(line-height
)
line-height
属性用于设置文本行与行之间的距离,可以有效控制多行文本的间距,提升可读性。
属性值:
- 数值:可以是具体的数值,表示为
line-height: <number>
,数值越大,行距越大。 - 单位:可以是绝对单位(如
px
)或相对单位(如em
)。 normal
:根据浏览器的默认行距。inherit
:继承父容器的行距。
示例:
.paragraph { line-height: 1.6;
}
效果: 行距设置为字号的1.6倍。
最佳实践:
- 使用无单位的数值(如
1.6
)进行设置,这样数值会基于当前字体的font-size
自动计算,确保行距与字号成比例。 - 建议将
line-height
设置为1.2到1.6之间的值,以保证文本的可读性。
5.5. 字母间距(letter-spacing
)
letter-spacing
属性用于控制字母之间的间隙,通过调整间距可以实现更美观的排版效果,尤其在需要紧凑或松散的文本显示时非常有用。
属性值:
<length>
:可以是具体的长度值,如2px
、0.1em
等。normal
:使用浏览器的默认字母间距。inherit
:继承父容器的字母间距。
示例:
.tight-text { letter-spacing: -2px;
}
效果: 将字母之间的间隙减小2像素,实现紧凑的文本显示。
注意事项:
- 负值可以减少字母之间的间隙,正值则增加间隙。
- 过度调整
letter-spacing
可能会影响文本的可读性,应在视觉效果与可读性之间找到平衡。
5.6. 单词拆分(word-break
)
word-break
属性用于控制如何在单词之间进行断行,主要用于处理较长的单词或中文、日文等语言的文本排版。
属性值:
normal
:根据浏览器的默认断行规则。break-all
:允许在单词内部断行,所有的非CJK(中日韩)文本都可以被断开。keep-all
:仅允许在CJK文本的单词之间断行,非CJK文本不能被断开。inherit
:继承父容器的断行规则。
示例:
.break-word { word-break: break-all;
}
效果: 允许在单词内部断行,确保内容在容器内完全显示。
5.7. 溢出隐藏(text-overflow
)
text-overflow
属性用于控制当文本内容超过容器的显示区域时的显示方式。结合white-space
和overflow
属性,可以实现省略号的显示效果。
属性值:
clip
:直接截断多余的文本,不显示省略号。ellipsis
:在文本末尾显示省略号,表示内容被截断。string
:可以指定一个字符串来替代截断的部分(此值在现代浏览器中支持有限)。inherit
:继承父容器的溢出显示方式。
示例:
.ellipsis-text { text-overflow: ellipsis; white-space: nowrap; overflow: hidden;
}
效果: 当文本内容超过容器的显示区域时,末尾显示省略号“…”。
5.8. CSS3文本的实际应用
通过合理使用上述文本属性,可以实现多种创意设计,提升网页内容的可读性和视觉效果。以下是一些常见的实际应用场景:
1. 响应式排版
@media (max-width: 768px) { .content { font-size: 1rem; line-height: 1.4; }
}
效果: 在移动设备上调整字号和行距,确保文本的可读性和美观。
2. 标题样式
.title { text-transform: uppercase; letter-spacing: 2px; font-size: 2rem;
}
效果: 将标题转换为大写,增加字母间距,提升标题的视觉冲击力。
3. 文本溢出处理
.text-preview { display: inline-block; width: 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
效果: 将文本内容限制在200像素宽度内,超过部分用省略号表示,保持内容简洁。
4. 多行文本对齐
.article { text-align: justify; line-height: 1.6; word-break: break-all;
}
效果: 文本两端对齐,行距适中,确保长文本内容的美观排版。
5.9. 浏览器兼容性
在使用CSS3文本属性时,需注意不同浏览器的兼容性问题。虽然现代浏览器大多支持这些属性,但在旧版本浏览器中可能存在不兼容的情况。可以通过以下方式确保兼容性:
1. 使用厂商前缀
某些CSS3属性在早期浏览器中需要添加厂商前缀,如-webkit-
、-moz-
等。
示例:
.letter-spacing { -webkit-letter-spacing: 2px; -moz-letter-spacing: 2px; letter-spacing: 2px;
}
2. 提供回退值
为不支持新属性的浏览器提供默认值,确保基本功能的实现。
.word-break { word-break: break-all; /* 如果不支持break-all,回退到normal */
}
3. 使用自动化工具
利用工具如Autoprefixer,自动为CSS代码添加厂商前缀,确保在不同浏览器中的兼容性。
5.10. 最佳实践
在实际应用中,遵循以下最佳实践可以提升代码的质量和维护性,同时确保良好的用户体验:
- 使用相对单位: 优先使用
rem
和em
等相对单位,确保文本在不同设备和屏幕尺寸下仍然具有良好的可读性和适应性。 - 保持简洁清晰: 避免过度使用
text-transform
和letter-spacing
等属性,以免影响文本的可读性和自然流畅性。 - 考虑语言差异: 在处理不同语言的文本时,特别是CJK(中日韩)文本,合理使用
word-break
和text-align
属性,以确保排版的美观和规范。 - 测试和调试: 在不同浏览器和设备上进行充分的测试,确保文本属性的正确显示和效果。
- 文档与注释: 在代码中添加清晰的注释,解释复杂的文本样式设置,方便后期维护和团队协作。
5.11. 总结
CSS3的文本属性为网页设计提供了更加灵活和强大的控制能力。通过合理使用text-align
、text-transform
、font-size
、line-height
、letter-spacing
、word-break
和text-overflow
等属性,开发者可以实现丰富多样的文本显示效果,从提升可读性到实现创意设计,CSS3文本属性都能提供强有力的支持。在实际应用中,需要充分考虑浏览器兼容性和用户体验,遵循最佳实践,确保代码的高效性和可维护性。通过不断的实践和学习,开发者可以更好地掌握CSS3文本属性的使用方法,为网页设计增添更多精彩。
6. 颜色(Colors)
CSS3在颜色方面进行了显著的改进,增加了对多种颜色模式的支持,使得颜色的定义和应用更加灵活多样化。传统的CSS2主要使用十六进制颜色和RGB颜色,而CSS3则引入了 RGBA、HSL和HSLA等新颜色模式,为设计师提供了更多创作自由。以下将详细介绍CSS3中的各种颜色模式及其应用。
6.1. RGB 颜色
RGB颜色模式是通过定义红(Red)、绿(Green)、蓝(Blue)三个颜色通道的强度来显示颜色的,强度范围在0到255之间。通过调整这三个值,可以生成大量的颜色组合。
语法:
rgb(red, green, blue)
属性值:
red
:整数,范围0-255green
:整数,范围0-255blue
:整数,范围0-255
示例:
.example { background-color: rgb(255, 0, 0);
}
效果: 元素的背景颜色为纯红色。
6.2. RGBA 颜色
RGBA是在RGB的基础上增加了一个透明度(Alpha)通道。通过调整Alpha值,可以实现半透明效果,非常适合需要背景模糊或透明效果的场景。
语法:
rgba(red, green, blue, alpha)
属性值:
red
:整数,范围0-255green
:整数,范围0-255blue
:整数,范围0-255alpha
:小数,范围0-1
示例:
.example { background-color: rgba(255, 0, 0, 0.5);
}
效果: 元素的背景颜色为半透明的红色。
6.3. HSL 颜色
HSL颜色模式基于色调(Hue)、饱和度(Saturation)、亮度(Lightness)三个维度。与RGB相比,HSL更加符合人的色彩感知,设计师在选择颜色时更为直观。
语法:
hsl(hue, saturation%, lightness%)
属性值:
hue
:数值,范围0-360度saturation%
:百分比,范围0%-100%lightness%
:百分比,范围0%-100%
示例:
.example { background-color: hsl(0, 100%, 50%);
}
效果: 元素的背景颜色为纯红色,亮度设置为50%。
6.4. HSLA 颜色
HSLA是在HSL的基础上增加了一个透明度(Alpha)通道。通过调整Alpha值,可以实现半透明效果。
语法:
hsla(hue, saturation%, lightness%, alpha)
属性值:
hue
:数值,范围0-360度saturation%
:百分比,范围0%-100%lightness%
:百分比,范围0%-100%alpha
:小数,范围0-1
示例:
.example { background-color: hsla(0, 100%, 50%, 0.5);
}
效果: 元素的背景颜色为半透明的红色。
6.5. 十六进制颜色
十六进制颜色是CSS中最常用的颜色表示方法,通过六位十六进制数值来定义红、绿、蓝的强度。每两个字符代表一种颜色通道,范围从00
到FF
。
语法:#rrggbb
示例:
.example { background-color: #ff0000;
}
效果: 元素的背景颜色为纯红色。
6.6. 其他颜色单位
除了上述常用的颜色模式,CSS3还支持一些其他的颜色单位,如currentColor
、transparent
和颜色名称。
-
currentColor:
currentColor
表示使用当前的文本颜色。特别适合在设计上保持一致性时使用。
.example { border: 2px solid currentColor; }
-
transparent:
transparent
表示完全透明的颜色。
.example { background-color: transparent; }
-
颜色名称:
- CSS支持很多预定义的颜色名称,如
red
、blue
、white
等。
.example { background-color: red; }
- CSS支持很多预定义的颜色名称,如
6.7. 配色技巧与应用
在实际设计中,合理使用颜色模式可以提升设计的美观度和用户体验。以下是一些常见的配色技巧和应用场景。
-
品牌色一致性:
- 使用
currentColor
确保品牌色在整个设计中的一致性。
.brand { color: #007bff; } .brand:hover { background-color: currentColor; }
- 使用
-
半透明效果:
- 通过RGBA或HSLA设置半透明颜色,实现层叠效果。
.overlay { background-color: rgba(0, 0, 0, 0.7); }
-
动态调整颜色:
- 利用HSL模式,通过调整色调值生成一系列协调的颜色。
.theme-color { background-color: hsl(120, 70%, 50%); }
-
悬浮效果:
- 通过改变透明度或亮度实现悬浮时的视觉反馈。
.button { background-color: hsl(120, 70%, 50%); } .button:hover { background-color: hsl(120, 70%, 60%); }
6.8. 浏览器兼容性
在使用CSS3的新颜色模式时,需注意不同浏览器的兼容性问题。虽然现代浏览器大多支持这些颜色模式,但在旧版本浏览器中可能存在部分不支持的情况。
-
厂商前缀:
- 某些属性在早期浏览器中需要添加厂商前缀,如
-webkit-
、-moz-
等。
.example { background-color: -webkit-linear-gradient(to right, #ff0000, #00ff00); background-color: linear-gradient(to right, #ff0000, #00ff00); }
- 某些属性在早期浏览器中需要添加厂商前缀,如
-
回退值(Fallbacks):
- 为不支持新属性的浏览器提供回退值,确保基本功能的实现。
.example { background-color: #ff0000; /* 回退值 */ background-color: rgba(255, 0, 0, 0.5); }
-
自动化工具:
- 使用工具如Autoprefixer,自动为CSS代码添加厂商前缀,确保兼容性。
6.9. 最佳实践
在实际应用中,遵循以下最佳实践可以提升代码的质量和维护性,同时确保良好的用户体验。
-
使用半透明颜色:
- 优先使用RGBA或HSLA定义颜色,灵活控制透明度,提升视觉效果。
-
保持设计一致性:
- 定义全局颜色变量,确保整个项目的颜色一致性。
:root { --primary-color: #007bff; } .primary { color: var(--primary-color); }
-
提升性能:
- 避免过度使用复杂的颜色梯度和半透明效果,以减少浏览器的渲染负担。
-
考虑可读性:
- 保持代码清晰易读,适当添加注释,方便团队协作和维护。
-
响应式设计:
- 在响应式设计中,利用媒体查询动态调整颜色,提升不同设备下的显示效果。
@media (max-width: 768px) { .content { background-color: rgba(0, 0, 0, 0.8); } }
6.10. 总结
CSS3的颜色模式大大提升了网页设计的灵活性和表现力。通过RGB、RGBA、HSL、HSLA和十六进制等多种颜色模式,开发者可以根据设计需求灵活选择颜色定义方式。合理使用半透明效果、动态调整颜色和设计一致性的颜色变量,可以显著提升网页的视觉效果和用户体验。然而,在实际应用中,仍需关注浏览器兼容性问题,合理使用厂商前缀和回退值,确保跨浏览器的兼容性。通过不断的实践和学习,开发者可以更加熟练地掌握和应用CSS3的多样化颜色模式,打造更加精致和专业的网页设计。
7. 过渡(Transitions)
CSS3引入了过渡(Transitions)功能,使得网页的交互更加流畅和自然。通过过渡,可以实现CSS属性在一定时间内平滑地从一个值过渡到另一个值,从而避免了属性变化的突兀感。以下将详细讲解CSS3过渡的基本使用、多属性过渡、过渡函数、实际应用及最佳实践。
7.1. 过渡的基本概念
CSS3过渡允许CSS属性在一定时间内平滑地从一个值过渡到另一个值。这个效果可以应用于任何可以测量的CSS属性,如width
、height
、opacity
、transform
等。通过过渡,可以增强用户体验,使界面更加动态和交互性更强。
7.2. 过渡的基本语法
过渡可以通过transition
这个简写属性来设置,包括要过渡的属性、过渡时长、过渡函数和过渡延迟等。以下是一个基本的示例:
.transition { transition: all 0.3s ease-in-out;
} .transition:hover { transform: scale(1.1);
}
- transition: 简写属性,用于设置过渡效果。
all
: 表示所有可以过渡的CSS属性。0.3s
: 过渡的时长为0.3秒。ease-in-out
: 过渡的动画函数。
当用户悬停在.transition
元素上时,transform
属性的值从scale(1)
变为scale(1.1)
,并伴随一个平滑的过渡效果。
7.3. 过渡的子属性
transition
是一个简写属性,可以拆分为以下几个子属性来更精确地控制过渡效果:
-
transition-property:指定要过渡的CSS属性。
-
可能的值:
all
、none
、特定的CSS属性名。 -
示例:
.example { transition-property: width, height; }
-
-
transition-duration:指定过渡的时长。
-
可能的值:时间单位(如
0.3s
)。 -
示例:
.example { transition-duration: 0.3s, 0.5s; }
-
-
transition-timing-function:指定过渡的动画函数。
-
可能的值:
linear
、ease-in
、ease-out
、ease-in-out
、cubic-bezier()
。 -
示例:
.example { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }
-
-
transition-delay:指定过渡开始前的延迟时间。
-
可能的值:时间单位(如
0.1s
)。 -
示例:
.example { transition-delay: 0.1s; }
-
通过合理设置这些子属性,可以实现更加复杂和精细的过渡效果。
7.4. 多属性过渡
在某些情况下,可能需要对多个CSS属性同时应用过渡效果。可以通过在transition
属性中指定多个属性和相关时长来实现这一点。
.multiple-transition { transition: width 0.3s, height 0.5s;
}
在这个示例中,width
属性的过渡时长为0.3秒,而height
属性的过渡时长为0.5秒。这样,可以实现不同属性有不同过渡时长的效果。
7.5. 过渡函数
过渡函数(transition-timing-function
)用于定义属性值在过渡过程中如何变化。CSS3提供了多种预定义的过渡函数,以及允许开发者自定义的cubic-bezier
函数。
预定义的过渡函数:
- linear:线性过渡,速度始终保持不变。
- ease-in:起始时速度较慢,加速进行。
- ease-out:结束时速度较慢,减速进行。
- ease-in-out:起始和结束时速度较慢,中间速度较快。
自定义的cubic-bezier函数:
可以通过cubic-bezier(x1, y1, x2, y2)
来定义自定义的过渡函数。四个参数定义了一个三次贝塞尔曲线,用于描述过渡的速度曲线。
.custom-timing-function { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
在这个示例中,过渡函数会根据定义的贝塞尔曲线,改变过渡的速度和流畅度。
7.6. 过渡的实际应用
以下是一些常见的实际应用场景,展示了如何在不同情况下使用过渡效果来提升用户体验。
1. 鼠标悬停效果:
.button { background-color: #007bff; transition: background-color 0.3s ease-in-out;
} .button:hover { background-color: #0056b3;
}
效果: 按钮的背景颜色在悬停时平滑地从#007bff
变为#0056b3
,形成一个渐变效果。
2. 尺寸变化:
.card { width: 200px; transition: width 0.5s ease-out;
} .card:hover { width: 300px;
}
效果: 卡片的宽度在悬停时从200px平滑地扩展到300px,形成一个过渡的扩展效果。
3. 不透明度渐变:
.overlay { opacity: 0; transition: opacity 0.5s ease-in;
} .overlay:hover { opacity: 1;
}
效果: 遮罩层的不透明度在悬停时从0逐渐变为1,形成一个淡入的效果。
4. 多属性过渡:
.multiple-effect { width: 200px; height: 200px; background-color: #007bff; transform: scale(1); transition: width 0.3s, height 0.5s, background-color 0.4s ease-in-out, transform 0.6s;
} .multiple-effect:hover { width: 300px; height: 250px; background-color: #0056b3; transform: scale(1.1);
}
效果: 在悬停时,.multiple-effect
元素的宽度、高度、背景颜色和缩放比例同时发生变化,并且每个属性的过渡效果有不同的时长和动画函数,形成一个复杂但流畅的过渡效果。
5. 减速和加速效果:
.acceleration { width: 100px; height: 100px; background-color: #007bff; transition: width 0.5s ease-out, height 0.5s ease-in;
} .acceleration:hover { width: 150px; height: 150px;
}
效果: 在悬停时,.acceleration
元素的宽度和高度分别以不同的加速和减速曲线进行过渡,宽度减速,高度加速,形成一个自然流畅的动画。
7.7. 过渡与动画的区别
CSS3不仅提供了过渡,还引入了动画(Animations),这两个功能常常被混淆。以下是两者的主要区别:
- 触发方式:
- 过渡:通常由用户交互(如悬停、点击)或内容的更改触发。
- 动画:可以通过
@keyframes
自定义关键帧,并在元素加载时或在特定事件下触发。
- 复杂度:
- 过渡:适用于简单的属性变化,语法相对简单。
- 动画:适用于复杂的多步动画,允许详细控制每个阶段的样式。
- 控制:
- 过渡:只能在起点和终点进行控制,不可中途停止或暂停。
- 动画:可以使用
animation
属性控制播放、暂停、反向播放等。
7.8. 过渡的性能考虑
虽然CSS3过渡大大提升了用户体验,但在实际应用中,需要注意以下性能方面的考量:
- 属性选择:
- 确保只对可以过渡的属性应用过渡效果。例如,
transform
和opacity
等属性的过渡对性能影响较小,而width
和height
等可能会导致重排(Layout Thrashing),影响性能。
- 确保只对可以过渡的属性应用过渡效果。例如,
- 动画函数:
- 使用合理的动画函数,避免使用复杂的自定义
cubic-bezier
曲线,可能会增加浏览器的计算负担。
- 使用合理的动画函数,避免使用复杂的自定义
- 延迟(transition-delay):
- 合理设置过渡延迟,避免过长的延迟导致用户体验不佳。
- 简化过渡:
- 避免在大量元素上同时应用过渡效果,以减少浏览器的渲染压力。
7.9. 浏览器兼容性
在使用CSS3过渡时,需要考虑不同浏览器的兼容性问题。尽管现代浏览器大多支持过渡属性,但在旧版本浏览器中可能需要添加厂商前缀,或者提供回退方案。
添加厂商前缀:
.example { -webkit-transition: all 0.3s ease-in-out; -moz-transition: all 0.3s ease-in-out; -ms-transition: all 0.3s ease-in-out; -o-transition: all 0.3s ease-in-out; transition: all 0.3s ease-in-out;
}
提供回退值:
.example { background-color: #007bff; /* 回退值 */ background-color: rgba(0, 123, 255, 0.5); -webkit-transition: background-color 0.3s ease-in-out; transition: background-color 0.3s ease-in-out;
}
通过添加厂商前缀和回退值,可以确保过渡效果在不同浏览器中的一致性和基本功能的实现。
7.10. 最佳实践
在实际应用中,遵循以下最佳实践可以提升过渡效果的质量和用户体验,同时确保代码的可维护性和性能。
-
优先使用transform和opacity:
- 这些属性的过渡对性能影响较小,且广泛支持。
.performant-transition { transform: scale(1); transition: transform 0.3s ease-in-out; } .performant-transition:hover { transform: scale(1.1); }
-
保持过渡简洁:
- 避免过多的过渡属性和复杂的过渡函数,以保持代码的简洁和可读性。
.simple-transition { transition: all 0.3s ease-in-out; }
-
合理使用过渡延迟:
- 避免设置过长的延迟,以免影响用户体验。
.delayed-transition { transition: background-color 0.3s ease-in-out 0.1s; }
-
使用预定义的过渡函数:
- 除非需要特别的动画效果,否则优先使用预定义的过渡函数,如
ease-in-out
,以确保一致性和可读性。
.standard-timing { transition-timing-function: ease-in-out; }
- 除非需要特别的动画效果,否则优先使用预定义的过渡函数,如
-
响应式设计:
- 在响应式设计中,利用媒体查询动态调整过渡效果,优化不同设备和屏幕尺寸下的表现。
@media (max-width: 768px) { .responsive-transition { transition: transform 0.3s ease-in-out; } }
-
测试和优化:
- 在不同浏览器和设备上进行充分的测试,确保过渡效果的兼容性和一致性。
- 使用浏览器的开发者工具(如Chrome DevTools)来分析和优化过渡效果的性能。
-
文档与注释:
- 在代码中添加清晰的注释,解释过渡效果的设计意图和实现方式,方便团队协作和后期维护。
7.11. 总结
CSS3过渡为网页设计带来了更多的灵活性和创意空间。通过合理地使用transition
属性及其子属性,可以实现平滑的属性变化,提升用户体验。然而,在实际应用中,需要综合考虑性能、兼容性和可维护性。通过遵循最佳实践,选择合适的属性和过渡函数,并在不同浏览器中进行充分的测试,可以确保过渡效果的良好实现和跨平台的一致性。过渡与动画的结合使用,更能为网页添加丰富的交互效果,吸引用户的注意力,提升整体的设计质量。通过不断的学习和实践,开发者可以更好地掌握CSS3过渡的使用方法,为网页设计增添更多精彩和活力。
相关文章:
26、web前端开发之CSS3(三)
5. 文本(Text) CSS3大大增强了对文本样式和排版的控制,使得网页设计更加灵活和多样化。本讲详细介绍CSS3中常用的文本相关属性,包括文本对齐、字体大小、行高、字母间距、单词拆分、溢出隐藏等,帮助开发者更好地控制和…...
第 8 章:使用更好的库_《C++性能优化指南》_notes
使用更好的库 第八章核心知识点解析编译与测试建议总结优化原则重点内容:第一部分:多选题(10题)第二部分:设计题答案与解析多选题答案:设计题答案示例(部分): 测试用例设…...
【面试八股】:常见的锁策略
常见的锁策略 synchronized (标准库的锁不够你用了)锁策略和 Java 不强相关,其他语言涉及到锁,也有这样的锁策略。 1. 悲观锁,乐观锁(描述的加锁时遇到的场景) 悲观锁:预测接下来…...
Apache Iceberg 解析,一文了解Iceberg定义、应用及未来发展
什么是 Iceberg? Apache Iceberg 是一种开源的 表格式(Table Format) ,专为超大规模数据分析场景设计,通过标准化数据存储规范与访问协议,解决了传统数据湖在元数据管理、事务控制、查询性能等方面的核心痛…...
Ubuntu 优化启动时间优化
优化 Ubuntu 20.04 的启动时间可以从多个方面入手,以下是详细的步骤和建议: 一、分析启动耗时 首先检查系统启动各阶段的耗时: systemd-analyze time # 查看整体启动时间 systemd-analyze blame # 列出各服务/进程的启动耗时 …...
【Git 常用指令速查表】
Git 常用指令速查表 Git 常用指令速查表目录1. 初始化仓库2. 提交代码流程3. 分支管理4. 远程仓库操作5. 撤销操作6. 查看状态与日志7. 其他实用指令完整操作示例常用场景速查表 Git 常用指令速查表 目录 初始化仓库提交代码流程分支管理远程仓库操作撤销操作查看状态与日志其…...
Linux实用操作及命令
一、各类小技巧(快捷键) 1、强制停止(ctrlc) Linux某些程序的运行,如果想要强制停止它,可以使用快捷键ctrl c 命令输入错误,也可以通过快捷键ctrl c,退出当前输入,重…...
洛谷 P10516 数据结构 Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an) 和 b ( b 1 , b 2 , ⋯ , b n ) b(b_1,b_2,\cdots,b_n) b(b1,b2,⋯,bn),有 m m m 个操作分三种: add ( l , r , k , t ) \operatorname{ad…...
在IDEA中使用TortoiseSVN
一、前言 原版SVN由于下载路径中没有svn.exe文件,导致IDEA中无法使用命令行提交项目代码,因此,现在卸载旧版本TortoiseSVN,下载附有svn.exe的新版TortoiseSVN,下载使用过程记录如下 二、下载过程 卸载就在 控制面板…...
基于 ffmpeg 实现合并视频
ffmpeg是一个强大的多媒体处理工具,支持视频文件的合并。 列出目录下所有MP4文件 import os import glob# 当前目录 directory os.getcwd() directory "/directory/to/mp4/*"# 列出目录下所有MP4文件 files glob.glob(directory)# 排序 files.sort(…...
如何在 HTML 中嵌入外部字体,有哪些注意事项?
大白话如何在 HTML 中嵌入外部字体,有哪些注意事项? 在 HTML 里嵌入外部字体,能让网页文字更有个性,瞬间提升页面的吸引力。下面就来详细说说怎么嵌入外部字体,以及其中的注意事项。 嵌入外部字体的方法 1. 使用 fo…...
三极管原理及应用
一、结构 基极(Base,符号:B) 基极是三极管的控制端,用于输入控制信号。通过基极电流的大小,可以控制集电极与发射极之间的电流导通程度,实现电流放大或开关功能。 发射极(Emitter&…...
三个串口同时打开并指定数据包控制指令思想
可以对嵌入式串口数据包指令设置做一次总结: 首先确定你的数据包大小,传统的接收串口数据到数组存储会出现需要循环遍历数组去读取数据的弊端,所以我设计了一个机制,只有当你想要读取外界指令时,才开始读取外界发过来…...
“征服HTML引号恶魔:“完全解析手册”!!!(quot;表示双引号)
🚨📢 "征服HTML引号恶魔:“完全解析手册” 📢🚨 🎯 博客引言:当引号变成"恶魔" 😱 是否遇到过这种情况: 写HTML时满心欢喜输入<div title"他…...
MQL5教程 04 脚本开发实战、指标开发基础
文章目录 一、脚本开发实战1、给脚本设置快捷键2、运行时显示输入参数界面3、开市价单4、一键平仓5、修改止盈止损6、一键删除当前图表所有挂单 二、指标开发基础 一、脚本开发实战 1、给脚本设置快捷键 在MT5导航栏中,选定脚本,鼠标右击 → 设置热键 …...
【Qt】Ubuntu22.04使用命令安装Qt5和Qt6
1、安装Qt5 注意:Ubuntu22.04已经没有 qt5-default ,因此不能一键安装啦 1)安装核心组件 sudo apt install qtbase5-dev qtchooser qt5-qmake qtcreator2)安装QtCreator sudo apt install qtcreator3)安装工具包、Qt Quick 开发的核心库(qtdeclarative5-dev) sudo a…...
海康设备http监听接收报警事件数据
http监听接收报警事件数据 海康获取设备报警事件数据两种方式: 1、sdk 布防监听报警事件数据(前面文章有示例) 2、http监听接收报警事件数据 http监听接收报警事件数据,服务端可以使用netty通过端口来监听获取事件数据。 WEB 端…...
【MVCC快照如何实现】
MVCC(多版本并发控制)快照的实现原理 MVCC(Multi-Version Concurrency Control)是现代数据库实现事务隔离级别的核心技术,它通过数据多版本和快照机制来实现高效的并发控制。下面我将详细解析MVCC快照的实现机制。 一、MVCC核心组件 1. 版本链结构 MVCC通过以下…...
STM32中不同FLASH的芯片启动文件选择规则
F103ZET6的FLASH大小是512K,所以选择startup_stm32f10x_hd.s F103C8T6的FLASH大小是64K,所以选择startup_stm32f10x_md.s 移植需要注意的事项: 从ZET6到C8T6,需要更改 1)启动文件 2)C/C选项卡...
树莓集团商业模式解析:树莓集团是国企吗?
树莓集团作为中国市场的重要企业实体,其所有制性质一直受到业界关注。从公开资料显示,树莓集团并非传统意义上的国有企业,而是一家具有混合所有制特征的现代化企业集团。其股权结构中既包含国有资本成分,也吸纳了社会资本和民营投…...
mock.js模拟数据
MOCK模拟后端数据 1.按照mock.js npm install mockjs2.在src目录下建立mock目录,在该目录下建立index.js文件,该文件中写上你所需要的数据,示例如下: import Mock from mockjs let data Mock.mock("/data/person",&…...
如何自动规整化(格式化)HTML
如果你想要自动规整化(格式化)HTML,可以使用以下方法: 方法 1:使用 VS Code 进行 HTML 格式化(推荐) 步骤 安装 Visual Studio Code打开你的 HTML 文件按下 Shift Alt F(Windows…...
MySQL数据库入门
目录 前言 一、安装软件 二、普通指令使用 三、MySQL接口API相关函数 1、API函数使用步骤 2、mysql_init-MYSQL对象初始化 3、mysql_real_connect()——数据库引擎建立连接 4、mysql_close()——关闭数据库连接 5、mysql_query()——查询数据库某表内容 6、mysql_stor…...
SpringBoot集成Couchbase开发与实践
1 前言 1.1 什么是Couchbase Couchbase 是一个高性能的 NoSQL 数据库,支持文档存储、内存缓存和分布式计算。它结合了内存数据库的速度和灵活性与传统数据库的持久性和查询能力。 1.2 Couchbase的特点与优势 高性能:利用内存缓存加速数据访问。可扩展性:支持水平扩展,能…...
一周掌握Flutter开发--8. 调试与性能优化(上)
文章目录 8. 调试与性能优化核心技能8.1 使用 Flutter DevTools 分析性能8.2 检查 Widget 重绘(debugPaintSizeEnabled)8.3 解决 ListView 卡顿(ListView.builder itemExtent) 其他性能优化技巧8.4 减少 build 方法的调用8.5 使用…...
动态路由机制MoE专家库架构在多医疗AI专家协同会诊中的应用探析
随着医疗人工智能技术的飞速进步,AI在医学领域的应用日益增多,尤其是在复杂疾病的诊断和治疗中,AI技术的应用带来了巨大的潜力。特别是动态路由机制混合专家(Mixture of Experts,MoE)架构,因其灵活、高效的特点,正逐渐成为实现多AI专家协同会诊的关键技术。通过将多个不…...
Linux上位机开发实践(开源框架和开源算法)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 做嵌入式软件开发,如果软件本身比较简单,只是图形界面显示,那么相关的开发工作并不难。最主要的内容也就是数据…...
算法时间复杂度分析
1. 基本概念 大 O 符号 O(f(n)) 表示算法的最坏情况复杂度,即算法在最不利情况下所需的基本操作数不会超过 O(f(n))的级别。例如,表示当输入规模 n 增大时,算法运行时间上界是某个常数乘以 。 Ω 符号 Ω(f(n)) 表示算法的下界,即…...
数据库基础知识点(系列五)
创建表,设置约束,修改表,删除表,表中数据的操作(insert,修改,删除) 1.在第5章习题创建的 “仓库库存”数据库中完成下列操作。 (1)创建“商品”表,表结构如表6-4: 表6-4 “goods”…...
C++中使用ShellExecute函数调用其他窗口程序时,参数设置为隐藏,后续能通过发消息给这个被调用程序显示,能显示出来窗口吗
文章目录 一、可行性分析二、实现步骤1. 启动程序并隐藏窗口2. 获取目标窗口句柄3. 发送消息显示窗口方法1:发送WM_SHOWWINDOW方法2:发送WM_SYSCOMMAND恢复窗口方法3:直接调用ShowWindow(推荐) 三、代码示例四、关键注…...
使用 AI 生成 页面
当前使用的是 火山引擎 提供的 deepseek-v3-241226 思考 如何让AI可以按自己的想法一步步生成页面? 我们要把要生成的内容分段的给到它,让它按步聚完成。 如生成一个列表页 依据所定义的接口。生成API依赖定义接口 生成 状态管理模块依赖上状态管理…...
【人工智能】机器学习中的评价指标
机器学习中的评价指标 在机器学习中,评估指标(Evaluation Metrics)是衡量模型性能的工具。选择合适的评估指标能够帮助我们更好地理解模型的效果以及它在实际应用中的表现。 一般来说,评估指标主要分为三大类:分类、…...
shell脚本运行方式 bash 和./区别
在 Linux 或 macOS 这类基于 Unix 的系统里,使用 ./ 运行脚本和使用 bash 运行脚本存在一些差异,下面为你详细说明: 1. 语法与使用方式 使用 ./ 运行脚本: 若要使用 ./ 来运行脚本,需要确保脚本文件具备可执行权限&a…...
ShardingSphere+达梦数据库分表操作
背景 随着数字经济时代的全面到来,数据量呈现爆炸式增长,传统单机数据库在性能、扩展性和可用性方面面临严峻挑战。分布式数据库技术应运而生,成为解决海量数据存储与处理的关键方案。在这一背景下,Apache ShardingSphere作为一款…...
WordPress上传图片时显示“未提供数据”错误
在WordPress中上传图片时显示“未提供数据”的错误,通常是由多种原因引起的,以下是一些常见的问题及其解决方法: 1. 文件权限问题 WordPress需要正确的文件和目录权限才能正常上传图片。如果权限设置不正确,可能会导致无法上传图…...
AP CSA FRQ Q2 Past Paper 五年真题汇总 2023-2019
Author(wechat): bigshuang2020 ap csa tutor, providing 1-on-1 tutoring. 国际教育计算机老师, 擅长答疑讲解,带学生实践学习。 热爱创作,作品:ap csa原创双语教案,真题梳理汇总, AP CSA FRQ专题冲刺, AP CSA MCQ小题…...
海量数据场景题--查找两个大文件的URL
查找两个大文件共同的URL 给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,找出 a、b 两个文件共同的 URL。内存限制是 4G。 操作逻辑: 使用哈希函数 hash(URL) % 1000 将每个URL映射到0-999的编号 文件A切割为a0, a1…...
Spring AI Alibaba 工具(Function Calling)使用
一、工具(Function Calling)简介 Spring AI Alibaba工具(Function Calling):https://java2ai.com/docs/1.0.0-M6.1/tutorials/function-calling/ 1、工具(Function Calling) “工具(Tool)”或“功能调用(Function Calling…...
汽车方向盘开关功能测试的技术解析
随着汽车智能化与电动化的发展,方向盘开关的功能日益复杂化,从传统的灯光、雨刷控制到智能语音、自动驾驶辅助等功能的集成,对开关的可靠性、耐久性及安全性提出了更高要求。本文结合北京沃华慧通测控技术有限公司(以下简称“慧通…...
9-100V输入替代CYT5030/LM5030高压双路电流模式PWM控制器
产品描述: PC3530高压 PWM 控制器包含实现推挽和桥式拓扑所需的所有功能,采用电流模式控制,提供两个交替栅极驱动器输出。PC3530内置高压启动稳压器,可在 9V~100V 的宽输入电压范围内工作。芯片内部还集成有误差放大器、精密基准、两级过流保…...
详细讲解c++中线程类thread的实现,stl源码讲解之thread
Thread 本节我们来详细介绍一下c中的线程类thread,在讲解的过程中会用到大量模板的知识,可以去看c详解模板泛型编程,详解类模板的实现为什么不能放在cpp文件_泛型函数 cpo-CSDN博客 源码: template <class _Fn, class... _Args, enable_…...
PostgreSQL详解
第一章:环境部署与基础操作 1.1 多平台安装详解 Windows环境 图形化安装 下载EnterpriseDB安装包(含pgAdmin) 关键配置项说明: # postgresql.conf优化项 max_connections 200 shared_buffers 4GB work_mem 32MB 服务管理命…...
系统思考—第五项修炼
感谢【汇丰】邀请,为其高阶管理者交付系统思考系列项目。这不仅是一次知识的传递,更是一次认知的升级。 系统思考,作为《第五项修炼》的核心能力,正在帮助越来越多的管理者突破碎片化决策的困局,建立看见全貌的智慧与…...
如何使用QuickAPI生成带参数的数据API(基于原生SQL)
目录 一、示例表结构 二、准备工作 三、创建带参数的数据API 步骤 1:登录 QuickAPI 平台 步骤 2:连接数据库 步骤 3:配置基础信息 步骤 4:编写 SQL 并添加参数 步骤 5:测试并发布API 步骤 6:验证A…...
RHINO 转 STL,解锁 3D 打印与工业应用新通道
一、RHINO 格式介绍 RHINO 是一款功能强大的三维建模软件,其对应的文件格式(.3dm)能够精确地存储复杂的三维模型数据。它支持多种几何类型,包括 NURBS(非均匀有理 B 样条曲线)、多边形网格等。这种格式的优…...
PySide6属性选择器设置样式避坑
总所周知,Qt中qss语法支持属性选择器,通过setProperty设置key和value,支持在多种样式之前切换。今天使用了一下PySide6的属性选择器,发现了一个问题。完整代码见最后。 首先,先写一段qss样式,用来设置按键样…...
BKA-CNN-BiLSTM、CNN-BiLSTM、BiLSTM、CNN四模型多变量时序光伏功率预测,附模型报告
BKA-CNN-BiLSTM、CNN-BiLSTM、BiLSTM、CNN四模型多变量时序光伏功率预测,附模型报告 目录 BKA-CNN-BiLSTM、CNN-BiLSTM、BiLSTM、CNN四模型多变量时序光伏功率预测,附模型报告预测效果基本介绍程序设计参考资料 预测效果 基本介绍 BKA-CNN-BiLSTM、CNN-…...
ADS 学习和培训资源 - Keysight ADS
在 Signal Edge Solutions,我们是 Keysight ADS 的忠实用户,因此我们明白,使用和学习这款强大的仿真工具有时可能非常困难。 因此,我们编制了一份清单,列出了一些我们最喜欢的 ADS 学习和培训资源,以帮助您…...
【leetcode刷题记录】(java)数组 链表 哈希表
文章目录 四、题目之:代码随想录(1) 代码随想录:数组[704. 二分查找](https://leetcode.cn/problems/binary-search/)[27. 移除元素](https://leetcode.cn/problems/remove-element/)暴力解:双指针: [977. 有序数组的平方](https://leetcode.…...
ngx_http_core_root
定义在 src\http\ngx_http_core_module.c static char * ngx_http_core_root(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) {ngx_http_core_loc_conf_t *clcf conf;ngx_str_t *value;ngx_int_t alias;ngx_uint_t …...