web端页面布局小技巧 -- 如何利用定位使元素居中

元素在浏览器窗口居中的方法

这里先给出代码块,如果已经看出来点眉目可以先自己尝试一下。

	position:fixed;		/*给想要居中的元素设置*/
	left:50%;	/*或者right:50%*/
	top:50%;	/*或者bottom:50%*/
	margin-left:-元素宽度的一半; 	/*或者margin-right*/
	margin-top:-元素高度的额一半;	/*或者margin-bottom*/

好,那接下来咱们就试一试吧!

<head>
    <meta charset="UTF-8">
    <style>
    /*box是在浏览器窗口居中,不是整个页面居中,这样你在上下滑动页面时,
    box元素是不动的,因此这里设置个box_compare元素能起参照作用,让它高度
    超过窗口高度,使页面出现滚动条*/
        .box_compare {
            width: 100%;
            height: 1000px;
            background: skyblue;
        }
        
        .box {
        	/*给元素设置宽高*/
            width: 500px; 
            height: 300px;
            background: blue;
            position: fixed;
            left: 50%;	/*元素最左边离窗口左边50%的距离*/
            top: 50%;	/*元素最上边离窗口顶部上边50%的距离*/
            margin-top: -150px;
            margin-left: -250px;
        }
    </style>
</head>

<body>
    <div class="box_compare"></div>
    <div class="box"></div>
</body>

上面的方法其实有一个弊端,即,当元素未设置宽时是不能使用的,添加了定位后的元素未设置宽度的元素宽度由内容撑开的,因此不能使用这个方法,下面给大家提供一个更简捷的方法。

	position:fixed;		
	left:50%;	
	top:50%;
	transform: translate(-50%, -50%);

transform是css3新增属性,它的功能函数translate有两个参数,第一个代表x方向的位移,第二个代表y方向的位移,这个方法其实和上面的有异曲同工之妙,但是不需要考虑元素大小且对于没有大小的元素也适用。

<head>
<meta charset="UTF-8">
	<style>
		/*box_compare和上面一样起对照作用*/
	    .box_compare {
		      width: 100%;
	          height: 1000px;
	          background: skyblue;
	    }
	    .box {
	          background: pink;
	          position: fixed;
	          left:50%;	
			  top:50%;
	          transform: translate(-50%, -50%);
	     }
     </style>
</head>
<body>
     <div class="box_compare"></div>
     <div class="box">测试文本</div>
</body>

下面给大家介绍一个在写页面时较常用的方法。

position: fixed;	/*给想要居中的元素设置*/
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;

这个方法可能会有同学不理解,为什么又是left: 0;right: 0;又是top: 0;bottom: 0;,这个目的是为了将它变成一个自由的元素,这时元素的宽高在未设置时默认是父元素的宽高,再使用margin: auto;就能使它在浏览器窗口居中了,否则,添加了fixed的元素使用margin: auto;是无效的。
好,接下来我们再次尝试一下。

<head>
<meta charset="UTF-8">
	<style>
		/*box_compare和上面一样起对照作用*/
	    .box_compare {
		      width: 100%;
	          height: 1000px;
	          background: skyblue;
	    }
	    .box {
	          width: 60%;
	          height: 300px;
	          background: blue;
	          position: fixed;
	          left: 0;right: 0;
	          top: 0;bottom: 0;
	          margin: auto;
	     }
     </style>
</head>
<body>
     <div class="box_compare"></div>
     <div class="box"></div>
</body>

以上是让元素在浏览器窗口居中的部分方法,其实利用上面的方法举一反三可以实现让元素在父元素居中,毕竟上述方法的父元素就是浏览器窗口。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值