【问题标题】:Div is stuck inside another divdiv 卡在另一个 div 中
【发布时间】:2016-05-27 17:54:28
【问题描述】:

我有一个 DIV,里面有一个 H2。 DIV 与所有其他工作完全分开,位于 HTML 的底部,但由于某种原因,它粘在页面顶部,位于其他 DIV 中。我试过谷歌搜索但无济于事,我需要它在后台开始处理新部分。我应该看什么?

https://jsfiddle.net/5vLvm3xx/

ps。我不知道有多少人浏览这些论坛,但我今天在这里问了很多问题,因为我一直遇到这些阻止我继续的小问题(我是初学者)。我希望它没有麻烦。 :)

HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>onepageskiw</title>
<link href="styles.css" rel="stylesheet" type="text/css">
<script src="js.js"></script>
</head>
<body>

<div>
<nav>
    <ul id="menu">
        <li><a href="#">Top</a></li>
        <li><a href="#">Om Eventet</a></li>
        <li><a href="#">Lokation</a></li>
        <li><a href="#">Kontakt</a></li>
    </ul>
</nav>
</div>

<div id="logodiv">
<img src="../design/logotop.png">
</div>

<div id="overskrift">
<h1>EVENTET STARTER OM</h1>
</div>

<div id="countdowner">
<table id="table">
<tr>
<div id="countdown">
<td id="id1"></td>
<td id="id2"></td>
<td id="id3"></td>
<td id="id4"></td>
</div>
<tr>
<tr>
<td class="timeLabel">DAGE</td>
<td class="timeLabel">TIMER</td>
<td class="timeLabel">MIN</td>
<td class="timeLabel">SEK</td>
</tr>
</tr>
</tr>
</table>
</div>

<script>
CountDownTimer('06/25/2016 10:00 AM', 'id');

function CountDownTimer(dt, id)
{
    var end = new Date(dt);

    var _second = 1000;
    var _minute = _second * 60;
    var _hour = _minute * 60;
    var _day = _hour * 24;
    var timer;

    function showRemaining() {
        var now = new Date();
        var distance = end - now;
        if (distance < 0) {

            clearInterval(timer);
            document.getElementById(id).innerHTML = 'EXPIRED!';

            return;
        }
        var days = Math.floor(distance / _day);
        var hours = Math.floor((distance % _day) / _hour);
        var minutes = Math.floor((distance % _hour) / _minute);
        var seconds = Math.floor((distance % _minute) / _second);

        document.getElementById(id+"1").innerHTML = days;
        document.getElementById(id+"2").innerHTML = hours;
        document.getElementById(id+"3").innerHTML = minutes;
        document.getElementById(id+"4").innerHTML = seconds;
    }

    timer = setInterval(showRemaining, 1000);
}
</script>

<div id="information">
<h2>Help me. I'm stuck.</h2>
</div>

</body>
</html>

CSS

@charset "utf-8";

@import url(https://fonts.googleapis.com/css?    family=Montserrat:400|Raleway:100,400|);

body {
margin:0;
}

html { 
background:url(http://www.freelargeimages.com/wp-        content/uploads/2014/12/Black_background.jpg) no-repeat center center fixed; 
background-size: cover;    
background-repeat: no-repeat;
/*background-position: top center;*/
}

#logodiv {
position:relative;
text-align:center;
}

#logodiv>img {
width:15%;

}

h1  {
font-family:raleway;
font-weight:100;
position:absolute;  
width:100%;
text-align:center;
color:white;
letter-spacing:11px;
position: absolute;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-230%);
font-size:2.5em;
white-space: nowrap;
}

#countdowner {
font-family:sans-serif;
color:white;
position:absolute;
margin:0;
padding:0;
width:100%;
font-size:2em;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-20%);
}

#id1 {
font-size:2.5em;
}

#id2 {
font-size:2.5em;
}

#id3 {
font-size:2.5em;
}

#id4 {
font-size:2.5em;
}

