一、布局与定位的隐藏技能
1. 视差滚动与滚动捕捉
通过scroll-snap-type
和scroll-snap-align
实现精准滚动定位,结合position: sticky
创造视差效果:
.container {
scroll-snap-type: y mandatory;
height: 100vh;
overflow-y: scroll;
}
.section {
scroll-snap-align: start;
height: 100vh;
position: sticky; top: 0;
}
此方案可实现分屏滚动和元素粘滞的双重效果。
2. 伪元素内容生成器
利用::before
/::after
生成动态内容,结合attr()
函数读取HTML属性值:
<div data-count="5"></div>
<style>
div::after {
content: attr(data-count);
color: #ff4757;
}
</style>
支持动态更新计数显示,无需JavaScript介入。
二、选择器的进阶玩法
1. 伪类计数器
用counter-reset
和counter-increment
实现纯CSS编号:
ol {
counter-reset: section;
list-style: none;
}
li::before {
counter-increment: section;
content: "第" counter(section) "项";
color: #2ed573;
}
适用于自定义列表编号或步骤指示器。
2. 反向选择器逻辑
通过:not()
实现排除式选择:
/* 选中非最后一个子元素 */
.item:not(:last-child) {
border-right: 1px solid #ddd;
}
/* 禁用非激活按钮 */
button:not(.active) {
opacity: 0.5;
cursor: not-allowed;
}
简化条件判断逻辑。
三、视觉特效的冷门方案
1. 混合模式滤镜
使用mix-blend-mode
实现图像叠加特效:
.overlay {
background: url(texture.png);
mix-blend-mode: multiply;
}
支持screen
、overlay
等16种混合模式,创造艺术化背景。
2. 遮罩合成技术
通过mask-composite
实现图形切割:
.icon {
mask-image: url(shape.svg);
mask-composite: subtract;
background: linear-gradient(45deg, #ff6b6b, #4ecdc4);
}
可制作镂空图标或渐变形状。
四、交互控制的隐秘技巧
1. 复选框状态穿透
利用<label>
扩展点击区域,通过:checked
控制兄弟元素:
<input hidden id="toggle">
<label for="toggle">点击触发</label>
<div class="target"></div>
<style>
.target {
max-height: 0;
}
#toggle:checked ~
.target {
max-height: 500px;
transition: max-height 0.5s;
}
</style>
实现折叠面板、模态框等交互。
2. 禁用文本选择
通过user-select
精细控制选区:
.disable-select {
user-select: none;
/* 全局禁用 */
}
.partial-select::selection {
background: #ff4757;
/* 自定义选中色 */
}
保护关键内容或创建高亮提示。
五、性能优化的冷知识
1. 谨慎使用通配符
优化选择器匹配效率:
/* 低效 */
* {
box-sizing: border-box;
}
/* 高效 */
html, body, div, section {
box-sizing: border-box;
}
减少浏览器渲染计算量。
2. CSS变量动画
通过变量实现动态样式过渡:
:root {
--angle: 0deg;
}
.spinner {
transform: rotate(var(--angle));
transition: transform 0.3s;
}
.spinner:hover {
--angle: 360deg;
}
相比直接操作transform
属性更易维护。