随笔 - 25, 文章 - 0, 评论 - 0, 阅读 - 3568

(九).定位,精灵图

Posted on   云语不知  阅读(147)  评论(0编辑  收藏  举报

1 定位

1.1 相对定位

① 如何设置相对定位

position: relative;

② 相对定位元素定位的参考点

参照自己原来的位置进行定位

③ 相对定位元素的特点

1. 不脱离文档流
2. 不会改变元素的显示模式(保持原来的行内、块级、行内块、浮动)
3. 可以使用 leftrighttopbottom 调整元素的位置
使用百分比作为长度,leftright参照父元素内容宽度,topbottom参照父元素内容高度

1.2 绝对定位

① 如何设置绝对定位

position: absolute;

② 绝对定位元素定位的参考点

1. 绝对定位元素定位的参照点是包含块
2. 没有绝对定位的元素包含块就是父元素
绝对定位元素的包含块是第一个定位(任何定位都可以)的祖先元素,如果祖先元素没有定位,包含块就是整个页面

③ 绝对定位元素的特点

1. 绝对定位脱离文档流
2. 不论元素原来的显示模式(行内、块级、行内块、浮动),设置为绝对定位,就是绝对定位元素,拥有自己的显示特点
3. 绝对定位元素的显示特点
① 默认宽高被内容撑开(区别于块级元素)
② 可以设置宽高以及内外边距(区别于行内元素)
③ 不存在外边距塌陷和合并,左右外边距设置为auto也不会居中(区别于块级元素)
④ 不会被父元素作为文本(区别于行内块元素)
4. 可以 leftrighttopbottom 调整绝对定位元素的位置
使用百分比作为长度,leftright 参照包含块的宽度,topbottom参照包含块的高度

1.3 固定定位

① 如何设置为固定定位

position: fixed;

② 固定定位的元素定位参考点

固定定位元素参照视口进行定位

③ 固定定位元素的特点(同绝对定位)

1. 固定定位脱离文档流
2. 不论元素原来的显示模式(行内、块级、行内块、浮动),设置为固定定位,就是固定定位元素,拥有自己的显示特点
3. 固定定位元素的显示特点
① 默认宽高被内容撑开(区别于块级元素)
② 可以设置宽高以及内外边距(区别于行内元素)
③ 不存在外边距塌陷和合并,左右外边距设置为auto也不会居中(区别于块级元素)
④ 不会被父元素作为文本(区别于行内块元素)
4. 可以 leftrighttopbottom 调整绝对固定位元素的位置
使用百分比作为长度,leftright 参照视口的宽度,topbottom参照视口的高度

固定定位就是一种特殊的绝对定位!

1.4 定位层级 z-index

1. 定位的元素的显示层级高于不定位的元素
2. 绝对定位、固定定位、相对定位显示层级是一致的,后面的元素会显示在上层
3. 使用 z-index 可以设置元素的显示层级,值是纯数字,数字越大显示层级越高,可以是负值
4. 只有定位的元素设置 z-index 才有效

1.5 定位相关 CSS 属性

CSS 属性名 功能 属性值
position 设置定位 static:不定位,默认值。
relative:相对定位。
absolute:绝对定位。
fixed:固定定位。
left 设置位置 长度
right 设置位置 长度
top 设置位置 长度
bottom 设置位置 长度
z-index 设置显示层级 纯数字

1.6 定位的应用

① 定位元素(绝对和固定)的默认宽高计算

1. 绝对定位和固定定位如果不设置固定宽高,默认宽高被内内容撑开
2. 绝对定位和固定定位元素如果没有设置固定宽度,同时设置 leftright,对宽度有影响
绝对定位和固定定位元素如果没有设置固定高度,同时设置 topbottom,对高度有影响

② 设置定位元素(绝对和固定)在包含块中水平垂直都居中

方案一:

position: abolute;
left: 50%;
top: 50%;
margin-left: -宽度/2;
margin-top: -高度/2;

方案二:

position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;

这里margin是给定位元素设置auto属性,所以上下左右都可以生效,不同于块元素

2 精灵图

2.1 什么是精灵图

把小的图片合并到一张大的图片上

多个元素使用相同的图片作为背景图像,但是设置不同的图像位置,实现各自元素显示的图案不同

2.2 精灵图的优点

减少图片的请求次数,提高网页加载速度。

2.3 制作精灵图在线工具

https://alloyteam.github.io/gopng/

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示