如何设置只有CSS(没有JavaScript)的动态响应div?

时间:2015-01-23 14:36:24

标签: html css

基本上我想要的是我的主要div根据类别div的高度或内容(以较高者为准)拉伸所需的数量;和我的产品图片。 This is the ominous site

我的问题如下:

  • 内容div和类别div都是主div的子节点,但是产品的图片浮出了它。最终在缩放时它也向右浮动。

  • 因此,如果我将#main宽度设置为百分比,则缩放变得非常愚蠢,(缩小不会使图片变小,也不会使div或徽标,只有类别中的按钮。 但是,如果我设置为常数,那么它很好,但又如何响应呢?

  • 为什么类别的边界不在正确的位置? (垂直方向)

  • 在响应式移动视图中,图片再次位于所有内容之上,并且有一个滚动条,当我禁用缩放时,它应显示全屏。我必须在这里遗漏一些重要的东西。页脚也位于所有内容的中间,标题和类别之间还有一个额外的黑色部分,但这些元素中没有任何边距或填充。 See it here

提前致谢!

ps:我已经尝试了许多事情,从改变高度,宽度,玩边距,溢出开始,但无法找到如何正确地做到这一点的线索。 pps:我已在此处插入代码,因此您无需在上述网站上打开源代码,以便更快地进行检查。

body {
  background-color: #161718;
  background-image: url('../pictures/mdbg.png');
  background-position: center;
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-size: 100% auto;
  margin: 0px;
  padding: 0px;
}
header {
  width: 100%;
  height: 60px;
  background: linear-gradient(to bottom, rgba(230, 16, 16, 1) 1%, rgba(136, 7, 8, 1) 100%) repeat scroll 0 0 rgba(0, 0, 0, 0);
}
#main {
  margin: 0 auto;
  width: 60%;
  background-color: #1d1e20;
  border-right: 3px solid #880708;
  border-left: 3px solid #880708;
  border-bottom: 3px solid #880708;
  height: 100%;
  min-height: 200px;
  position: relative;
}
#logo {
  margin: 20%;
  white-space: nowrap;
  overflow: hidden;
  width: 40%;
}
#categories {
  width: 15%;
  border-right: 3px solid #880708;
  height: 100%;
  padding: 0;
  float: left;
  font: 12px Verdana;
  list-style-type: none;
  text-align: center;
  white-space: nowrap;
}
ul#categories a {
  background: linear-gradient(to bottom, rgba(193, 32, 38, 1) 1%, rgba(104, 12, 13, 1) 100%) repeat scroll 0 0 rgba(0, 0, 0, 0);
  text-shadow: 1px 1px 0 #000000;
  border-radius: 2px;
  color: white;
  display: inline-block;
  font-size: 1.3em;
  margin: 4px;
  padding: 2px 2px;
  text-decoration: none;
  width: 80%;
}
#content {
  float: right;
  width: 85%;
  height: 100%;
  position: absolute;
  margin: 0 auto;
}
#content img {
  width: 26%;
  position: relative;
  top: 5%;
  left: 25%;
}
footer {
  width: 100%;
  height: 20px;
  background-color: black;
  color: white;
  text-align: center;
  border-top: 3px solid #880708;
  position: absolute;
  bottom: 0;
}
/* Laptop/Tablet (1366px) */

@media only screen and (min-width: 1025px) and (max-width: 1366px) and (orientation: landscape) {
  header {
    width: 100%;
  }
  #main {
    width: 1000px;
  }
  footer {
    width: 100%;
  }
  #categories {
    width: 15%;
  }
  #content {
    width: 85%;
  }
}
/* Laptop/Tablet (1024px) */

@media only screen and (min-width: 481px) and (max-width: 1024px) and (orientation: landscape) {
  header {
    width: 100%;
  }
  #main {
    width: 100%;
    border: none;
  }
  footer {
    width: 100%;
  }
  #categories {
    width: 20%;
  }
  #content {
    width: 80%;
    top: 5%;
    left: 38%;
  }
}
/* Tablet Portrait (768px) */

