css如何让div悬浮于另一个div上

如何让div悬浮于另一个div上

要让一个div悬浮于另一个div上,我们需要使用CSS中的 position 属性和 z-index 属性。

position属性

position 属性可以控制元素在页面上的位置,它有四个属性值:

static:元素在正常的文档流中,left、right、top、bottom属性无效。

relative:元素相对于自己原来的位置定位,left、right、top、bottom属性可以作用。

absolute:元素相对于最近的有定位属性的祖先元素定位,如果没有祖先元素有定位属性,则相对于body,left、right、top、bottom属性可以作用。

fixed:元素相对于浏览器窗口定位,left、right、top、bottom属性可以作用。

对于本文要实现的悬浮效果,我们需要使用 absolute 和 relative。

z-index属性

z-index 属性可以控制元素的堆叠顺序,如果一个元素的 z-index 值比另一个元素的值大,那么这个元素就会在另一个元素的上面。

我们来看一下上面的代码是如何实现的,首先,我们有两个 div,第一个是父元素,有一个 gray 的背景颜色和 relative 的定位属性。第二个是子元素,有一个 red 的背景颜色和 absolute 的定位属性。

div {

width: 200px;

height: 200px;

}

.parent {

background-color: #ccc;

position: relative;

}

.child {

background-color: #f00;

position: absolute;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

}

我们现在可以看到红色的 div 被嵌套在灰色的 div 中心位置,这是因为子元素的定位是绝对的,它已经脱离了文档流,所以我们可以将它放在任何位置。

现在我们想让红色的 div 悬浮在灰色的 div 上,并且看起来像是浮在上面。

.parent {

/* ... */

z-index: 1;

}

.child {

/* ... */

z-index: 2;

}

我们添加了一个 z-index 属性来控制谁位于谁的上面,结果如下:

现在的效果就是红色的 div 突出了,看起来像是悬浮在灰色的 div 上。

渐变悬浮效果

如果你想让悬浮效果更加自然的话,可以采用 box-shadow 属性,如下所示:

.parent {

/* ... */

box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);

}

.child {

/* ... */

box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);

}

我们使用了两个不同的 box-shadow 阴影效果,其中灰色的 div 有一个较小的阴影效果,而红色的 div 有一个更大的阴影效果。这样,我们就创造了一个灰色的背景和一个红色的悬浮效果,如下所示:

现在,我们就实现了一个渐变悬浮效果。

总结

在本文中,我们学习了如何使一个 div 悬浮于另一个 div 上。我们使用了 positionz-index 属性来控制定位和堆叠顺序,并使用了 box-shadow 属性来达到渐变效果。

这个技术非常有用,可以用于创建悬浮菜单、气泡提示框、对话框等等。希望你对这个技术有所了解。