.timeLabel {
font-size:0.7em;
color:#f1a01e;
font-family:montserrat;
font-weight:700;
}

#table {
margin:0 auto;
text-align:center;
}

#table td{
padding:0px 45px;
}

#menu {
position:absolute;
padding:0;
width:100%;
bottom:0;
text-align:center;
}

#menu>li {
font-size:20px;
list-style:none;
display:inline-block;
text-transform:uppercase;
letter-spacing:3px;
font-family:raleway;
font-weight:400;
}

#menu>li>a {
padding:0 15px;
text-decoration:none;
color:white;
}

#menu>li>a:hover {
color:#f1a01e;
}

#information {
position:relative;  
clear:both;
color:red;
}

【问题讨论】:

  • 那是因为所有其他元素都是绝对放置的......这使得它们在身体上方“流动”。
  • 但是我必须这样做才能使它们在居中和放置方面正常工作,除非我以错误/复杂的方式完成了它?就像我写的那样,我仍然是初学者。我尝试将一些更改为相对,但随后元素开始在页面上跳跃。

标签: html css position move


【解决方案1】:

这是因为你所有的其他元素都在使用position: absolute;

【讨论】:

  • 将它们全部更改为相对(或删除它们)会给我带来一团糟的结果,并且文本似乎仍然卡在 DIV 内:jsfiddle.net/5vLvm3xx/1我做错了什么?
  • 在您更新的小提琴中#information 不包含在任何其他&lt;div&gt; 中,所以我不理解这个问题。如果您想恢复到绝对定位,请将所有其他代码包装在 &lt;div&gt; 中,然后将 #information 放在它下面。
  • 我可能在这里完全遗漏了一些东西,因为文本仍然在背景的“顶部”。为什么它不在它下面,与背景分开?我查看了背景图像的 CSS,但删除任何属性似乎对我没有任何作用。也用谷歌搜索“包装”,但我似乎找不到相关代码?我在所有内容周围放置了一个 DIV(带有红色文本的 DIV 除外)。我应该用这个 DIV “包裹”它来做什么?
  • 该文本将始终显示在背景之上,因为您已将背景图像应用于&lt;html&gt;。您文档中的所有内容都是 &lt;html&gt; 的子项,因此它们将始终显示在其上方。
【解决方案2】:

您可以使用 flex 属性、高度顺序并重新排列结构(1 个包装器和一个类):https://jsfiddle.net/5vLvm3xx/2/

CountDownTimer('06/25/2016 10:00 AM', 'id');

