如何在iScroll中为滚动条设置动态宽度?

时间:2011-12-12 08:01:36

标签: javascript css mobile-safari iscroll4

在此示例中,http://bit.ly/t2ImYS所有元素的包装宽度都是固定的8520px

#scroller {
width: 8520px;
height: 100%;
float: left;
padding: 0;}

我想要width动态,所以如果我在<div id="scroller">中添加更多元素,这个#scroller应该取其内部元素的宽度。

所以试图设置宽度

#scroller {
    width: 100%;}

 #scroller {
    width: auto}

但滚动条无法正常工作。

是否可以通过正常工作滚动来width %

5 个答案:

答案 0 :(得分:11)

  • 将li元素设置为display:inline-block;并删除浮动:左; (您也可以删除vertical-align,因为这只适用于table-cell元素)

  • 从包装中删除固定宽度。

  • 添加空白区域:nowrap;到ul

  • 你应该没事......

(除了&lt; = ie7,但我认为你的情况没问题?)

#scroller li {
    display: inline-block;/* changed */
    /*float:left; */   /* deleted */
    padding: 0 10px;
    width: 120px;
    height: 100%;
    border-left: 1px solid #CCC;
    border-right: 1px solid white;
    background-color: #FAFAFA;
    font-size: 14px;
}
#scroller ul {
    list-style: none;
    display: block;
    float: left;
    width: 100%;
    height: 100%;
    padding: 0;
    margin: 0;
    text-align: left;
    white-space:nowrap; /* added */
}
#scroller {
    /* width: 8520px; */   /* deleted */
    height: 100%;
    float: left;
    padding: 0;
}

答案 1 :(得分:2)

如果您使用的是iScroll4,则应刷新滚动条或销毁并重新创建它。

摘自here: “iScroll需要知道包装器和滚动器的正确尺寸。它们是在启动时第一次计算的,但是如果你的代码改变了元素大小,则需要警告iScroll你正在弄乱DOM。”

答案 2 :(得分:2)

使用Display:inline-block 并使用百分比为我工作:

#scroller li {
 height: 100%;
 width: 2%;
 display: inline-block;
}

#scroller ul {
 list-style: none;
 display: block;
 float: left;
 width: 100%;
 height: 100%;
}

#scroller {
 width: 5000%;
 height: 100%;
 float: left;
}

答案 3 :(得分:1)

在滚动条中添加动态项目后,尝试调用iscroll refresh()方法来设置宽度。

答案 4 :(得分:0)

试试这个css代码,它对我有用:http://jsfiddle.net/manseuk/r9VL2/2/

#wrapper {
                 z-index:1;

                width:100%;
                background:#aaa;
                overflow:auto;
            }

            #scroller {
               z-index:1;
            /*    -webkit-touch-callout:none;*/
                -webkit-tap-highlight-color:rgba(0,0,0,0);
                width:100%;
                padding:0;
            }

            #scroller ul {
                list-style:none;
                padding:0;
                margin:0;
                width:100%;
                text-align:left;
            }

            #scroller li 
            {
                background-color: White !important;
                padding:0 10px;
                height:40px;
                line-height:40px;
                border-bottom:1px solid #ccc;
                border-top:1px solid #fff;
                background-color:#fafafa;
                font-size:14px;
            }