网站首页 > 教程分享 正文
一、固定定位
假如要想实现一个footer一直定位在页面底部,那么你肯定能想到fixed布局
实现这样的结构代码也非常简单:
二、固定定位一定是你想象中的固定定位吗
有的时候我们会用到transform属性,例如transform: translateZ(0);用来启用GPU进行硬件加速,或者用来进行位移,参考:前端一次性渲染十万条数据的处理思路 & 虚拟列表一、前置知识 js是单线程的,为了确保主线程不被长时间阻塞,js中有同步 - 掘金
现在,我们给wrapper元素设置上transform: translateZ(0);
效果就会变成这样:
这还是你想象中的固定定位吗?为什么footer不在页面最底下,反而跑到上面去了
所以说为什么有的代码当时是好好地,写着写着就会有各种奇怪的问题……
至此,回答下题目提出的问题,fixed不是一定按照视口进行定位的,它只是默认按照视口进行定位,它是可能会发生变化的,至于什么时候会变化,以及哪些属性会引起变化,我们再来探究
三、包含块
什么是包含块:
css中决定一个元素的尺寸和位置的上下文
一般情况下,包含块是最近一个position不为static的父级元素
例如:当给c设置绝对定位时,由于a和b都没有设置position属性,所以c的包含块依然是视口容器
当给b设置position属性(属性值不为static)时,c的包含块就变成了b,所以c就跑到b里面了
巧的是,当我们没有给b设置`position: relative;`而是设置了`transform: translateZ(0);`一样会使c跑到b里面,此时给c设置的`position`不是`absolute`而是`fixed`呢?结果是一样的
由这个案例可以知道一旦改变了某个属性的包含块,它的子级元素中设置的绝对定位或者固定定位会依赖这个包含块进行定位,哪些属性会生成包含块呢?
- transform的值不为none
2. perspective的值不为none
3. will-change的值为transform或perspective
4. filter的值不为none,例如`filter: blur(1px);`
5. backdrop-filter的值不为none,例如`backdrop-filter: blur(10px);`
6. contain: paint;
7. clip-path和mask设置也会影响到包含块,例如:`mask: url('./1.jpg');`
猜你喜欢
- 2025-03-26 css固定元素,滚动到此处位置时固定position: sticky
你 发表评论:
欢迎- 最近发表
-
- 有了这份900多页的Android面试指南,你离大厂Offer还远吗?
- K2 Blackpearl 流程平台总体功能介绍:常规流程功能
- 零基础安卓开发起步(一)(安卓开发入门视频)
- 教程:让你的安卓像Windows一样实现程序窗口化运行
- Android事件总线还能怎么玩?(事件总线有什么好处)
- Android 面试被问“谈谈架构”,到底要怎样回答才好?
- Android开发工具Parcel和Serialize
- Android 中Notification的运用(notification widget安卓)
- Android退出所有Activity最优雅的方式
- MT管理器-简单实战-去除启动页(mt管理器怎么去除软件弹窗)
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)