Как установить динамическую ширину в iScroll для скроллера?
В этом примере 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 ответов
Установите элементы li для отображения:inline-block; и удалить поплавок: слева; (вы также можете удалить вертикальное выравнивание, так как это будет работать только с элементами ячейки таблицы)
Снимите фиксированную ширину с обертки.
Добавить пробел:nowrap; на ул
И у тебя должно быть все в порядке...
(За исключением <=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;
}
Использование 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;
}
Если вы используете iScroll4, вы должны обновить скроллер или уничтожить и воссоздать его.
Отсюда: "iScroll необходимо знать правильные размеры как оболочки, так и скроллера. Они вычисляются при первом запуске, но если ваш код меняет размер элементов, iScroll следует предупредить, что вы работаете с DOM ".
Попробуйте позвонить в iscroll refresh()
метод после добавления динамических элементов в скроллере для установки ширины.
Попробуйте этот код 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;
}