![](/img/trans.png)
[英]how do I place an absolutely positioned image outside its parent element which has overflow hidden?
[英]How do I keep an absolutely positioned element in its place?
當父級的高度發生變化時,如何保持一個絕對定位的元素(在頂部垂直居中:0;底部:0;以及margin:auto;)的位置?
元素是一個完全以垂直制表符為中心的img。 當用戶單擊垂直選項卡時,它會展開以顯示更多信息,這會將完美居中的圖像移動到現在在展開選項卡中的垂直居中。
是的,它可以通過css3實現。 請嘗試這個,你將解決你的伎倆。
<div class="responsive-container">
<div class="dummy"></div>
<div class="img-container">
<img src="http://placehold.it/150x150" alt="" />
</div>
</div>
這是頂部的css
.responsive-container {
position: relative;
width: 100%;
border: 1px solid black;
}
.dummy {
padding-top: 100%; /* forces 1:1 aspect ratio */
}
.img-container {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
text-align:center; /* Align center inline elements */
font: 0/0 a;
}
.img-container:before {
content: ' ';
display: inline-block;
vertical-align: middle;
height: 100%;
}
.img-container img {
vertical-align: middle;
display: inline-block;
}
請嘗試讓我知道。
如果在這種情況下可以從css中刪除top,left,bottom,right參數 - 元素將保留在原位。
這些參數使其絕對相對於窗口定位,但是移除它們將元素放置在原來的位置。 然后設置寬度,高度和邊距將完成剩下的工作。
另一種選擇是使父元素位置:相對,絕對或固定。 然后將相對於孩子的位置進行計算。
如果你不介意一點JavaScript,這將做你想要的。 img最初位於該部分的垂直中間,但是當該部分的大小發生變化時,它將保持在原位。
document.querySelector('.abs').dataset.top = document.querySelector('.abs').offsetTop; document.getElementById('more').onclick = function() { var img = document.querySelector('.abs'); if (document.getElementById('more').checked) { img.style.top = img.dataset.top+'px'; img.style.margin = '0'; } else { img.style.top = ''; img.style.margin = ''; } };
section {position: relative;} #more ~ p {display: none;} #more:checked ~ p {display: block;} .abs { position: absolute; left: 50%; top: 0; bottom: 0; height: 40px; margin: auto 0; }
<section> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> <input id="more" type="checkbox"><label for="more"> Show more</label> <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor</p> <img src="https://placehold.it/150x40" alt="150x40" class="abs"> </section>
你試試這個。
body,html { height:100%; margin:0; padding:0; } .second-div { width:30%; height:50%; background:red; position:absolute; top:0; bottom:0; margin:auto; } .first { width:60%; height:200px; position:relative; background:pink; }
<div class="first"> <div class="second-div"><div> </div>
使用此選項指定任何對象的確切位置。
<style>
Position: absolute;
Top: 0px;
Left: 0px;
</style>
這會將對象鎖定在左上角。
然后用它來移動它:
<style> Transform: Translate(1px, 1px); </style>
這只是示例,修改它以適合您的格式(px,%,vh / vw或您使用的任何東西):-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.