[英]Position div at position of another div
我試圖將div
完全放在另一個上面。 我是通過JQuery(而不是css)來做的,因為我有3個元素。 當鼠標移過其中一個元素時,我希望div
將自己定位到該元素。
我終於讓它工作了,但是當div
轉到元素時, div
會去那里,並向左邊增加8px。
如何將div
放在另一個元素的確切位置?
$('.inner').mouseover(function() { var pos = $(this).position(); $("#back").css('left', pos.left + "px"); });
#wrapper { width: 600px; height: 30px; } .inner { display: block; float: left; width: calc(100% / 3); height: 50px; } #back { background-color: yellow; height: 100%; z-index: -1; width: calc(100% / 3); position: relative; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="wrapper"> <div class="inner">First Option</div> <div class="inner">Second Option</div> <div class="inner">Third Option</div> <div id="back"></div> </div>
.wrapper應該是相對位置而.back應該是絕對位置
$('.inner').mouseover(function() { var pos = $(this).position(); $("#back").css('left', pos.left + "px"); });
#wrapper { width: 600px; height: 30px; position: relative; } .inner { display: block; float: left; width: calc(100% / 3); height: 50px; background-color: green; } #back { background-color: yellow; height: 100%; z-index: 125; width: calc(100% / 3); position: absolute; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="wrapper"> <div class="inner">First Option</div> <div class="inner">Second Option</div> <div class="inner">Third Option</div> <div id="back"></div> </div>
您可以通過將position: absolute
設置為#back
元素來消除額外的空間。 DEMO
容易,對嗎? 但為什么?
當使用position: relative
,如W3schools屬性頁中所述 :
位置相對的元素; 相對於其正常位置定位 。
默認情況下,所有元素都具有position: static
,這基本上意味着您在文檔中構建元素的位置和方式,這就是它們的位置,它實際上被稱為未 定位 。
當您添加position: relative
對於一個元素時,它會獲取當前位置,然后根據您為top
, right
, bottom
或left
屬性賦予的值進一步增加或減去它的位置(另請注意, static
和relative
之間的主要區別)是relative
可以接受這些屬性,它們不會影響static
元素)。
在你的情況你添加屬性left
你是從得到一個值position()
方法(假設8px
喜歡你的第一個例子). That means that
). That means that
#back was being a positioned
*from* the it's original position, which was already positioned
was being a positioned
8px *from* the it's original position, which was already positioned
已經from the left (due to the document's
*from* the it's original position, which was already positioned
8px from the left (due to the document's
填充/
邊距)。
為了使元素不受margin
或padding
影響,您必須將其從position: absolute
的文檔流中取出。 使用絕對定位元素不會像static
或relative
元素那樣“占用文檔中的空間”,因此它不會受父元素的padding
或margin
屬性的影響。
除非你是100%肯定的,否則沒有父元素將具有影響relative
位置的元素的margin
或padding
值,有時你可以通過不將元素更改為absolute
來逃避。
此演示顯示#back
元素的position: relative
。
這個演示說明了為什么你應該給它position: absolute
(一旦引入填充,一切都變得混亂。
使用相同的padding
和position: absolute
一切都按預期工作 - DEMO ( 幾乎 )。
back div should have position absolute to get on other div's.
請找到更新的jsFiddle
添加position: relative
對於#wrapper
。
所以#wrapper
應該是這樣的:
#wrapper {
width: 600px;
height:30px;
position: relative;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.