一、position:fixed 是什么定位
position:fixed 是CSS中的一种定位方式,与 position:absolute 相似,但是两者有很大的区别。position:fixed 使元素相对于浏览器视口固定位置,即使页面滚动,元素也不会移动。
position:fixed 可以用于创建导航栏、悬浮提示等元素。
下面是一个例子
<style> #fixed { position: fixed; right: 0; top: 0; width: 200px; height: 100px; background-color: red; color: white; } </style> <div id="fixed"> FIXED POSITION </div>
二、position 什么意思
position 是一个CSS属性,用于确定元素在文档流中的位置。通常也有四种值可以取:static、relative、absolute、fixed。
三、position 属性选取
1. position:fixed 与 z-index
fixed 元素可以运用 z-index 进行层叠顺序的控制,但是请注意 z-index 在子父级元素内的层级关系。下面是一个例子:
<style> #fixed { position: fixed; right: 0; top: 0; width: 200px; height: 100px; background-color: red; color: white; z-index: 1; } #normal { width: 100%; height: 1500px; background-color: blue; } </style> <div id="fixed"> FIXED POSITION </div> <div id="normal"></div>
2. position:fixed 搭配 transform
如果想让 fixed 元素既可以上下拖拽,又可左右移动,可以给元素设置 transform 属性。下面是一个例子:
<style> #fixed { position: fixed; right: 0; top: 0; width: 200px; height: 100px; background-color: red; color: white; transform: translate(0, 0); } </style> <script type="text/javascript"> var element = document.getElementById("fixed"); var xStart, yStart, xDrag, yDrag; element.addEventListener('mousedown', function(event) { xStart = element.style.getPropertyValue("transform").split(',')[4]; yStart = element.style.getPropertyValue("transform").split(',')[5]; xDrag = event.clientX; yDrag = event.clientY; element.addEventListener('mousemove', drag) element.addEventListener('mouseup', cancelDrag); }); function drag(event){ var newPosX = parseInt(xStart) + event.clientX - parseInt(xDrag); var newPosY = parseInt(yStart) + event.clientY - parseInt(yDrag); element.style.transform = 'translate(' + newPosX + 'px, ' + newPosY + 'px)'; } function cancelDrag(event){ element.removeEventListener('mousemove', drag); element.removeEventListener('mouseup', cancelDrag); } </script> <div id="fixed"> DRAGGABLE FIXED POSITION </div>
3. position:fixed 与跨域情况
position:fixed 在跨域情况下会有很多问题。因为 fixed 定位是相对于浏览器视口的,而不是相对于父级元素的。如果跨域,那么 fixed 定位的层级可能会受到限制,导致无法固定在浏览器视口的某个位置上。
4. position:fixed 的兼容性问题
position:fixed 在早期的 IE 所有版本中都不支持,需要使用 JavaScript 进行模拟。而且在 Safari 手机浏览器中,fixed 元素在键盘弹出时有时会失效,需要注意。
在使用 position:fixed 时,需要注意以上几个方面,才能更好地应用于实际开发中。
原创文章,作者:ZFHCF,如若转载,请注明出处:https://www.506064.com/n/333071.html