一、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
 
 微信扫一扫
微信扫一扫  支付宝扫一扫
支付宝扫一扫 