【问题标题】:JQueryMobile wrap data-role="content" divJQueryMobile 包装 data-role="content" div
【发布时间】:2013-04-26 16:28:48
【问题描述】:

我想在 data-role="content" 元素周围显示一些静态边框。

<div data-role="page" id="moodle" data-add-back-btn="true">
    <div data-role="header"><h1>MyPage</h1></div>
    <div data-role="content">
        Some Content
    </div>
</div>

为了实现这一点,我目前将我的页面内容包装在一堆 div 中,这些 div 通过 css 创建边框。这些 div 仅在顶部和左侧有边框。

$(document).bind("ready",function(){
$('div[data-role="content"]').each(function(k,v){
    $(v).wrap('<div class="b1"/>');
    $(v).wrap('<div class="b2"/>');
    $(v).wrap('<div class="b3"/>');
    $(v).wrap('<div class="b4"/>');
    $(v).wrap('<div class="content"/>');
});

问题是,当滚动内容时,顶部边框会随着它滚动出视口/标题后面而消失。那么如何将data-role="content"-div “包装”到我的其他 div 中,以确保在内容滚动时边框保持固定?

编辑: 内容 div 左上角的示例(就在标题的正下方)。滚动时,此边框应保持固定:

【问题讨论】:

    标签: jquery css jquery-mobile


    【解决方案1】:

    您可以为元素添加边框,这些元素在内容在其后面滚动时保持在其位置。

    例如这样的伪页面:

    <div data-role="page">
        <div data-position="fixed" data-role="header">
            <h1>Header</h1>
        </div>
        <div data-role="content">
            <p>Content</p>
        </div>
        <div data-position="fixed" data-role="footer">
            <h2>Footer</h2>
        </div>
    </div>​
    

    可以应用这样的 CSS:

    .ui-page .ui-header {
        box-sizing    : border-box;
        border-bottom : 4px solid red;
    }
    .ui-page .ui-footer {
        box-sizing : border-box;
        border-top : 4px solid red;
    }
    .ui-mobile .ui-page {
        box-sizing   : border-box;
        border-left  : 4px solid red !important;
        border-right : 4px solid red !important;
    }
    

    在页眉底部、页脚顶部和内容区域的左侧/右侧放置边框。

    box-sizing : border-box; 声明是为了使计算不那么复杂(它包括元素的高度/宽度尺寸内的边框/填充)。

    这是一个演示:http://jsfiddle.net/2M5Jc/

    box-sizing 的文档:https://developer.mozilla.org/en-US/docs/CSS/box-sizing

    如果您不想要一个固定位置的页眉或页脚,您可以在它们的位置放置一个零高度和边框的元素。

    【讨论】:

    • 一切正常。但我必须为我的内容 div 添加多个边框。例如。想象一条彩虹从内容 div 的左下角 -> 左上角 -> 右上角。这就是我使用大量 div 的原因。编辑了我的帖子并提供了一个示例。
    • @k_wave 看看 CSS border-image: developer.mozilla.org/en-US/docs/CSS/border-image
    • border-image 完成了这项工作 - 尽管它比 div 边框更昂贵。
    【解决方案2】:

    你需要让#content里面的内容可以滚动

    http://outof.me/native-scrolling-in-jquery-mobilephonegap-applications

    这样你的边框将保持在原来的位置,但里面的内容会滚动

    更新 - 示例:

    <div data-role="page" id="moodle" data-add-back-btn="true">
        <div data-role="header"><h1>MyPage</h1></div>
        <div data-role="content" class="scrollable">
            Some Content
        </div>
    </div>
    
    
    div[data-role="content"] {
        position: absolute;
        top: 41px;
        bottom: 0;
        left: 0;
        right: 0;
    }
    
    .scrollable {
        overflow-y: scroll;
        -webkit-overflow-scrolling: touch;
    }
    
    /* iOS specific fix, don't use it on Android devices */
    .scrollable > * {
        -webkit-transform: translateZ(0px);
    }
    

    【讨论】:

    • 这只不过是jqm的原生data-position="fixed"而已。无论如何,我看不出这如何解决我的问题。
    • @k_wave - 再次阅读博文。是的,data-position="fixed" 用于标题,是的,您可能想要应用它 - 但这不是重点。关键是使#content 中的内容可滚动,即overflow-y: scroll && -webkit-overflow-scrolling: touch; 如果这样做,内容将滚动,但边框将保持不变。
    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多