子div设置了position: absolute; 但是父层是OVERFLOW-Y: auto; 如果父层出现了滚动条 子div就显示不全!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了子div设置了position: absolute; 但是父层是OVERFLOW-Y: auto; 如果父层出现了滚动条 子div就显示不全!相关的知识,希望对你有一定的参考价值。

这个问题怎么解决呀?我是要做个弹框效果的!

这要看你的子div的高度有多少了,设置top:100px;浏览器到子div的距离不会很大,应该不会出现滚动条 参考技术A position: absolute;使元素不受文档流的控制,你可以在下面增加一个空div设置样式为 clear: both; 参考技术B 父层显示滚动条就是因为子层内容超宽或者超高啊,超宽超高当然显示不全,所以你究竟是什么意思? 参考技术C 要看你的子div的高度有多少了:100px,设置top;浏览器到子div的距离不会很大
如果你的div是弹框就不要用绝对定位,应该用position: fixed;这样无论你怎么滚动它始终在那个位置。
子div试试position:fixed
参考技术D 如果你的div是弹框就不要用绝对定位,应该用position: fixed;这样无论你怎么滚动它始终在那个位置。

div在设置position为absolute的情况下 如何让里面的内容水平居中显示

.div
position:absolute;

left:0;

right:0;
text-align: center

解决这个问题之前,我们要先了解什么是position为absolute:

position属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。

举例:

.div 
    position:absolute;
    left:100px;
    top:150px;

值得注意的是,这时候的元素是根据内容自适应大小的,所以我们要使其内部水平居中的前提是设置这个元素的大小,修改css如下:

.div 
    position:absolute;
    left:100px;
    top:150px;
    width: 100px;
    height: 100px;

然后我们再增加文本水平居中:

.div 
    position:absolute;
    left:100px;
    top:150px;
    width: 100px;
    height: 100px;
    text-align: center;

这样我们就解决了“div在设置position为absolute的情况下让里面的内容水平居中显示”。

参考技术A 您好,这个问题有两种情况。
第一种:里面内容元素为块元素,那么将此块元素css设置为:margin:0 auto;
第二种:里面内容元素为行元素,那么将此行元素的父级元素css设置为:text-align:center;
希望能够帮到您。。
参考技术B

假如div的宽度为200px,那么居中的方式为左浮动50%,然后再margin-left为-100px就可以了。

div
width:200px;
position:absolute;
left:50%;
margin-left:-100px;

参考技术C 示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div.c  width: 400px; height: 400px; background: pink; position: absolute; left: 300px; top: 500px; 
        .b  width: 200px; background: black; margin:0 auto; 
    </style>
</head>
<body>
    <div class="c">
        <div class="b">
            adfadsf
        </div>
    </div>
</body>
</html>

如果里面的内容为内联元素或者文字使用:text-align:center;

如果里面的内容为区块元素:为区块设置宽度和margin:0 auto;

参考技术D

内容水平居中显示和设置position为absolute并无太多关系,这种情况下有几种实现方式:

    display: flex

    仍然采用position:absolute

    margin: 0 auto;

    text-align

以上是关于子div设置了position: absolute; 但是父层是OVERFLOW-Y: auto; 如果父层出现了滚动条 子div就显示不全!的主要内容,如果未能解决你的问题,请参考以下文章

position:absolute用法(隐藏溢出部分)

position:absolute相对于谁定位以及当溢出时怎么隐藏

[JSP]-[HTML]-[CSS]-[DIV]-页面样式

如何使孩子处于绝对位置居中

div在设置position为absolute的情况下 如何让里面的内容水平居中显示

一个div包含两个position:absolute的div。可是,外面的div为啥不能包住那两个div呢