javascript - 如何以百分比设置 jQuery Mobile 1.4 响应面板的宽度?

标签 javascript css jquery-mobile responsive-design jquery-mobile-panel

我可以通过覆盖默认的 JQM 样式表来更改面板的固定宽度。但是现在,在我的移动用户界面中,我需要将固定面板的宽度设置为百分比值。

我找到了很多关于如何将 CSS 设置为固定宽度以及带有显示的面板的答案:“推”,但是在为 CSS 3D 动画找到这种样式后我被卡住了:

转换:translate3d(17em,0,0);

它不接受(......至少到现在为止)父元素的百分比值。

现在,我正在用 javascript 替换但没有成功,而且因为 CSS 变量还没有在我的浏览器目标中。

这是我的标记:

<body class="ui-responsive-panel">
    <div data-role="header">
         <h1>Header</h1>
        <a href="#nav-panel" data-icon="bars" data-iconpos="notext">Menu</a>
    </div>
    <div data-role="footer">
         <h4>Footer</h4>
    </div>
    <div data-role="page" id="home">
        <div data-role="content" class="ui-content">
            <p>pPage content</p>
        </div>
    </div>
    <div data-role="panel" id="nav-panel">
        <p>Panel content</p>
    </div>
</body>

页眉、页脚和面板位于其他移动页面之外,并按照 JQM 1.4 的 JQM 文档中的描述进行初始化:

$("[data-role='header'], [data-role='footer']").toolbar({
    theme: "a"
});

$("#nav-panel").panel({
    theme: "b",
    display: "push",
    position: "right",
    positionFixed: true
}).enhanceWithin();

http://jsfiddle.net/e6Cnn/25/

有没有办法让响应式面板占据可用屏幕宽度的 50%?

最终结果: http://jsfiddle.net/e6Cnn/30/

更新: 如果有人感兴趣,在移动浏览器中进行更多测试后,我想出了另一个解决方案:http://jsfiddle.net/e6Cnn/37/

最佳答案

您可以摆脱 ui-responsive-panel 类,然后覆盖面板 CSS 以使其始终为 50%:

将面板设为 50%,我想将 z-index 提高到 dismiss 层之上(可选):

.ui-panel {
    width: 50%;
    z-index: 1004;
}

关闭时,将右侧位置设置为 -50% 并为面板的整个 100% 宽度设置动画:

/* Panel right closed */
.ui-panel-position-right {
    right: -50%;
}
/* Panel right closed animated */
.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,
.ui-panel-animate.ui-panel-position-right.ui-panel-display-push {
    right: 0;
    -webkit-transform: translate3d(100%,0,0);
    -moz-transform: translate3d(100%,0,0);
    transform: translate3d(100%,0,0);
}

将页面内容推送 50%:

/* Panel right open */
.ui-panel-page-content-position-right {
    left: -50%;
    right: 50%;
}
/* Panel right open animated */
.ui-panel-animate.ui-panel-page-content-position-right {
    left: 0;
    right: 0;
    -webkit-transform: translate3d(-50%,0,0);
    -moz-transform: translate3d(-50%,0,0);
    transform: translate3d(-50%,0,0);
}

将 dismiss div 的宽度设置为 50%:

/* Dismiss model open */
.ui-panel-dismiss-open.ui-panel-dismiss-position-right {
    right: 50%;
}

Updated FIDDLE

关于javascript - 如何以百分比设置 jQuery Mobile 1.4 响应面板的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31809494/

相关文章:

javascript - 具有固定宽度和动态高度的 iframe

javascript - 我认为我的 jquery 函数不正确

jquery-mobile - 在 JQueryMobile 中动态更改按钮数据主题

listview - 每次显示页面时停止 jQuery Mobile 初始化 ListView

javascript - 清空 Javascript 对象 (Jquery Mobile)

javascript - 如何使用 Service Worker 获取 json 数据并更新应用程序 shell

javascript - 在同一页面上提交表单和成功消息?

javascript - 对页面或其 Controller 进行基准测试

点击时 Javascript 更新/增加变量值

html - 减少输入文本和底部边框之间的间距