如何使用CSS将元素定位于页面的左上角?

3
我需要将id为“wrapper”的div放置在页面的左上角(top和left = 0),就像id为“test”的div一样。 您能告诉我我的代码有什么问题吗?
对于您的参考: http://jsfiddle.net/Q9fzX/
<div id="wrapper">
    <div class="content">
        <ul>
            <li class="focus">0</li>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>10</li>
            <li>11</li>
            <li>12</li>
            <li>13</li>
            <li>14</li>
            <li>15</li>
            <li>16</li>
            <li>17</li>
            <li>18</li>
            <li>19</li>
            <li>20</li>
            <li>21</li>
            <li>22</li>
            <li>23</li>
            <li>24</li>
            <li>25</li>
            <li>26</li>
            <li>27</li>
            <li>28</li>
            <li>29</li>
            <li>30</li>
            <li>31</li>
            <li>32</li>
            <li>33</li>
            <li>34</li>
            <li>35</li>
            <li>36</li>
            <li>37</li>
            <li>38</li>
            <li>39</li>
        </ul>
    </div>
</div>
<div id="navigator">
    <div id="up" class="btn">UP</div>
    <div id="down" class="btn">DOWN</div>
    <div id="left" class="btn">LEFT</div>
    <div id="right" class="btn">RIGHT</div>
    <div id="pageinfo" class="pageinfo">Page 1 of tot 4</div>
</div>
<div id="test"></div>

还有CSS:

#test {
    position: fixed;
    top: 0px !important;
    left: 0px !important;
    width: 200px;
    height: 200px;
    background-color: blue;
    opacity: 0.2;
}
body {
    margin: 0;
    padding: 0;
}
#wrapper {
    position: fixed;
    top: 0px;
    left: 0px;
    width: 600px;
}
#navigator {
    position: absolute;
    left: 600px;
}
ul {
    list-style: none;
}
li:nth-child(even) {
    background: #d80000;
}
li {
    width: 100px;
    height: 100px;
    background-color: red;
    float: left;
    margin: 0px;
}
.focus {
    background-color: yellow !important;
}
.btn {
    float: left;
    width: 50px;
    height: 50px;
    border: 2px gray solid;
    margin: 10px;
}

什么出了问题?当我给#wrapper设置绿色背景时,它会显示在页面的左上角...? - GreyRoofPigeon
你的代码运行良好。 - Bhojendra Rauniyar
2
我意识到这个CSS只是为了解决问题,但在一个良好编写的CSS集中,!important实际上不应该是必要的。一旦你开始使用!important,很快就会变得无法在没有!important的情况下进行样式设置,这将使你回到原始问题,即样式应该足够有组织地层叠(当然有框架的例外,比如AngularJS,但只在极少数情况下)。这只会使代码更难维护。 - lee_gladding
2个回答

10

你的 CSS 实际上已经是正确的了,但每个浏览器都有默认样式,其中包括默认的 margin 和 padding。这就是导致元素位置奇怪的原因。

在顶部添加以下“重置”CSS即可解决:

*{
    margin: 0;
    padding: 0;
}

Fiddle


你可以使用 *, body{margin:0;padding:0;} 代替两者。 - Albzi
他已经在body中设置了margin: 0; padding: 0;,对于position fixed它没有被赋值。 - Bhojendra Rauniyar
6
@BeatAlex,“body”部分可以完全删除,因为“*”已经包含了消息体。 - Praxis Ashelin

2

只需使用此CSS,因为您的ul元素采用默认边距和填充。

ul {
            list-style: none;
            margin:0px;
            padding:0px;
        }

这在这里可以正常工作。


1
@C-Link 不是的,OP想要他的#wrapper在左上角。#test div只是一个示例,展示了他想要的效果。 - Praxis Ashelin
@C-Link,不要在不理解问题和答案的情况下发表评论。 - Love Trivedi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接