基础定位方法
使用 position
属性
属性值 | 说明 | 示例效果 |
---|---|---|
static |
默认值,无法通过 top/bottom/left/right 移动 |
正常文档流位置 |
relative |
相对原位置偏移 | position: relative; top: 20px; left: 10px; |
absolute |
相对于最近非 static 定位祖先元素偏移 | position: absolute; bottom: 15px; right: 5px; |
fixed |
相对于浏览器窗口固定位置 | position: fixed; top: 0; left: 50%; |
使用 margin
/padding
调整间距
/ 通过外边距移动 / p { margin-top: 30px; / 向下移动 / margin-left: -15px; / 向左移动 / }
高级布局技巧
Flex 布局对齐
属性组合 | 效果描述 |
---|---|
display: flex; justify-content: center; |
水平居中 |
align-items: flex-end; |
垂直底部对齐 |
margin: auto; |
自动填充剩余空间 |
Grid 网格定位
.container { display: grid; grid-template-columns: 1fr 2fr; / 两列布局 / } .item { grid-column: span 2; / 跨两列 / grid-row: 2; / 第二行开始 / }
动态效果实现
CSS 动画移动
@keyframes moveText { 0% { transform: translateX(0); } 100% { transform: translateX(300px); } } .animated-text { animation: moveText 2s linear infinite; }
JavaScript 控制位置
const textElement = document.getElementById('moving-text'); let x = 0; setInterval(() => { x += 5; textElement.style.transform = `translateX(${x}px)`; }, 100);
常见问题解决方案
文字抖动问题
- 原因:小数点像素计算导致不同浏览器渲染差异
- 解决:使用
transform: translate(整数px)
或开启backface-visibility
响应式适配
/ 使用视口单位 / .responsive-text { position: absolute; top: 5vh; / 视口高度5% / left: 10vw; / 视口宽度10% / }
相关问题与解答
Q1:如何让文字始终垂直居中在父容器?
A:使用 display: flex
+ align-items: center
,或传统方式 line-height: 容器高度
。
.target {
transition: all 0.5s;
}
.target.active {
transform: translate(100px, 50px);
}