@media only screen and (min-width: 321px) and (max-width: 1024px) and (orientation: portrait) {
  header {
    width: 100%;
    height: 10%;
    padding: 0px;
  }
  body {
    background-image: none;
  }
  #main {
    border: 0px;
    width: 100%;
    min-width: 200px;
  }
  footer {
    width: 100%;
    position: absolute;
  }
  #logo {
    display: none;
  }
  #categories {
    width: 100%;
    border: 0px;
  }
  ul#categories a {
    width: 100%;
    font-size: 2.6em;
    margin: 0 auto;
    padding-top: 10px;
    padding-bottom: 10px;
    display: inline-block;
  }
  #content {
    width: 100%;
    margin: 0 auto;
    left: 15%;
    overflow: scroll;
  }
  #content img {
    width: 80%;
    position: relative;
    top: 5%;
    left: 0%;
  }
}
/* Phone Landscape (480px) */

@media only screen and (min-width: 321px) and (max-width: 480px) and (orientation: landscape) {
  .box {
    float: left;
  }
  header {
    width: 100%;
    height: 40px;
  }
  main {
    width: 100%;
  }
  footer {
    width: 100%;
  }
  #categories {
    width: 100%;
  }
  #content {
    width: 100%;
  }
}
/* Phone Portrait (320px) */

@media only screen and (max-width: 320px) {
  .box {
    float: left;
  }
  header {
    width: 100%;
    height: 40px;
  }
  main {
    width: 100%;
  }
  footer {
    width: 100%;
  }
  #categories {
    width: 100%;
  }
  #content {
    width: 100%;
  }
}
<html>

<head>
  <link rel="stylesheet" type="text/css" href="www.verychard.com/responsive/styles/style.css">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />
  <!--320 mobile devices cant zoom-->
  <title>Webshop</title>
</head>

<body>

  <header></header>

  <div id="main">


    <ul id="categories">
      <img id="logo" src="http://www.verychard.com/responsive/kecske.png" />
      <li><a>Motherboard</a>
      </li>
      <li><a>Processor</a>
      </li>
      <li><a>Memory</a>
      </li>
      <li><a>FSP</a>
      </li>
      <li><a>Whatever</a>
      </li>
      <li><a>Monitor</a>
      </li>
      <li><a>Motherboard</a>
      </li>
      <li><a>Processor</a>
      </li>
      <li><a>Memory</a>
      </li>
      <li><a>FSP</a>
      </li>
      <li><a>Whatever</a>
      </li>
      <li><a>Monitor</a>
      </li>
    </ul>

    <div id="content">
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
      <img src="http://www.verychard.com/responsive/termek.png" alt="picture" />
    </div>


    <footer>All rights reserved Kecske PC 2015</footer>
  </div>

</body>

</html>

1 个答案:

答案 0 :(得分:0)

添加了一个普遍接受的clearfix版本,并删除了很多定位。最重要的是你的宽度是15%+ 85%= 100%+ 3px的边框,所以它强制元素下降到下一行,这就是为什么我怀疑你需要绝对定位让它留在你想要的地方,所以现在它分别为15%和75%。这不是完美的,但我希望这是一个开始。

body {
  background-color:#161718;
  background-image:url('../pictures/mdbg.png');
  background-position:center; 
  background-repeat:no-repeat;
  background-attachment: fixed;
  background-size: cover;
  margin: 0px;
  padding: 0px;
  height: 100%;
}

header{
  width:100%;
  height: 60px;
  background: linear-gradient(to bottom, rgba(230, 16, 16, 1) 1%, rgba(136, 7, 8, 1) 100%) repeat scroll 0 0 rgba(0, 0, 0, 0);
}

.clearfix:after {
  content: "";
  display: table;
  clear: both;
}

#main{
  margin: 0 auto;
  width: 60%;
  background-color: #1d1e20;
  border: 3px solid #880708;
  border-top: 0px none transparent;
  min-height: 200px;
  position:relative;
}

#logo{
  margin: 20%;
  white-space:nowrap;
  overflow:hidden;
  width: 40%;
}

#categories{
  width: 15%;
  border-right: 3px solid #880708;
  margin: 0;
  height: 100%;
  padding: 0;
  float:left;
  font: 12px Verdana;
  list-style-type: none;
  text-align:center;
  white-space:nowrap;
}


