首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何缩放此布局?

如何缩放此布局?
EN

Stack Overflow用户
提问于 2013-01-31 00:28:28
回答 4查看 842关注 0票数 14

我已经在这个布局上工作了一段时间了,每走一次我都会遇到一些障碍(v1 of this:https://stackoverflow.com/questions/14572569/how-can-i-contain-pos-abs-div-within-specific-area)

我现在要做的是让.spread的大小适应浏览器窗口的宽度和高度,这样它就永远不会超过用户当前在浏览器中可以看到的宽度/高度(出于演示目的,.spread目前有固定的宽度/高度)。理想的情况是能够在飞行中调整大小,并且它可以立即适应(即没有媒体查询)。

在我上面链接的v1版本中,它可以正常工作,但是由于.spread缺少实际的宽/高,所以我在淡入淡出效果时遇到了问题。

这是新的演示:

http://jsbin.com/uciguf/1

更新:只要标记按照描述的那样工作,就可以对其进行更改。

代码语言:javascript
复制
<div class="scrollblock" id="scroll_spread-1">
    <div class="action"><!-- --></div>
    <!--  -->       
</div>
<div class="scrollblock" id="scroll_spread-2">
    <div class="action"><!-- --></div>
    <!--  -->       
</div>

<div class="contentblock" id="spread-1">
    <div class="inner windowwidth windowheight">
        <div class="content">
            <span></span>
            <div class="spread">
                <div class="fade"><!-- --></div>
                <div class="left centerimage">
                    <img src="http://s7.postimage.org/8qnf5rmyz/image.jpg">
                </div>
                <div class="right centerimage">
                    <a href="#scroll_spread-2"><img src="http://s7.postimage.org/kjl89zjez/image.jpg"></a>
                </div>
            </div>  
        </div>  
    </div>  
</div>

<div class="contentblock" id="spread-2">
    <div class="inner windowwidth windowheight">
        <div class="content">
            <span></span>           
            <div class="spread">
                <div class="fade"><!-- --></div>
                <div class="left centerimage">
                    <a href="#scroll_spread-1"><img src="http://s7.postimage.org/5l2tfk4cr/image.jpg"></a>
                </div>
                <div class="right centerimage">
                    <a href="#scroll_spread-3"><img src="http://s7.postimage.org/fjns21dsb/image.jpg"></a>
                </div>
            </div>
        </div>  
    </div>  
</div>
代码语言:javascript
复制
html {
    height: 100%;
}

body {
    background: #eee;
    line-height: 1.2em;
    font-size: 29px;
    text-align: center;
    height: 100%;
    color: #fff;
}

.scrollblock {
    position: relative;
    margin: 0;
    width: 100%;
    min-height: 100%;

    overflow: hidden;
}

.contentblock {
    margin: 0;
    width: 0;
    min-height: 100%;

    overflow: hidden;

    position: fixed;
    top: 0;
    right: 0;
}

.contentblock .inner {
    z-index: 2;

    position: absolute;
    right: 0;
    top: 0;

    background: #eee;
}

.fade {
    width: 100%;
    height: 100%;

    position: absolute;
    right: 0;
    top: 0;

    background-color: #000;
    opacity: 0;

    z-index: 3;
}

.content {
    height: 100%;   
}

.content span {
   height: 100%;
   vertical-align: middle;
   display: inline-block;
}

.content .spread {
    vertical-align: middle;
    display: inline-block;
}

#spread-1 {
    color: #000;
    z-index: 105;
}

#spread-2 {
    z-index: 110;
}

.spread {

    max-height: 800px;
    max-width: 1130px;
    position: relative;
}

.spread .left {
    position: relative;
    width: 50%;
    float: left;
    text-align: right;
    height: 100%;
}
.spread .right {
    position: relative;
    width: 50%;
    float: left;
    text-align: left;
    height: 100%;
}

div.centerimage {
    overflow: hidden;
}
div.centerimage img {
    max-width: 100%;
    max-height: 100%;
}

div.centerimage span {
    height: 100%;
    vertical-align: middle;
    display: inline-block;
}
div.centerimage img {
    vertical-align: middle;
    display: inline-block; 
}

附注:标题真的很糟糕,不知道我在找什么,但如果你能想到更好的,请换成更有信息性的东西。

EN

回答 4

Stack Overflow用户

发布于 2013-02-03 22:22:33

实现完整解决方案的四分之三

这还不是一个完整的解决方案,因为它不能适应超窄宽度的窗口大小(就像你的旧版本一样)。然而,这是朝着您所寻求的方向迈出的很好的一步。

Here is the example.

已更改的关键内容:

添加了

代码语言:javascript
复制
.spread { height: 93%; } /* You had originally wanted a height difference */

已删除

来自div.centerimage.

  • width: 50%
  • overflow: hidden来自.left.right.
票数 4
EN

Stack Overflow用户

发布于 2013-02-14 02:14:39

也许你可以把你的.spread除数

代码语言:javascript
复制
.spread {
  bottom: 11px;
  left: 11px;
  right: 11px;
  top: 11px;
  position: absolute;
  /* ... */
}

这样,它的大小将与视口区域的大小相同。

这里是一个演示的jsFiddle

继续

票数 1
EN

Stack Overflow用户

发布于 2013-02-04 08:12:42

我知道您可能正在寻找一个单独的CSS/HTML解决方案,但实际上您最好使用一些Javascript。仅仅使用CSS和HTML是不可能做到干净和精确的。但是,如果您在页面加载和调整窗口大小时运行少量的JavaScript,那么您的div就可以拥有实际的高度/宽度值并清晰地缩放。诀窍是让外部div获得由JavaScript设置的宽度/高度,然后它的所有子元素都使用% dimensions,以便它们适当地增长。

下面是使用一些JQuery的基础知识:

代码语言:javascript
复制
<script type="text/javascript">
//Function to get the current window dimensions.
function get_window_dims() {
    var dims = [];
        if (parseInt(navigator.appVersion)>3) {
            if (navigator.appName=="Netscape") {
                dims[0] = window.innerWidth;
                dims[1] = window.innerHeight;
            }
            if (navigator.appName.indexOf("Microsoft")!=-1) {
                dims[0] = document.body.offsetWidth;
                dims[1] = document.body.offsetHeight;
            }
        }
    return dims;
}
function ResizeDivs {
    var dims = get_widnow_dims();
    var div_width = Math.floor(dims[0] * 0.93); // calculating the div width to be 93% of the window width
    $('div.spread').css('width',div_width+'px');
}
$(function() {
    ResizeDivs();
    $(window).resize(function(){
         ResizeDivs();
    });
});
</script>

您可以轻松地清理此代码以使其更简洁,但我认为我在这里这样做是为了让您看到所有部分。如果你想花更多的时间,你甚至可以添加更多的JQuery来在窗口调整大小时为div添加动画。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14608884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档