【问题标题】:how to let jquery mobile controlgroup width 100%?如何让jquery mobile controlgroup宽度100%?
【发布时间】:2012-06-07 09:34:49
【问题描述】:

我正在使用 jquery mobile 进行演示... 我想让 localnav 的宽度为 100%... 但我不知道该怎么做... 代码在这里...

<ul data-role="controlgroup" data-type="horizontal" class="localnav">
    <li><a href="#" data-role="button" data-transition="fade" class="ui-btn-active">111</a></li>
    <li><a href="#" data-role="button" data-transition="fade">222</a></li>
    <li><a href="#" data-role="button" data-transition="fade">333</a></li>
</ul>

请帮帮我...谢谢...

【问题讨论】:

    标签: javascript jquery jquery-mobile


    【解决方案1】:

    这就是我所做的。效果很好。

    CSS:

    <style>
        .ui-grid-a, .ui-grid-a .ui-controlgroup-controls {width: 100%}
        #homePageButton {width:49%;float:left;margin-left:1%}
        #logOutButton {width:49%}
        #footer {height:45px}
    </style>
    

    HTML:

    <div data-role="footer" data-position="fixed" id="footer">
        <div data-role="controlgroup" data-type="horizontal" class="ui-grid-a">
            <a href="#" data-role="button" data-icon="home" id="homePageButton">Home Page</a>
            <a href="#" data-role="button" data-icon="forward" data-iconpos="right" id="logOutButton">Log Out</a>
        </div>
    </div>
    

    结果:

    【讨论】:

    • 如果您需要所有链接具有相同的宽度,您可以将其设置为(以百分比为单位),目标为.ui-controlgroup-controls a(您可能需要根据您的标记提供更多的特异性)并添加box-sizing: border-box 以避免弄乱每个元素的宽度。
    【解决方案2】:

    看看JQuery Mobile's navbar 虽然它通常用于页眉/页脚,但也可以在其他地方使用。它将生成一个包含您的按钮的全宽条。

           <div data-role="navbar">
                <ul>
                    <li><a href="#" data-icon="plus" data-role="button">Button1</a></li>
                    <li><a href="#" data-icon="minus" data-role="button">Button2</a></li>
                    <li><a href="#" data-icon="check" data-role="button">Button3</a></li>
                </ul>
            </div>
    

    【讨论】:

      【解决方案3】:

      不确定您为什么要尝试将 &lt;ul&gt; 包装为控制组。但是您可以通过以下方法获得全角 ControlGroup:

      <div data-role="controlgroup" data-type="horizontal" class="localnav">
          <a href="#" data-role="button" data-transition="fade" class="ui-btn-active">111</a>
          <a href="#" data-role="button" data-transition="fade">222</a>
          <a href="#" data-role="button" data-transition="fade">333</a>
      </div>
      

      在 CSS 中,将宽度平均分配给 &lt;a&gt; 元素的数量:

      a{width:33%;}
      

      jsfiddle 示例:http://jsfiddle.net/pAuqm/1/

      如果您想继续使用基于&lt;ul&gt; 的结构;你可以有以下 CSS 的全宽控制组:

      li{
          display: inline;
      }
      a{width:33%;}
      

      jsfiddle 示例:http://jsfiddle.net/pAuqm/3/

      【讨论】:

      • 不是很优雅,适用于宽屏但像素不完美。
      • @Mad Echet:这也适用于移动屏幕......而且我认为使用 % 比使用 PX 更好......你看到现在在什么设备上工作?
      • 对不起,我不清楚。它适用于所有屏幕,但 33% 不是 33.3333333%,因此您不能保证右边框会调整为其余内容(我知道这是一两个像素的问题)。越接近 1/3,您就越有可能看到最后一个元素跳到新的一行。我从来没有设法让它在像素级别上工作以使设计看起来时尚,我不明白为什么他们从未在 jquery mobile 中实现。但我还在寻找!
      【解决方案4】:

      我正在使用网格来执行此操作,以及一个额外的 css 规则:

      .ui-controlgroup-horizontal > div > .ui-btn {
          width: 99%
      }​​​​​​​​​ 
      

      我这样做的原因是这样的标记:

      <div class="ui-grid-a" data-role="controlgroup" data-type="horizontal">
          <div class="ui-block-a">
               <button type="submit" data-theme="c">Cancel</button>
          </div>
          <!-- etc -->
      </div>
      

      被 jquery 转换成这样的标记(在 Chrome 或 Firebug 中检查):

         <div class="ui-grid-a ui-corner-all 
             ui-controlgroup ui-controlgroup-horizontal" 
             data-role="controlgroup" data-type="horizontal">
             <div class="ui-block-a">
                 <div data-corners="true" data-shadow="true" 
                   data-iconshadow="true" data-inline="null" 
                   data-wrapperels="span" data-icon="null" data-iconpos="null" 
                   data-theme="c" data-mini="false" 
                   class="ui-btn ui-btn-up-c ui-corner-left" 
                   aria-disabled="false">
                     <span class="ui-btn-inner ui-corner-left">
                         <span class="ui-btn-text">Cancel</span>
                     </span>
                     <button type="submit" data-theme="c" class="ui-btn-hidden" aria-disabled="false">Cancel</button>
                 </div>
             </div>
             <!-- etc -->
         </div>
      

      如您所见,我们想要 100% 宽的 .ui-btn 位于 ui-block-a(或 ui-block-bui-block-c 等)内部,我们的水平控制组获得了 .ui-controlgroup-horizontal 类,因此规则:.ui-btn 的子代divs.ui-controlgroup-horizontal 的子代(几乎)100%。我没有达到 100%,因为这为我切断了右侧按钮上的圆角。通过在顶级类上使用.ui-controlgroup-horizontal,而不是(比如说)ui-grid-a,这条规则适用于不同的网格大小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-06
        • 2012-01-11
        • 1970-01-01
        • 1970-01-01
        • 2017-10-26
        • 2017-12-31
        • 1970-01-01
        相关资源
        最近更新 更多