【问题标题】:How to fix HTML-elements positions on background-image如何修复背景图像上的 HTML 元素位置
【发布时间】:2016-07-07 03:28:06
【问题描述】:

我正在尝试将图像和列表元素固定在我在 CSS 中设置的背景图像上的某个位置,无论屏幕大小如何。我正在使用引导程序将页面分为两列以创建两个“配置文件”。在每个配置文件中,我再次将页面分为两列,以将每个配置文件划分为配置文件图片和带有文本项的列表。

我已经尝试了我现在所知道的一切,这是我目前的代码。它还没有工作,但也许任何人都能够提出某些调整以使其工作? This is what I am trying to achieveThis is the image I am using

HTML:

<div class="content row">
    <div class="col-sm-6">
        <div class="profile">
            <div class="profile-content">
                <p class="big profile-name">Some name</p>
                <div class="content row">
                    <div class="col-md-4 profile-img"><img src="./name.png"></div>
                    <div class="col-md-8"><ul><li>Web: HTML/CSS/PHP/JQuery</li><li>Lorem ipsum</li><li>Lorem ipsum</li></ul></div>
                </div>
            </div>
        </div>
    </div>
    <div class="col-sm-6">
        <div class="profile">
            <div class="profile-content">
                <p class="big profile-name">Some name</p>
                <div class="content row "></div>
                    <div class="col-md-4"><ul><li>Lorem ipsum</li><li>Lorem ipsum</li><li>Lorem ipsum</li></ul></div>
                    <div class="col-md-8"><ul><li>Web: HTML/CSS/PHP/JQuery</li><li>Lorem ipsum</li><li>Lorem ipsum</li></ul></div>
                </div>
            </div>
        </div>
    </div>

CSS

.profile {
background-image: url('/screen-1315650.png');
background-repeat: no-repeat;
height: 400px;
background-size: 100%;
}

.profile-content {
padding: 40px 10px 0px 10px;
margin: 10% 10% 10% 10%;
overflow: hidden;
height: 45%;
}

.profile-img {
align-self: flex-start;
}

.profile-name {
font-weight: 600;
}

.content {
position: relative;
margin: auto;
width: 100%;
max-width: 1024px;
text-align: center;
padding: 0 10px;
}

任何帮助将不胜感激!我还在学习,所以请教我如何钓鱼:-)

【问题讨论】:

  • 请提供您正在使用的图片
  • 哦,哎呀,谢谢你的注意,我忘了。我已经添加了!
  • 谢谢。如果你有与 OP 相同的材料,玩起来会更容易:P

标签: html css twitter-bootstrap background-image css-position


【解决方案1】:

有很多方法可以定位一个元素,但是因为你的溢出问题:

这是我将使用的结构

<div id="container">
    <ol id="list"></ol>
<div>

我会将容器的背景设为图像(并使用背景属性对其进行格式化,使其随屏幕缩放)。

然后,我将使用 calc() 来确定列表的边距,并使用 vw 单位(因为引导程序基于屏幕宽度)

我会避免相对绝对定位,因为如果你的列表太长,它会溢出。

Example

【讨论】:

  • 感谢您的回答,如果下面的回答不起作用,我明天会尝试以这种方式合并它!
【解决方案2】:

请试试这个代码:

<style>
    .profile {
        background: url('mac.png') no-repeat left center;
        height: 400px;
        background-size: 100%;
        position: relative;
    }

    .profile-content {
        position: absolute;
        top: 20%;
        left: 10%;
        right: 10%;
        z-index: 9;
        bottom: 0;
    }

    .content ul {
        margin:0;
        padding:0;
        list-style:none;
        text-align: left;
    }

    .profile-name {
        font-weight: 600;
    }

    .content {
        position: relative;
        margin: auto;
        width: 100%;
        max-width: 1024px;
        text-align: center;
        padding: 0 10px;
    }
</style>


<div class="content row">
    <div class="col-sm-6">
        <div class="profile">
            <div class="profile-content">
                <p class="big profile-name">Some name</p>
                <div class="content row">
                    <div class="col-md-4 profile-img"><img class="img-responsive" src="./name.png"></div>
                    <div class="col-md-8"><ul><li>Web: HTML/CSS/PHP/JQuery</li><li>Lorem ipsum</li><li>Lorem ipsum</li></ul></div>
                </div>
            </div>
        </div>
    </div>
    <div class="col-sm-6">
        <div class="profile">
            <div class="profile-content">
                <p class="big profile-name">Some name</p>
                <div class="content row "></div>
                    <div class="col-md-4"><ul><li>Lorem ipsum</li><li>Lorem ipsum</li><li>Lorem ipsum</li></ul></div>
                    <div class="col-md-8"><ul><li>Web: HTML/CSS/PHP/JQuery</li><li>Lorem ipsum</li><li>Lorem ipsum</li></ul></div>
                </div>
            </div>
        </div>
    </div>

【讨论】:

  • 感谢您的浏览!然而,出于某种原因,内容不会停留在屏幕“内”并且现在重叠。我添加了the result 的屏幕截图,并添加了我使用的图片for testing。也许我做错了什么?
  • 你需要添加class "img-responsive" 避免重叠
  • 糟糕,我做错了,没有复制那部分。现在我已经这样做了,元素不再重叠,但元素仍然以不同的大小浮出屏幕:the new result
  • 哇,你的反应很快就帮助了一个随机的人——非常感谢你!正常尺寸现在似乎适合,但调整屏幕尺寸仍然没有得到预期的结果:the newest result
最近更新 更多