13

コードバ 2.1.0を使用する Android 2 および 3 バージョンでは機能しないCSS position:fixedの修正プロセスとして、アプリケーションに iscroll Java スクリプトを実装しようとしました。

ここからiscroll-liteのjavascriptをコピーしました

htmlコード

<div id="wrapper" class="wrapper">
<div id="wrapper-container" class="wrapper-container">
    <div id="header" class="header">
    <div id="header_title" class="header_title"> </div>
    <div id="abc" class="abc"><img src="img/abc.png""/>                     </div>
</div>
<div id="images" class="images"><img  name="slide" src="img/abc.png" width=100%; />
</div>
<div id="description"  class="description">
<div id="title" class="title">
    <h1><strong></strong></h1>
</div>
<div id="desc" class="desc">
</div>
</div>  

<div id="footer" style="background-image:url(img/bar.png);" class="footer">
<div id="footer_text" class="footer_text">footer_text</div>
<div id="image" class="image noSelect"><img src="img/info.png" onclick="info()"/></div>
</div>
</div>

descタグの内容がオーバーフローしそう

CSS

.wrapper
{
    position: absolute; width:auto; margin:0 auto; height:100%; overflow: hidden;
}
.wrapper_other
{
     width:auto; margin:0 auto; height:100%; overflow: hidden;
}
.wrapper_container
{
    width:100%;  margin:0 auto; font-family:Arial, Helvetica, sans-serif; 
}
.header
{
    float:left; height:100%;  min-height:100%; margin:0%; width:96%; padding:3% 2% 0;
}
.header_title
{
     float:left; padding:0%; margin:0%;  height:100%; min-height:100%; font-size:22px; color: #FFFFFF; text-align:center; font-weight: bold; width:80%; 
}

.images
{
    position:relative; width:100%;
}
.description
{
     float:left; width:100%; overflow:auto;  height:100%; 

}
.title
{
    width:85%; font-weight:bold; float:left; font-size:20px; margin-top:3%; margin-bottom:2%; margin-left:5%; color:#FFFFFF; 
}
.desc
{
      width:90%; font-size:15px; margin-left:5%; margin-right:5%; float:left; color: #FFFFFF; overflow:auto; text-align:justify; line-height:18px; padding:0px 0px 40px 0px; 
}
.desc p
{
      margin-top:0; 
}
.footer
{
     width:100%;  position:absolute; bottom:0; font-size:11px; color:#FFFFFF; text-align:center; height:30px;
}
.footer_text
{
    text-indent:1%; float:left; text-align:center;  width:75%;  margin-top:2%;
}
.info
{
    width:25%; float:right; padding-top:1%;
}

isscroll の使用

<script type="text/javascript" charset="utf-8" src="iscroll.js"></script>
<script type="text/javascript" charset="utf=8" src="cordova-2.1.0.js"></script> 


