代码之家  ›  专栏  ›  技术社区  ›  user2748350

响应式设计图像对齐

  •  0
  • user2748350  · 技术社区  · 12 年前

    我是一个新手html/CSS程序员,需要满足一组非常特定的情况。 我有两张图片,两张图片都必须垂直对齐图片的中心。一个图像必须左对齐,另一个必须右对齐。它们将处于最大宽度div中,但我认为这不应该是个问题。当网页缩小到两张图片的宽度以下时,图像需要水平居中,一张图片在另一张图片的顶部。我已经向clarfiy添加了图片(很抱歉,我会添加图片,但我没有代表)。div容器和图像都是可变的,因此基于像素的定位是不可能的。

    所以我对此进行了大量研究,但我发现的所有答案都是部分的;无法完成我想要的一切。有什么想法吗?

    ( http://imageshack.us/a/img819/9515/3zt.gif )

    ( http://imageshack.us/a/img14/853/qp8.gif )

    研究:
    我注意到我的问题是-1'。我想没有提供我的研究是错吧?以下是我尝试解决此问题的一些方法: Vertical alignment of elements in a div

    How to vertically align an image inside div

    How to vertically middle-align floating elements of unknown heights?

    Wrap long HTML tables to next line

    2 回复  |  直到 9 年前
        1
  •  0
  •   David Taiaroa    12 年前

    编辑#2

    另一个版本,我认为这是我能想到的最干净的版本
    live view
    edit view
    对于宽屏幕视图,使用css表格并垂直对齐:居中,然后对于窄视口折叠表格。代码是干净的,它完全与图像高度无关。

    ================

    编辑

    正如@user2748350正确指出的那样,我在下面的原始建议是,如果图像高度不同,就不要在宽屏幕上垂直对齐。

    这里有一个变体,它是使用垂直对齐的改进:中间和内联图像。唯一的要求是设置一个大于最高图像的线高度:
    live view
    edit view

    ===============================================
    起初的

    看看这是否有助于您:
    live view
    edit view

    HTML格式

    <div class="container">
    <img src="http://placehold.it/300x150" class="left">
    <img src="http://placehold.it/250x150" class="right">
    </div>  
    

    CSS格式

    .container{
    margin: 0 auto;
    max-width:1000px;
    }
    img.left{
    display:block;
    float:left;
    }
    img.right{
    display:block;
    float:right;
    }
    
    @media (max-width: 570px) {
    img.left{
    float:none;
    margin: 0 auto;
    }
    img.right{
    display:block;
    float:none;
    margin: 0 auto;
    }
    }  
    

    在页面的首页,您还需要添加

    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    

    以便在移动设备上进行良好的显示。

    希望这能有所帮助!

        2
  •  0
  •   Knectt    5 年前

    这是快速解决方案

     img {
            max-height: 100%;
            max-width: 90%;
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            margin: auto;
          }