最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to Center Child with Absolute Position - Stack Overflow

programmeradmin1浏览0评论

I have two div's inside another div, and I want to center child div.So,Please How can I do this?

#father {
   position: relative;
}

#son1 {
   position: absolute;
   width:285px;
}

#son2 {
   position: absolute;
   width:285px;
}

I have two div's inside another div, and I want to center child div.So,Please How can I do this?

#father {
   position: relative;
}

#son1 {
   position: absolute;
   width:285px;
}

#son2 {
   position: absolute;
   width:285px;
}
Share Improve this question edited Nov 25, 2014 at 12:47 Brian Mains 50.7k35 gold badges155 silver badges260 bronze badges asked Nov 25, 2014 at 12:45 Charnjeet SinghCharnjeet Singh 3,1077 gold badges38 silver badges65 bronze badges 11
  • Can you share the HTML markup too please? – web-tiki Commented Nov 25, 2014 at 12:47
  • 1 center horizontally? vertically? both? – Roi Commented Nov 25, 2014 at 12:47
  • top: 0; right: 0; left: 0; bottom: 0; margin: auto; - Put this on the absolute positioned elements and it will center. – Ruddy Commented Nov 25, 2014 at 12:52
  • @Ruddy this centers only horizontally untill the OP add some height for his div though he has the width mentioned already. No hard feelings – Benjamin Commented Nov 25, 2014 at 12:54
  • 1 @Ruddy yep I agree that. – Benjamin Commented Nov 25, 2014 at 12:58
 |  Show 6 more ments

3 Answers 3

Reset to default 5

First, you set a 50% left to the child element. Now the left side of the child element is at the middle of it's parent element. So, in order to bring the child's element center at it's parent center, set a negative left margin of it's half width (285 / 2 = 142.5). Sorry for my english!

#son1, #son2 {
    position: absolute;
    left: 50%;
    margin-left: -142.5px;
}

EDIT

In order to center the child elements inside their parent element, and have the child elements next to each other check this:

#father {
    width: 100%;
    height: 200px;
    position: relative;
    padding-top: 50px;
    background-color: #ccc;
}

#child-wrapper {
    width: 580px;
    position: absolute;
    left: 50%;
    margin-left: -290px;
}

#child-wrapper > div:first-child {
    margin-right: 10px;
}

#child-wrapper > div {
    background: #f1f1f1;
}

#son1, #son2 {
    width: 285px;
    padding: 20px 0;
    float: left;
    text-align: center;
}
<div id="father">
    <div id="child-wrapper">
        <div id="son1">Son1</div>
        <div id="son2">Son2</div>
    </div>
</div>

#son1, #son2 
{
position: absolute;
left: 50%;
margin-left: -50%;
}

Yes you can you have to set top and left with margin-top and margin-left

You can check code here

#father {
			   position: relative;
			   background: green;
			   height:150px;
			   width:300px;
			
			}
			
			#son1 {
			   position: absolute;
			   width:100px;
			   margin-left:-50px;	/* -half of width */
			   height:50px;
			   background: yellow;
			   left:50%;
			   top:50%;
			   margin-top:-25px;	/* -half of height*/
			  
			}
			#son2 {
			   position: absolute;
			   width:50px;
			   margin-left:-25px;	/* -half of width */
			   height:30px;
			   background: red;
			   left:50%;
			   top:50%;
			   margin-top:-15px;	/* -half of height*/
			  
			}
<div id="father">
		<div id="son1"></div>
		<div id="son2"></div>
		
	</div>

发布评论

评论列表(0)

  1. 暂无评论