ul#categories a {
  background: linear-gradient(to bottom, rgba(193, 32, 38, 1) 1%, rgba(104, 12, 13, 1) 100%) repeat scroll 0 0 rgba(0, 0, 0, 0);
  text-shadow: 1px 1px 0 #000000;
  border-radius: 2px;
  color: white;
  display: inline-block;
  font-size: 1.3em;
  margin: 4px;
  padding: 2px 2px;
  text-decoration: none;
  width: 80%;   
}

#content{
  float:right;
  width:75%; /* 100% - 15% - 3px > 85% so mind the gap */
  height: 100%;
  margin: 0;
  padding: 0;
}

#content img{
  width: 26%;
}

footer {
  width: 100%; 
  height: 20px;
  background-color: black;
  color:white;
  text-align:center;
  border-top: 3px solid #880708;
  bottom: 0;
}



/* Laptop/Tablet (1366px) */
@media only screen and (min-width: 1025px) and (max-width: 1366px) and (orientation: landscape) {
  header {  }
  #main { width: 1000px; }
  footer {  }
  #categories {  }
  #content {  }
}

/* Laptop/Tablet (1024px) */
@media only screen and (min-width: 481px) and (max-width: 1024px) and (orientation: landscape) {
  header { }
  #main { width: 100%; border:none;}
  footer {  }
  #categories { width: 20%; }
  #content { width: 70%; }
}

/* Tablet Portrait (768px) */
@media only screen and (min-width: 321px) and (max-width: 1024px) and (orientation: portrait) {

  header { height: 10%; padding: 0px;}
  body {background-image:none;}
  #main {  border:0px; width: 100%; min-width: 200px;}
  footer { }
  #logo {display:none;}
  #categories { width: 100%; border:0px;}
  ul#categories a { width:100%; font-size:2.6em; margin: 0 auto; padding-top:10px; padding-bottom: 10px; display: inline-block;}
  #content {width: 100%; margin: 0 auto; left: 15%; overflow:scroll; padding-top: 15px;}
  #content img{width: 80%;}

}

/* Phone Landscape (480px) */
@media only screen and (min-width: 321px) and (max-width: 480px) and (orientation: landscape) {
  .box { float: left; }
  header {height: 40px;}
  main { width: 100%; }
  footer { }
  #categories { width: 100%; }
  #content { width: 100%; }
}

/* Phone Portrait (320px) */
@media only screen and (max-width: 320px) {
  .box { float: left; }
  header { height: 40px;}
  main { width: 100%; }
  footer {  }
  #categories { width: 100%;}
  #content { width: 100%; }
}

对html进行一些小改动

<html>
  <head>
    <link rel="stylesheet" type="text/css" href="styles/style.css">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"> <!--320 mobile devices cant zoom-->
    <title>Webshop</title>
    <style type="text/css"></style>
  </head>

  <body>

    <header></header>

    <div id="main" class="clearfix">


      <ul id="categories">
        <img id="logo" src="kecske.png">
        <li><a>Motherboard</a></li>
        <li><a>Processor</a></li>
        <li><a>Memory</a></li>
        <li><a>FSP</a></li>
        <li><a>Whatever</a></li>
        <li><a>Monitor</a></li>
        <li><a>Motherboard</a></li>
        <li><a>Processor</a></li>
        <li><a>Memory</a></li>
        <li><a>FSP</a></li>
        <li><a>Whatever</a></li>
        <li><a>Monitor</a></li>
      </ul>

      <div id="content">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">
        <img src="termek.png" alt="picture">

      </div>


      <div class="clearfix"></div>
      <footer>All rights reserved Kecske PC 2015</footer>
    </div>


    <style>.tb_button {padding:1px;cursor:pointer;border-right: 1px solid #8b8b8b;border-left: 1px solid #FFF;border-bottom: 1px solid #fff;}.tb_button.hover {borer:2px outset #def; background-color: #f8f8f8 !important;}.ws_toolbar {z-index:100000} .ws_toolbar .ws_tb_btn {cursor:pointer;border:1px solid #555;padding:3px}   .tb_highlight{background-color:yellow} .tb_hide {visibility:hidden} .ws_toolbar img {padding:2px;margin:0px}</style>
  </body>
</html>

编辑:修正了一些格式化(不要复制表格控制台,这对你的强迫症来说很糟糕)。