绝对定位后图像无法在移动/ iPhone正确显示(Absolute positioned image

2019-11-05 11:24发布

我有一个形象,我想显示在一个div的另一个图像内。 该div有填充和利润。 我要对齐的图像顶部和左侧的div没有DIV表现的填充。 股利是相对的地位和形象是绝对位置。 这正常工作在桌面上而不是iPhone上的所有浏览器。

我已经检查了所有div都指定为相对的位置。

<div class="aaa">
    <div class="bbb ccc">
        <img src="common/banner.png" width="365" height="200"  class="ddd"/>
        <img src="images/picture.jpg" width="350" height="233" /> 
        <h3>Text</h3>
    </div>
</div>

<!--   ---CSS FOLLOWS, EXTRA CSS REMOVED---  -->

.aaa {
position: relative;
width:100%;
margin:auto;
padding:15px 0;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: top;
flex-direction: row;


}


.ccc {
position: relative;

}


.bbb {
max-width:350px;
position:relative;
color:#FFF;
flex-grow: 1;
padding: 15px 15px 50px 15px;
margin:15px;
text-align:left;
overflow:hidden;

}

    @media (max-width: 410px) {
            .bbb {
                position:relative;
                width:90%;
                margin:15px 0;
                height:auto;
                overflow:auto;
            }

            .bbb img{
                position:relative;
                width:100%;
                height:auto;
            }

            .bbb a, 
            .bbb a:hover,
            .bbb a:focus,
            .bbb a:visited {
                position:relative;
                margin-top:30p
            }



    }


.bbb a, 

.bbb a:hover,

.bbb a:focus,

.bbb a:visited {
display: inline-block;
padding: 5px 15px;
position: absolute;
bottom:10px;
left: 50%;
transform: translate(-50%, 0);
transition: background 0.2s linear, color 0.2s linear;

}

图片应与顶部齐平,左股利。

Answer 1:

您的标记不包含任何链接( <a> ),然而,在你的CSS的唯一元素,您申请position:absolute的就是.bbb a (与各种改性剂),但是,这并不适用于任何东西。


让我们回顾以下基本内容:为了对其他(其中,不可否认,是你想要达到什么样的),你需要的顶部显示2种元素之一:

  • 与父position:relative
  • 一个孩子没有position或与position:relative (这将构成文档流程:将填充并确定亲本的尺寸,并间接地也将尺寸另一元件)。
  • 与其他孩子position:absolute; + topleftwidthheight (或者可以取代width:100%;height:100%bottom:0;right:0 ),其将因此自身映射到母体的尺寸,这反过来,花费从正常流动的尺寸(仅包含其他的孩子)。 该元件中,被绝对定位,是不正常的流的一部分。

 relative-parent { position: relative; font-size: 3rem; } normal-child { height: 180px; background-color: red; color: white; } absolute-child { position: absolute; width: 100%; height: 100%; top: 0; left: 0; background-color: white; color: red; /* hide absolute child */ opacity: 0; border: 1px solid red; transition: opacity .3s; } relative-parent:hover absolute-child { /* show absolute child on parent hover */ opacity: 1; } relative-parent, normal-child, absolute-child { width: 100%; display: flex; align-items: center; justify-content: center; } /* all indented rules are irrelevant I basically added them to style the example */ 
 <relative-parent> <normal-child>Normal child</normal-child> <absolute-child>Absolute child</absolute-child> </relative-parent> 

以上是一般原则。 所有造型(重要)规则已经缩进,所以我上面谈到的那些依然突出。

整个构建体从流,这是通常位于儿童的尺寸需要它的大小(:在该示例中height: 180px; width: 100%如果改变该元素,则还更改父,而另一个子)。

这其实并不重要你使用元素(他们甚至可以自定义元素,因为我让他们,只要你给他们一个块或Flexbox的电平值display )。 如果你使用<div>为家长和<img> S作为孩子,你应该给一个在父母流程display:block


如果应用上述原则,没有任何验证错误,它会工作的跨浏览器/跨设备。 这是CSS 1级。



Answer 2:

我不知道理解,为什么2张的图片在手机上? 我看到了标签的“a”在你的CSS,所以我给你这个。

 <a href="#" id="name"> <img title="Hello" src="common/banner.png" onmouseover="this.src='images/picture.jpg'" onmouseout="this.src='common/banner.png'" /> </a> 



文章来源: Absolute positioned image not displaying correctly on mobile/iPhone
标签: css css3