【问题标题】:resizing div height so it always fits the page调整 div 高度,使其始终适合页面
【发布时间】:2015-01-09 21:10:08
【问题描述】:

大家好,我正在尝试调整 DIV 的大小以始终适合我的页面的 90%。我有一个页脚 (.kontakt),我希望它始终位于屏幕底部,因此我需要我的 DIV 进行缩放(如果它太大,滚动时页脚不会移动)。我正在使用 jquery 将外部 html 文件加载到我的 div 中,并且 div 总是调整大小以适应内容。问题是,我不想在 css 中设置 max-height、min-height,但希望每次浏览器窗口调整大小时 div 都会调整大小。

是否有一个我找不到的简单解决方案,我可以编写一个函数来做到这一点吗? 我可以使用什么事件处理程序来触发浏览器窗口大小调整?

我想我可以只在页脚上使用 position:fixed(如果它有效,还没有实际尝试过),但我更喜欢在我的 div 上有滚动条(因此溢出:auto;)而不是在浏览器窗口中滚动。感谢您的帮助

$(document).ready(function() {
  $('.content').load('pages/test.html');
  console.log("content loaded");

  $(".kontakt").hover(
    function() {
      $(".kontakt").width("20%");
      $(".kontakt").css("margin-left", "40%");

      $(".kontakt").append("<a class='kontakttext'>mobitel: 031-535-919</a>");
      $(".kontakt").append("<br><a class='kontakttext'>stacionarni tel.: 01-3664-515</a><br>");
      $(".kontakt").append("<br><a class='kontakttext'>email: </a><a class='kontaktmail' href='mailto:sustersic_miha@hotmail.com'>sustersic_miha@hotmail.com</a><br>");
      $(".kontakt").append("<br><a class='kontakttext'>Visoko 19<br>1292 Ig<br>Slovenija</a>");
    },
    function() {
      $(".kontakt").empty();
      $(".kontakt").width("10%");
      $(".kontakt").css("margin-left", "45%");
      $(".kontakt").append("<div class='kontaktlabelbox'><div class='kontaktlabel'>Kontakt</div></div>");
    });
  $(".menubutton").hover(
    function() {
      $(this).css("color", "#cccccc");
      $(this).prev().css("color", "#cccccc");
      $(this).next().css("color", "#cccccc");
    },
    function() {
      $(this).css("color", "#ffffff");
      $(this).prev().css("color", "#ffffff");
      $(this).next().css("color", "#ffffff");
    });

});
body {
  margin: 0;
  font-family: verdana;
  background-image: url("images/background_test.jpg");
  background-size: cover;
}
.topmenu {
  width: 90%;
  margin: auto;
  background-color: #000066;
  border-radius: 0px 0px 10px 10px;
  text-align: center;
  opacity: 0.7;
}
.menubutton {
  margin-top: 5px;
  margin-bottom: 5px;
  display: inline-block;
  background-color: #000066;
  color: #ffffff;
  font-weight: bolder;
  padding: 2px;
}
.activatedmenubutton {
  background-color: #cccccc;
}
.menubreak {
  background-color: #000066;
  display: inline-block;
  color: #ffffff;
  padding: 2px;
}
.kontaktlabel {
  font-weight: bolder;
}
.kontaktlabelbox {
  background-color: #000066;
  color: #ffffff;
  margin-top: 6px;
  margin-bottom: 5px;
}
.kontakttext {
  font-size: 0.7em;
  background-color: #000066;
  color: #ffffff;
}
.kontaktmail {
  font-size: 0.7em;
  text-decoration: none;
  color: #999999;
}
.content {
  margin: auto;
  width: 80%;
  min-height: 200px;
  overflow: auto;
  border: 1px solid black;
}
.kontakt {
  position: absolute;
  bottom: 0;
  width: 10%;
  margin-left: 45%;
  background-color: #000066;
  color: #cccccc;
  border-radius: 10px 10px 0px 0px;
  text-align: center;
}
<!DOCTYPE html>

<html>

<head>
  <title>Iščem delo</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link type="text/css" rel="stylesheet" href="unicornsandrainbows.css" />
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="magic.js"></script>
</head>

<body>
  <div class="topmenu">
    <a class="menubreak" id="1">|</a
            ><a class="menubutton" id="iz">Izobrazba</a
            ><a class="menubreak" id="2">|</a
            ><a class="menubutton" id="zn">Znanja in Kompetence</a
            ><a class="menubreak" id="3">|</a
            ><a class="menubutton" id="izk">Izkušnje</a
            ><a class="menubreak" id="4">|</a
            ><a class="menubutton" id="pč">Prosti Čas</a
            ><a class="menubreak" id="5">|</a
            ><a class="menubutton" id="fo">Fotografije</a
            ><a class="menubreak" id="6">|</a>
  </div>
  <div class="content">
  </div>
  <div class="kontakt">
    <div class="kontaktlabelbox">
      <div class="kontaktlabel">Kontakt</div>
    </div>
  </div>