var myScroll;
document.addEventListener("deviceready", onDeviceReady, false);
function scroll() 
{
myScroll = new IScroll('.wrapper', { scrollX:false , scrollY:true});
}
----
----
function onDeviceReady() 
{   
    scroll();
    ----
    ----

スクロールすると、次のようになります

W/webview(3101): Miss a drag as we are waiting for WebCore's response for touch down.

問題:

スクロールしていません。せっかく頑張ったのに、1回しかスクロールしません。メインページに戻って戻っても、まったくスクロールしません。

ガイドしてください!!

編集:これはさまざまな組み合わせで試しました..すべてのdivをliタグとして置き換えます.CSSは効果的ではありませんでした. 次に、各 div 内で li タグを使用しました。役に立たない...ITはスクロールしませんでした.:

<div id="wrapper">
<div id="scroller">
<ul>
  <div id="header " class="header ">
     <div id="header_title" class="header_title"> </div>
    <div id="xyz" class="xyz"><img src="img/xyz.png" onClick="xyz()"/></div>    </div>  </ul>

<ul>
      <div id="images" class="images"><img  name="slide" src="img/banner1.png" width=100%; />
   </div>
</ul>

<ul>
  <div id="param" class="param">
    <div id="abc" class="abc noSelect"> </div>
        <div id="def" class="def noSelect" > </div>
        <div id="ghi" class="ghi noSelect" > </div>
        <div id="ijk" class="ijk noSelect" > </div>
    </div>
</ul>

<ul>
  <div id="description"  class="description">
       <div id="title"  class="title">
    <h1><strong><li></li></strong></h1>
       </div>

    <div id="desc" class="desc">
    <p><li></li> </p>
    </div>
</div>

</ul>
4

2 に答える 2

14

iScroll が要求する構造に従っていないようです。iScroll ページには、具体的に言及されています (太字のテキストに注意してください)。

最適な iScroll 構造は次のとおりです。

<div id="wrapper">
  <ul>
      <li></li>
      ...
      ...
  </ul>
</div>

この例では、UL 要素がスクロールされます。スクロール領域のラッパーに iScroll を適用する必要があります。

重要: ラッパー要素の最初の子のみがスクロールされます。スクローラー内にさらに要素が必要な場合は、次の構造を使用できます

<div id="wrapper">
  <div id="scroller">
      <ul>
          <li></li>
          ...
          ...
      </ul>

      <ul>
          <li></li>
          ...
          ...
      </ul>
  </div>
</div>

この例では、スクローラー要素が (2 つの UL と共に) スクロールされます。

あなたが持っている:

<div id="wrapper" class="wrapper">
  <div id="wrapper-container" class="wrapper-container">
  ... head ...
  </div>

  ... (your main div here) ...
</div>

したがって、メインの div は iScroller によってスクロールされません。ヘッダーの div をスクロール可能にするだけです。iScroll のデモを見て、最初にテストしてみてください...お使いのデバイスで問題なく動作しますか? はいの場合は、その構造に従うようにしてください。

于 2013-06-07T14:47:50.710 に答える
7

あなたが投稿したスクリプトコードに間違いが見つかりました。この間違いが実際のファイルでも利用できるかどうかはわかりません。しかし、最初にそれを共有することを考えました。

これがスクリプト コードです。

myScroll = new IScroll('.wrapper', { scrollX:false , scrollY:true});

私が見つけた間違い

  • .wrapperCSSルール名です。ここを通過したほうがいいID。あなたIDiScrollWrapperであると仮定し、次の形式でスクローラーを有効にします。

myScroll = new IScroll('iScrollWrapper', { scrollX:false , scrollY:true});

これで、問題なく最適なDOM structure(HTML 形式) が表示されます。iScrollW3C valid

オプション1

<div id="iScrollWrapper" class="****** IMPORTANT_POINT_1 ******">
   <ul>
      <li>
          <YOUR_REMAINING_DOM_STRUCTURE_IN_THE_WAY_YOU_NEED>
      </li>
   </ul>
</div>

オプション 2

<div id="iScrollWrapper" class="****** IMPORTANT_POINT_1 ******">
   <ul>
      <li>
          <YOUR_ONE_DOM_STRUCTURE_IN_THE_WAY_YOU_NEED>
      </li>
      <li>
          <YOUR_ANOTHER_DOM_STRUCTURE_IN_THE_WAY_YOU_NEED>
      </li>
      <li>
          <YOUR_ANOTHER_DOM_STRUCTURE_IN_THE_WAY_YOU_NEED>
      </li>
   </ul>
</div>

あなたがしなければならないと最初に思うのは

****** IMPORTANT_POINT_1 ******

iScrollをアタッチする要素には、非静的で固定されていない位置タイプが必要です (' relative' または ' absolute' を使用できます)。その要素が含まheightれている必要がありpixelます(ある場合、またはない場合は申し訳ありません。機能しません)min-heightmax-height**height** iScroll

次に、iScroll をアタッチする方法を見ていきます。

上手な付け方iScrollは以下の通りです(これは私がiScrollエレメンツに応募して学んだことです)

使用しているSingle Page Application (SPA)場合

if('undefined' != typeof iScrollerObject){
  iScrollerObject.destroy(); 
}
iScrollerObject = new iScroll('iScrollWrapper',{/* OPTIONS_GOES_HERE */});

iScrollerObjectSPAアプリケーションでメンバー変数として作成する場合は、使用します

var _this = this;
if(null != _this.iScrollerObject){
  _this.iScrollerObject.destroy(); 
}
_this.iScrollerObject = new iScroll('iScrollWrapper',{/* OPTIONS_GOES_HERE */});

通常のブラウザ ページの場合。

var iScrollerObject = new iScroll('iScrollWrapper',{/* OPTIONS_GOES_HERE */});

コンテンツを動的に更新する場合checkDOMChanges : trueは、オプションで使用します。それでも動的DOM変更のスクローラーの更新に失敗した場合は、その動的DOM変更呼び出しを完了した後iScrollerObject.refresh();

自分の経験で学んだことを共有しましたiScroll。必要な場合はお知らせください。iScroll lite実際には標準より機能が少ないバージョンを使用していることを覚えておいてくださいiScroll4iScrollバージョンを使用する場合は、 を使用してiScroll4ください。

于 2013-06-14T17:55:59.427 に答える