Как установить динамическую ширину в iScroll для скроллера? - PullRequest
5 голосов
/ 12 декабря 2011

В этом примере http://bit.ly/t2ImYS ширина обёртки всех элементов фиксирована 8520px

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

Я хочу width динамически, поэтому, если я добавлю больше элементов внутри <div id="scroller"> this #скроллер должен принимать ширину элементов внутри него.

Поэтому попытался установить ширину

#scroller {
    width: 100%;}

и

 #scroller {
    width: auto}

, но тогда скроллер не работает должным образом.

есть ли способ получить width в % с правильно работающим свитком?

Ответы [ 5 ]

11 голосов
/ 12 декабря 2011
  • Установить элементы li для отображения: inline-block; и удалить поплавок: слева; (вы также можете удалить выравнивание по вертикали, так как это будет работать только с элементами ячейки таблицы)

  • Снимите фиксированную ширину с обертки.

  • Добавить пробел: nowrap; на ул

  • И с тобой все будет в порядке ...

(За исключением <= ie7, но я полагаю, что в вашем случае это не проблема?) </p>

#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;
}
2 голосов
/ 03 декабря 2012

Использование Display: встроенный блок и использование процентов работали для меня:

#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;
}
2 голосов
/ 24 января 2012

Если вы используете iScroll4, вы должны обновить скроллер или уничтожить и воссоздать его.

Выдержка из здесь : «iScroll необходимо знать правильные размеры как оболочки, так и скроллера. Они вычисляются при первом запуске, но если ваш код меняет размер элементов, iScroll нужно предупредить, что вы связываетесь с DOM. "

1 голос
/ 23 мая 2012

Попробуйте вызвать метод iscroll refresh() после добавления динамических элементов в скроллере, чтобы установить ширину.

0 голосов
/ 13 мая 2013

попробуйте этот код 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;
            }
...