function CountDownTimer(dt, id) {
  var end = new Date(dt);

  var _second = 1000;
  var _minute = _second * 60;
  var _hour = _minute * 60;
  var _day = _hour * 24;
  var timer;

  function showRemaining() {
    var now = new Date();
    var distance = end - now;
    if (distance < 0) {

      clearInterval(timer);
      document.getElementById(id).innerHTML = 'EXPIRED!';

      return;
    }
    var days = Math.floor(distance / _day);
    var hours = Math.floor((distance % _day) / _hour);
    var minutes = Math.floor((distance % _hour) / _minute);
    var seconds = Math.floor((distance % _minute) / _second);

    document.getElementById(id + "1").innerHTML = days;
    document.getElementById(id + "2").innerHTML = hours;
    document.getElementById(id + "3").innerHTML = minutes;
    document.getElementById(id + "4").innerHTML = seconds;
  }

  timer = setInterval(showRemaining, 1000);
}
@charset "utf-8";
@import url(https://fonts.googleapis.com/css?family=Montserrat:400|Raleway:100,400|);
 body {
  margin: 0;
}
html {
 
  background-repeat: no-repeat;
  /*background-position: top center;*/
}
#logodiv {
  position: relative;
  text-align: center;
}
#logodiv>img {
  width: 15%;
}
h1 {
  font-family: raleway;
  font-weight: 100;
  width: 100%;
  text-align: center;
  color: white;
  letter-spacing: 11px;
  font-size: 2.5em;
  white-space: nowrap;
}
#countdowner {
  font-family: sans-serif;
  color: white;
  margin: 0;
  padding: 0;
  width: 100%;
  font-size: 2em;
}
#id1 {
  font-size: 2.5em;
}
#id2 {
  font-size: 2.5em;
}
#id3 {
  font-size: 2.5em;
}
#id4 {
  font-size: 2.5em;
}
.timeLabel {
  font-size: 0.7em;
  color: #f1a01e;
  font-family: montserrat;
  font-weight: 700;
}
#table {
  margin: 0 auto;
  text-align: center;
}
#table td {
  padding: 0px 45px;
}
#menu {
  padding: 0;
  width: 100%;
  bottom: 0;
  text-align: center;
}
#menu>li {
  font-size: 20px;
  list-style: none;
  display: inline-block;
  text-transform: uppercase;
  letter-spacing: 3px;
  font-family: raleway;
  font-weight: 400;
}
#menu>li>a {
  padding: 0 15px;
  text-decoration: none;
  color: white;
}
#menu>li>a:hover {
  color: #f1a01e;
}
#information {
  position: relative;
  clear: both;
  color: red;
}
html,
body,
.splash {
  height: 100%;
}
.splash {
  display: flex;
  flex-flow: column;
  min-height:450px; background: url(http://www.freelargeimages.com/wp-content/uploads/2014/12/Black_background.jpg) no-repeat center center fixed;
  background-size: cover;
}
.splash>* {
  order: -1;
  flex: 1;
}
.splash:before {
  content: '';
  display: block;
  order: 0;
  flex: 1;
}
.menu {
  order: 1;
  flex: none;
  margin-top: auto;
  margin-bottom: 0;
}
<div class="splash">


  <div class="menu">
    <nav>
      <ul id="menu">
        <li><a href="#">Top</a>
        </li>
        <li><a href="#">Om Eventet</a>
        </li>
        <li><a href="#">Lokation</a>
        </li>
        <li><a href="#">Kontakt</a>
        </li>
      </ul>
    </nav>
  </div>

  <div id="logodiv">
    <img src="../design/logotop.png">
  </div>

  <div id="overskrift">
    <h1>EVENTET STARTER OM</h1>
  </div>

  <div id="countdowner">
    <table id="table">
      <tr>
        <div id="countdown">
          <td id="id1"></td>
          <td id="id2"></td>
          <td id="id3"></td>
          <td id="id4"></td>
        </div>
        <tr>
          <tr>
            <td class="timeLabel">DAGE</td>
            <td class="timeLabel">TIMER</td>
            <td class="timeLabel">MIN</td>
            <td class="timeLabel">SEK</td>
          </tr>
    </table>
  </div>

</div>

<div id="information">
  <h2>Help me. I'm stuck.</h2>
</div>

【讨论】:

  • 恐怕我对flex属性一无所知,这是我必须查找的东西。但是您的解决方案似乎确实可以解决问题。但是为什么文本仍然在背景图像的顶部?我错过了什么?
  • @ThorKousted flex 属性没问题,最好是阅读定义和教程,同时使用codepen.io/pen 玩弄它(请参阅您的 html/css 代码)需要一段时间才能熟悉有显示和定位功能,一开始看不懂也别着急。对于文字和图片,我想我确实错过了一些东西,因为我看不到你在说什么:)
  • 你“错过”(或者我解释得很糟糕很可能是:P)是背景在我制作新的 DIV 时重复。如您所见,背景仍在红色文本后面:prntscr.com/b96woh - 我需要背景在 链接之后停止重复/显示,以便我可以开始在红色文本后面使用新背景。有意义吗?
  • @ThorKousted 好的,所以您只需将背景移动到第一个容器(在 sn-p 中使用类 spash :))jsfiddle.net/5vLvm3xx/5
猜你喜欢
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多