使用CSS控制浏览器高度的DIV宽度

时间:2013-11-14 01:31:51

标签: html css html5 css3 responsive-design

首先在这里查看我的测试页面: http://www.joblesspunkdesigns.com/stackoverflow/main/

我要做的是使用CSS控制浏览器高度的DIV宽度。我不想使用Javascript,Jquery或任何其他语言。

从我的测试页面可以看出,如果您将浏览器从200px的高度扩展到840px,我的“contentwrapper”DIV会相应地缩放。我用每次20px的34次@media查询完成了这个...不是最好的方法,但正如你所看到的,它有效......有点......

我的END目标是让“contentwrapper”DIV中的所有内容始终垂直和水平居中以及重新调整大小,以确保“contentwrapper”DIV中的所有内容始终可见,而无需滚动酒吧。

有没有人知道实现我想做的事情的可行方法?

谢谢你的帮助!

/*HTML*/

<div class="content">
    <div class="contentwrapper">
        <img class="carousel" src="img/projectimage_placeholder.jpg"/>
        <h2>Project Name</h2>
        <div class="carouselnav"></div>
    </div>
</div>


/*CSS*/

.contentwrapper {
left: 1.25rem;
right: 1.25rem;
margin: 0 auto;
}

@media all and (min-height:200px) {
.contentwrapper {
width: 149px;
margin-top: 0.3%;
}}

@media all and (min-height:220px) {
.contentwrapper {
width: 154px;
margin-top: 1.5%;
}}

@media all and (min-height:240px) {
.contentwrapper {
width: 170px;
margin-top: 1.5%;
}}     

依此类推......等等。

5 个答案:

答案 0 :(得分:0)

如果您倾向于使用jQuery解决方案,则只需要利用.resize()事件或.outerWidth().outerHeight()的组合。

我建议你开始here并制定一个最适合你的计划。

答案 1 :(得分:0)

你在寻找这样的东西:

.content {
    display: table;
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0;
    top: 0;
}

.contentwrapper {
    display: table-cell;
    width: 100%;
    height: 100%;
    text-align: center;
    vertical-align: middle;
}

img {
    max-width: 100%;
    height: auto;
}

fiddle

答案 2 :(得分:0)

不确定你对垂直居中的意思,但你应该可以从这里开始工作:

<div class="container">

    <div class="l-table">
        <div class="l-table--cell">
            <div class="l-table--center">
                <article>
                COntent
                </article>

            </div>
        </div>
    </div>
</div>

/******** Main Layout Blocks ********/
html,
body
  // To avoid scrollbar
  height: 100%

.container
  // ^ needs to get 100% height as well
  height: 100% 
  margin:       auto
  max-width:    800px
  overflow-y: auto


/******** Layout-Classes for centering ********/
.l-table
  display: table
  height: 100%
  .lt-ie8 &
    // Polyfill for IE7 applied with parent selector
  //  behavior: url(polyfills/display-table.min.htc)

.l-table--cell
  display: table-cell
  vertical-align: middle

.l-table--center
  margin: 0 auto

http://codepen.io/johannesjo/pen/jrGdq

以及使用此技术的另一种布局: http://codepen.io/johannesjo/pen/bmlnD

答案 3 :(得分:0)

如果我理解正确的话,我曾经做过类似的事情。当您仅设置侧面尺寸并将另一侧保留为“自动”时,浏览器会保持图像纵横比。所以,使用一个奇怪的黑客你可以依赖它。我现在没有代码,但这是个想法:

你有div想要根据高度尊重某个比例,让我们说这是一个带有ID'包装'的div,所以,你的css会是这样的:

#wrapper {
  height: 80%; //use what you need to make the height relative
}

然后在该包装器中你将有两件事:一个内联块透明图像,你想要的比例和一个绝对定位div你的内容将是:

<div id='wrapper'>
  <img src='mi_inivisible_hack.png' id='invisible_hack' alt='' />
  <div id='wrapper_content'>Your content here</div>
</div>

现在css将是:

#wrapper {
  height: 80%;
  width: auto;
  position: relative;
}

#invisible_hack {
  height: 100%;
  width: auto;
}

#wrapper_content {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

现在,当您调整窗口大小时,#wrapper将变小,然后图像必须变小,#wrapper将缩小到与您的比例相关的内容(图像)。然后#wrapper_content也会缩小,因为它从0左移到0右0和0从上到0。

这是一个小小的黑客,但我认为它很有效且流畅。

答案 4 :(得分:0)

如下所述 - 不使用百分比而非像素值适合您吗?