css 定位position: absolute居中

本文介绍三种CSS居中布局方法,包括使用margin、transform和百分比margin,以及如何利用JS实现页面元素的响应式调整,适应不同屏幕尺寸。

这是个很小的点:只是为了方便使用

/*方式一*/
.main_center{
    position: absolute;
    left:0;
    right:0;
    top:0;
    bottom:0;
    margin:auto; /*auto属性,相当于移到中心点*/
}

/*方式二*/
.main_center{
    position: absolute;
    left:0;
    right:0;
    transform:translate(-50%,-50%); /*浏览器自动计算(css3属性)*/
}

/*方式三*/
.main_center{
    position:absolute;
    left:0;
    top:0;
    margin: -50% -50%; /*此处可替换为:margin: -50%*/ 
}

css div背景图片自适应屏幕大小并按比例缩放

<div style="height: 500px;width: 100%;background: url(fff.jpg) no-repeat center center ; background-size: 100%;"></div>

JS监听窗口大小变化

window.onresize=function(){  
	var offsetWid = document.documentElement.clientWidth;
	if(offsetWid<800){
	    document.getElementById("cyberexdesc").style.width="60%";
	}

	if(offsetWid>800){
	    document.getElementById("cyberexdesc").style.width="30%";
	}
}

JS动态改变css样式

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>全局样式</title>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
</head>

<body>

     
<div class="row"  style="width:100%;background-color:greenyellow;">
    <div class="col-md-6" >
	    	<div id="footerbl" style="float: right;">
					 <a target="_blank" href="" style="text-decoration:none;height:20px;line-height:20px;">
						 <img src="http://www.beian.gov.cn/portal/download?token=6ec78cc1-9222-4801-853f-c80d8e2b2cd4" />
						 <font style="color:#939393;">粤公网安备 44010402001763号</font >
					 </a>
				</div>	 
    </div>
		<div class="col-md-6" >
				<div id="footerbr"  style="float: left">
					<font style="color:#939393;width:100px;">粤ICP备18155667号</font >
				</div>
		</div>	
</div>
	<script>
		window.onload=function(){
			var fbl = document.getElementById('footerbl')
			var fbr = document.getElementById('footerbr');
			var cw = document.documentElement.clientWidth;
			var ch = document.documentElement.clientHeight;
			if(ch>=cw){
				fbl.style.cssText = "text-align:center";
				fbr.style.cssText = "text-align:center";
			}else{
				fbl.style.cssText = "float: right;";
				fbr.style.cssText = "float: left";
			}
		}
		window.onresize=function(){
			var fbl = document.getElementById('footerbl')
			var fbr = document.getElementById('footerbr');
			var cw = document.documentElement.clientWidth;
			var ch = document.documentElement.clientHeight;
			if(ch>=cw){
				fbl.style.cssText = "text-align:center";
				fbr.style.cssText = "text-align:center";
			}else{
				fbl.style.cssText = "float: right;";
				fbr.style.cssText = "float: left";
			}
		}
	</script>
    
</body>
</html>

监听浏览器滚动条距离顶部变化

<div id="ipv6" style="border-radius: 5px;background-color: dodgerblue;display: inline-block;padding: 8px;position: absolute;top: 20px;left: 20px;">
			<font color="white" style="font-weight: 600;font-family:'新宋体';">网址支持IPV6</font>
		</div>
		
		<div style="height: 2000px;"></div>
		<script>
			window.onscroll= function(){
				var t = document.documentElement.scrollTop||document.body.scrollTop;
				if(t>10){
					var ipv6 = document.getElementById('ipv6');
					ipv6.style.display = 'none';
				}else{
					var ipv6 = document.getElementById('ipv6');
					ipv6.style.display = 'inline-block';
				}
			}
			
		</script>

 

### CSS 中 `position: absolute` 实现元素居中的方法 #### 方法一:通过负边距实现 当子元素的宽度和高度已知时,可以通过设置父容器为相对定位 (`relative`) 并将子元素放置在其正中央位置。此时需要调整子元素的顶部和左侧偏移量至 50%,并使用负边距将其拉回中心。 ```css .father { position: relative; background-color: pink; width: 200px; height: 200px; } .son { position: absolute; background-color: red; width: 50px; height: 50px; left: 50%; top: 50%; margin-top: -25px; /* 子元素高度的一半 */ margin-left: -25px; /* 子元素宽度的一半 */ } ``` 这种方法适用于固定尺寸的子元素[^2]。 --- #### 方法二:通过 `transform` 调整 如果子元素的高度和宽度未知或者动态变化,则可以借助 CSS 的 `transform` 属性来完成更灵活的居中操作。同样地,先将子元素移动到父容器的中间 (左边缘和顶部分别偏移 50%),再通过 `translate(-50%, -50%)` 将其向相反方向平移自身大小的一半。 ```css .father { position: relative; background-color: pink; width: 200px; height: 200px; } .son { position: absolute; background-color: red; width: 50px; height: 50px; left: 50%; top: 50%; transform: translate(-50%, -50%); } ``` 此技术不仅支持静态布局也适合响应式设计场景下的应用。 --- #### 方法三:利用四面均为零配合自动外边距 另一种简洁的方式就是把所有的方位都设成零(`left`, `right`, `top`, 和 `bottom`) 同时让浏览器自行决定合适的间距——即赋予它一个值为 `auto` 的 `margin` 声明即可达到预期效果: ```css .main_center { position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto; width: 50px; height: 50px; background-color: blue; } ``` 这种方式无需额外考虑具体数值计算问题,在某些特定条件下非常实用[^4]。 --- #### 方法四:结合 JavaScript 动态适配内容高度 对于那些可能具有变动性的内容区域来说,仅依靠纯 CSS 可能难以满足需求;这时我们可以引入少量脚本逻辑辅助检测实际渲染后的尺寸进而做出相应调整。例如下面这段基于 Modernizr 库编写的测试代码片段展示了如何验证某个绝对定位项目能否被正确置于视窗中央的位置上[^3]: ```javascript Modernizr.testStyles( '#modernizr { display: table; height: 50px; width: 50px; margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0; }', function(elem, rule) { Modernizr.addTest('absolutecentercontent', Math.round(window.innerHeight / 2 - 25) === elem.offsetTop); } ); ``` 尽管如此,大多数情况下还是推荐优先尝试纯粹依赖样式表解决方案除非确实遇到无法克服的技术障碍才退而求其次采用混合编程手段处理复杂情况。 --- ### 总结 综上所述,有多种途径能够达成目标效果取决于具体情况以及个人偏好等因素影响最终选择哪一种最为合适。无论是传统手动设定参数还是现代化自动化工具都有各自优缺点需权衡考量后再做定夺。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值