</body>

</html>

【问题讨论】:

  • 老实说,我认为 CSS 是您最好的路线...按照您的说法修复页脚,将 div 的高度设置为 90%,并将 overflow: scroll 应用到它。跨度>

标签: javascript jquery html css


【解决方案1】:

这使得.contact 的高度总是等于窗口高度的 90%:

$(document).ready(function() {
  $('.content').load('pages/test.html');
  console.log("content loaded");

  $(".kontakt").hover(
    function() {
      $(".kontakt").width("20%");
      $(".kontakt").css("margin-left", "40%");

      $(".kontakt").append("<a class='kontakttext'>mobitel: 031-535-919</a>");
      $(".kontakt").append("<br><a class='kontakttext'>stacionarni tel.: 01-3664-515</a><br>");
      $(".kontakt").append("<br><a class='kontakttext'>email: </a><a class='kontaktmail' href='mailto:sustersic_miha@hotmail.com'>sustersic_miha@hotmail.com</a><br>");
      $(".kontakt").append("<br><a class='kontakttext'>Visoko 19<br>1292 Ig<br>Slovenija</a>");
    },
    function() {
      $(".kontakt").empty();
      $(".kontakt").width("10%");
      $(".kontakt").css("margin-left", "45%");
      $(".kontakt").append("<div class='kontaktlabelbox'><div class='kontaktlabel'>Kontakt</div></div>");
    });
  $(".menubutton").hover(
    function() {
      $(this).css("color", "#cccccc");
      $(this).prev().css("color", "#cccccc");
      $(this).next().css("color", "#cccccc");
    },
    function() {
      $(this).css("color", "#ffffff");
      $(this).prev().css("color", "#ffffff");
      $(this).next().css("color", "#ffffff");
    });

});

$(window).load(function() { $(window).trigger('resize') });

$(window).resize(function() {
   h = $(window).height() * 0.9;
   $('.content').css({'height': h + 'px'});
});
body {
  margin: 0;
  font-family: verdana;
  background-image: url("images/background_test.jpg");
  background-size: cover;
}
.topmenu {
  width: 90%;
  margin: auto;
  background-color: #000066;
  border-radius: 0px 0px 10px 10px;
  text-align: center;
  opacity: 0.7;
}
.menubutton {
  margin-top: 5px;
  margin-bottom: 5px;
  display: inline-block;
  background-color: #000066;
  color: #ffffff;
  font-weight: bolder;
  padding: 2px;
}
.activatedmenubutton {
  background-color: #cccccc;
}
.menubreak {
  background-color: #000066;
  display: inline-block;
  color: #ffffff;
  padding: 2px;
}
.kontaktlabel {
  font-weight: bolder;
}
.kontaktlabelbox {
  background-color: #000066;
  color: #ffffff;
  margin-top: 6px;
  margin-bottom: 5px;
}
.kontakttext {
  font-size: 0.7em;
  background-color: #000066;
  color: #ffffff;
}
.kontaktmail {
  font-size: 0.7em;
  text-decoration: none;
  color: #999999;
}
.content {
  margin: auto;
  width: 80%;
  min-height: 200px;
  overflow: auto;
  border: 1px solid black;
}
.kontakt {
  position: absolute;
  bottom: 0;
  width: 10%;
  margin-left: 45%;
  background-color: #000066;
  color: #cccccc;
  border-radius: 10px 10px 0px 0px;
  text-align: center;
}
<!DOCTYPE html>

<html>

<head>
  <title>Iščem delo</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link type="text/css" rel="stylesheet" href="unicornsandrainbows.css" />
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="magic.js"></script>
</head>

<body>
  <div class="topmenu">
    <a class="menubreak" id="1">|</a
            ><a class="menubutton" id="iz">Izobrazba</a
            ><a class="menubreak" id="2">|</a
            ><a class="menubutton" id="zn">Znanja in Kompetence</a
            ><a class="menubreak" id="3">|</a
            ><a class="menubutton" id="izk">Izkušnje</a
            ><a class="menubreak" id="4">|</a
            ><a class="menubutton" id="pč">Prosti Čas</a
            ><a class="menubreak" id="5">|</a
            ><a class="menubutton" id="fo">Fotografije</a
            ><a class="menubreak" id="6">|</a>
  </div>
  <div class="content">
  </div>
  <div class="kontakt">
    <div class="kontaktlabelbox">
      <div class="kontaktlabel">Kontakt</div>
    </div>
  </div>
