html - 使用负 margin 的替代方法?

标签 html css margin

我使用负边距将我的图像放在背景上,但是当我放大很多时,它会移动并使图像变形很多。由于负边距,在缩放时右侧的框会移到顶部。

请在下面找到我正在使用的代码:-

  <div class="platform-row" style="float: right; margin-right: 145px; padding: 2px;">
            <span><a href="download/index.html">
                <img src="assets/Box.png" border="0" /></a></span><br>
            <div class="platform-row-box">
                SOME TEXT GOES HERE...................
            </div>

            <a href="download/index.html">
                <div class="getmxit">Get ABC Now</div>
            </a>
            <div style="background: black; margin-top: 3px; width: 181px; opacity: .8; padding: 2px">

                <span><a class="platform-icon apple" href="download/ios/index.html"></a></span>
                <span><a class="platform-icon android" href="download/android/index.html"></a></span>

            </div>
        </div>

CSS:

    .platform-row {
    -webkit-transform: translateZ(0);
    -moz-transform: translateZ(0);
    -ms-transform: translateZ(0);
    -o-transform: translateZ(0);
    transform: translateZ(0);
    margin-top: -530px;
    margin-left: 700px;
}

    .platform-row .platform-row-box {
        color: white;
        font-size: 14px;
        margin: 0 auto;
        width: 181px;
        opacity: .8;
        margin-top: -170px;
        position: fixed;
    }

@media screen and (max-width: 640px) {
    .platform-row {
        padding-right: 55%;
    }
}

@media screen and (max-width: 479px) {
    .platform-row {
        margin-top: 40px;
        padding-right: 35%;
    }
}

.platform-icon {
    -webkit-transition: opacity 0.2s;
    -moz-transition: opacity 0.2s;
    transition: opacity 0.2s;
    /**background-image: url("platform_icons-14a66f5cbf10a328f7b38e6070c26e62.png");**/
    background-image: url("Home_Get.png");
    display: inline-block;
    height: 25px;
    width: 25px;
    margin-right: 0px;
    opacity: 1;
}

@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
    .platform-icon {
        background-image: url("platform_icons%402x-dfed2cc115fa8b344e08c9072408095a.png");
        background-size: 454px 88px;
        -webkit-background-size: 454px 88px;
    }
}

enter image description here

编辑:

当我因为负边距放大太多时会发生这种情况。

enter image description here

最佳答案

免责声明:此答案基于我认为您的要求。如需更具体的问题解决方案,请更具体地说明您要实现的目标。

看起来您正在使用负边距和填充来补偿图像相对定位的事实(默认情况下)。为避免破坏您的布局,您可以使用以下两种方法之一实现相同的目的:

方法 1(不理想):将背景图像移出其当前容器并移至更广泛的文档上下文中。然后绝对定位您的图像,使其不会影响您布局的其余部分:

HTML
<img class="background" src="somedir/background.png">
<div class="platform-row">....</div>

CSS
.background {
    position: absolute;
    top: 0;  /* defining the top/left/bottom/right declarations are important! */
    left: 0;
    /* bottom: 0; apply these two if you want your image to stretch and fill the entire viewport */
       /*right: 0; */
    height: 100%;
    width: auto;
}

方法 2(更好):只需将背景图像作为 background 应用到正文(或者最好是最大高度/宽度包装器)。

HTML
<div class="page-wrapper">
    <div class="platform-row">....</div>
    <!-- other page content -->
</div> <!-- end of page-wrapper -->



CSS
.page-wrapper {
    background: transparent url('/images/background.png') 0 0 no-repeat;
    /* fix the image in place (not supported in older browsers) */
    background-position: fixed;
}

此外,您可以简单地使用 position: fixed 样式(您已经定义),而不是使用边距来定位您的 .platform-row-box ,但您需要定义 top/right/bottom/left 值。

.platform-row-box {
    position: fixed;
    top: 40px;
    right: 20%;
}

关于html - 使用负 margin 的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20543643/

相关文章:

html - 使内联div填充垂直空间

css - WebKit 缩放转换问题

html - 为什么 hr 和 img 标签周围有空白?

html - 在一行中显示单选按钮和标签

html - Github Pages 显示不同于 VS Code 实时服务器

html - 消除 Chrome 中神秘的边距

html - 按下按钮时如何显示图像?

html - 元素之间存在差距,它正在吞噬我的大脑

html - 添加边距会弄乱下拉菜单的显示

javascript - 尝试将相同的背景固定到伪元素时遇到麻烦