我的CSS出了什么问题,在将窗口调整为较小尺寸时,元素会移动和重叠?

时间:2013-10-15 15:44:13

标签: html css css3 screen-resolution

好的,下面是我的CSS和HTML代码。我一直在使用div的百分比,以便这些div可以重新调整到更大的屏幕尺寸。令人讨厌的是,当我在计算机上将窗口调整为较小的尺寸时,这些元素会一直移动直到它们重叠,我不希望这样。我如何使用百分比使这些div重新调整为更高的分辨率,但在根据我在下面的CSS和HTML调整窗口大小时不会移动

这是CSS

body{
    background:#F4F4F4;
    background-size:100%;
    width:100%;
    height:100%;
    margin:0 auto;
            min-width:1300px;
            min-height:750px;
}
.logo{
    position:absolute;
    left:40%;
    top:5%;
}
    .logo_homepage{
    position:absolute;
    left:4%;
    top:5%;
}
   .homepage_slogan{
    position:absolute;
    left:3%;
    top:45%;
}
    .search_box{
    position:absolute;
    left:30%;
    top:30%;
            width:35%;
            height:50%;
            min-width:35%;
            min-height:50%;

}


    .user_info{
    position:absolute;
    left:75%;
            height:100%;
            width:20%;
            min-width:20%;
            background:white;
}
.header{
    position:absolute;
    top:0px;
    width:100%;
            min-width:98%;
    height:100px;
            min-height:100px;
    left:0;
    background:#EB6A4A; 
}

.slogan{
    position:absolute;
    top:60%;
    left:40.5%;
}

.login{
    position:absolute;
    top:15%;
    left:90%;
}

    .whitebackground{
    background:#FFFFFF;
}

#slides{
    position:absolute;
    top:20%;
    width:50%;
    background:transparent;
    height:20%;
    left:25%;
}
.socialfeeds{
    position:absolute;
    top:41%;
    width:25%;
    height:52%;
            min-width:25%;
            min-height:52%;
    left:25%;
} 
    .heading{
    position:absolute;
    top:20%;
    width:100%;
            min-width:100%;
    height:10%;
            min-height:10%;
    left:2%;
}

    .bucket{
    position:absolute;
    top:18%;
    left:20%;
            width:13%;
            min-width:13%;
}

     .title{
    position:absolute;
    top:20%;
    left:32%;
            width:30%;
            min-width:30%;
}

    .feed_icons{
      margin:20px;

}

.featured{
    position:absolute;
    top:30%;
    width:30%;
            min-width:30%;
    background:transparent;
    height:60%;
            min-height:60%;
    left:60%;
}

和HTML

<body class="whitebackground">
    <div class="header">
        <div class="logo"><img draggable="false" src="/images/logo.png" /></div>
        <div class="slogan"><img draggable="false" src="/images/slogan.png" /></div>
        <div class="login"><a href="/twitter/redirect.php"><img draggable="false" src="/images/login.png" /></a></div>
    </div>
    <div class="bucket">
        <span class="feed_icons"><a href="#"><img draggable="false" src="/images/bucket.png"/></a></span>
    </div>
        <div class="title">
        <span class="feed_icons"><a href="#"><img draggable="false" src="/images/title.png"/></a></span>
    </div>
    <div class="socialfeeds">
        <span class="feed_icons"><a href="#"><img draggable="false" src="/images/social_feeds.png" width="100%" height="100%"/></a></span>
    </div>
    <div class="featured"><img draggable="false" src="/images/featured_list.png" width="100%" height="100%" /> </div>
    <div class="footer"> <span style='margin-left:45%;'> COPYRIGHT 2013&copy;</span></div>


</body>

2 个答案:

答案 0 :(得分:4)

位置:绝对将元素拉出DOM渲染规则。编写的CSS告诉浏览器始终将这些元素放在X位置,无论元素或屏幕的大小如何。 List Apart有一篇很好的文章,可以很好地理解假定的工作方式:http://alistapart.com/article/css-positioning-101

删除定位,改为使用“display:”或“float:”属性。事情将开始根据DOM渲染规则流动。

此外,确保应用的CSS类具有功能或语义命名。避免使用引用设计处理的类,因为颜色/大/小等内容可以随时间变化,即“whitebackground”。使用诸如“client-name”或.theme之类的东西,然后声明该类或BODY标记的背景颜色,可以更好地提供代码。

HTML标记

<body class="site-body">
    <div class="header">
        <div class="logo"><img draggable="false" src="/images/logo.png" /></div>
        <div class="slogan"><img draggable="false" src="/images/slogan.png" /></div>
        <div class="login"><a href="/twitter/redirect.php"><img draggable="false" src="/images/login.png" /></a></div>
    </div>
    <div class="bucket">
        <span class="feed_icons"><a href="#"><img draggable="false" src="/images/bucket.png"/></a></span>
    </div>
        <div class="title">
        <span class="feed_icons"><a href="#"><img draggable="false" src="/images/title.png"/></a></span>
    </div>
    <div class="socialfeeds">
        <span class="feed_icons"><a href="#"><img draggable="false" src="/images/social_feeds.png" width="100%" height="100%"/></a></span>
    </div>
    <div class="featured"><img draggable="false" src="/images/featured_list.png" width="100%" height="100%" /> </div>
    <div class="footer"> <span style='margin-left:45%;'> COPYRIGHT 2013&copy;</span></div>


</body>

CSS:

.header {
height: auto; 
overflow: hidden; /* clears floated child elements */ 
width: 100%; 
min-width: 98%;
}
.logo, .slogan, .login {
display: inline-block;
} 
/* or... 
.logo, .slogan, .login {
float: left;
} */
.slogan {
margin-left: 40.5%;
}

答案 1 :(得分:0)

你在这里使用媒体查询更好......

@media all and (max-width: 60%) and (min-width: 30%) {

..........what ever you whant to do...................

}

有关媒体查询的更多信息,请访问css-media-queries