</body>

</html>

【讨论】:

  • .content 不是联系方式,但是是的,解决方案完美运行,正是我想要的。谢谢
【解决方案2】:

@John Kapantzakis 已经提供了一个解决方案,但我会尝试在这里为您提供一个非 js 解决方案! 〜如果你想了解这个技巧,请告诉我。 P.S 这个解决方案确实将布局保持在 90%,但足以让页脚有自己的负区域。继续玩它,让我知道它是否是你想要的。

body {
  margin: 0;
  font-family: verdana;
  background-image: url("images/background_test.jpg");
  background-size: cover;
}
.topmenu {
  width: 90%;
  margin: auto;
  background-color: #000066;
  border-radius: 0px 0px 10px 10px;
  text-align: center;
  opacity: 0.7;
}
.menubutton {
  margin-top: 5px;
  margin-bottom: 5px;
  display: inline-block;
  background-color: #000066;
  color: #ffffff;
  font-weight: bolder;
  padding: 2px;
}
.activatedmenubutton {
  background-color: #cccccc;
}
.menubreak {
  background-color: #000066;
  display: inline-block;
  color: #ffffff;
  padding: 2px;
}
.kontaktlabel {
  font-weight: bolder;
}
.kontaktlabelbox {
  background-color: #000066;
  color: #ffffff;
  margin-top: 6px;
  margin-bottom: 5px;
}
.kontakttext {
  font-size: 0.7em;
  background-color: #000066;
  color: #ffffff;
}
.kontaktmail {
  font-size: 0.7em;
  text-decoration: none;
  color: #999999;
}
.content {
  margin: auto;
  width: 80%;
  min-height: 200px;
  height: 100%;
  overflow: auto;
  border: 1px solid black;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  -o-box-sizing: border-box;
  box-sizing: border-box;
}
.kontakt {
    background-color: #000066;
    border-radius: 10px 10px 0 0;
    bottom: 0;
    color: #cccccc;
    display: inline-block;
    margin: 10px auto 0;
    padding: 0 7px;
    position: static;
    text-align: center;
}
body, html{ height: 100%; }
.t-layout{ display: table; width: 100% }
.t-layout--full{ height: 100%; }
.t-row{ display: table-row; }
.t-col{ display: table-cell; }
.t-col--top{ vertical-align: top; }
.t-col--mid{ vertical-align: middle; }
.t-col--bot{ vertical-align: bottom; }
.t-col--compress{ height: 1px; }
.t-a-c{ text-align: center; }
.content-wrap{ position: absolute; width: 100%; height: 100%; left: 0; top: 0; overflow-y: auto;}
.relative{ position: relative; }
<!DOCTYPE html>

<html>

  <head>
    <title>Iščem delo</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link type="text/css" rel="stylesheet" href="unicornsandrainbows.css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="magic.js"></script>
  </head>

  <body>
    <div class="t-layout t-layout--full">
      <div class="t-row">
        <div class="t-col t-col--compress">
          <div class="topmenu">
            <a class="menubreak" id="1">|</a
                    ><a class="menubutton" id="iz">Izobrazba</a
                    ><a class="menubreak" id="2">|</a
                    ><a class="menubutton" id="zn">Znanja in Kompetence</a
                    ><a class="menubreak" id="3">|</a
                    ><a class="menubutton" id="izk">Izkušnje</a
                    ><a class="menubreak" id="4">|</a
                    ><a class="menubutton" id="pč">Prosti Čas</a
                    ><a class="menubreak" id="5">|</a
                    ><a class="menubutton" id="fo">Fotografije</a
                    ><a class="menubreak" id="6">|</a>
          </div>
        </div><!--.t-col -->
      </div><!--.t-row -->
      <div class="t-row">
        <div class="t-col t-col--top relative">
          <div class="content-wrap">
            <div class="content">
            </div>
          </div>
        </div><!--.t-col -->
      </div><!--.t-row -->
      <div class="t-row">
        <div class="t-col t-a-c t-col--bot t-col--compress">
          <div class="kontakt">
            <div class="kontaktlabelbox">
              <div class="kontaktlabel">Kontakt</div>
            </div>
          </div>
        </div><!--.t-col -->
      </div><!--.t-row -->
    </div><!--.t-layout -->
  </body>

</html>

【讨论】:

    猜你喜欢
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 2011-11-22
    • 2012-04-14
    相关资源
    最近更新 更多