ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript を使用して回転カルーセル チャートを実装するためのサンプル コードの共有

JavaScript を使用して回転カルーセル チャートを実装するためのサンプル コードの共有

黄舟
黄舟オリジナル
2017-08-20 10:11:541524ブラウズ

この記事では主に JavaScript での回転カルーセル チャートの実装について詳しく紹介します。興味のある方は参考にしてください。

最近 JavaScript を勉強しているのですが、回転カルーセル チャートを試してみました。 jsを使って簡単なカルーセル画像を作成します。動的効果は表示できないので、スクリーンショットを貼り付けます:

効果は次のようになります: 合計7枚の写真があり、それらは自動的に左にスライドします。 、そして、左と右の矢印は、カルーセルの左と右のスライドを制御することもできます。同時に、マウスが画像上で停止すると、カルーセルは自動的に停止し、マウスが離れるとスライドし続けます。左に回転します。
まず、ここでは 2 つの関数をカプセル化しました (jQuery をまだ学習していないため、関数をカプセル化する方法を使用して実装しました)。最初の関数は、要素を取得するために呼び出すことができる $ 関数です。 HTML のコードは次のとおりです。


`function $(select){
    if (typeof select != 'string') {
      console.log('传入的参数有误');     
      return null;
    }
    var firstChar = select.charAt(0);
    switch(firstChar){
      case '#':
        return document.getElementById(select.substr(1));
      break;
      case '.':
        if (document.getElementsByClassName){
          return document.getElementsByClassName(select.substr(1));
        } else {
          var result = [];
          var allElemnts = document.getElementsByTagName('*');
          console.log(allElemnts);
          for (var i = 0; i < allElemnts.length; i++){
            var e = allElemnts[i];
            var className = e.className;
            var classArr = className.split(&#39; &#39;);
            for (var j = 0; j < classArr.length; j++){
              var c = classArr[j];
              if (c == select.substr(1)) {
                result.push(e);
                break;
              }
            }
          }
          return result;
        }
      break;
      default :
        return document.getElementsByTagName(select);
    }
  }`

2 番目の関数は、json を使用して複数のスタイルを動的に変更し、アニメーション効果を実現するアニメーション関数です。次のステップは HTML 部分を書きます。画像が数枚しかないので、HTML 部分は非常に単純です:


function animate(element, json, fun) {
  clearInterval(element.timer);
  function getStyle(element, styleName){
    if(element.currentStyle){
      //ie浏览器下 直接通过currentstyle来获取
      //return element.currentStyle.heigh;
      return element.currentStyle[styleName];
    }else{
      var computedStyle = window.getComputedStyle(element,null);
      return computedStyle[styleName];
    }
  }
  var isStop = false;
  element.timer = setInterval(function () {
    isStop = true;
    for (var key in json){
      var target = json[key];
      var current;
      if (key == &#39;opacity&#39;) {
        //当动画的类型为透明度时 获取的值应该是浮点类型
        current = parseFloat(getStyle(element, key)) || 1;
      } else {
        //其他情况 用整数类型
        current = parseInt(getStyle(element, key)) || 0;
      }      
      var step = (target - current) / 10;
      if (key != &#39;opacity&#39;) {
        step = step > 0 ? Math.ceil(step) : Math.floor(step);
      }
      current += step;
      if (key == &#39;opacity&#39;) {
        if (Math.abs(target - current) > 0.01) {
          isStop = false;
        } else {
          current = target;
        }
        element.style.opacity = current + &#39;&#39;;
      } else {
        if (Math.abs(target-current) > Math.abs(step)) {
          isStop = false;
        } else {
          current = target;
        }
        if (key == &#39;zIndex&#39;){
          element.style.zIndex = Math.round(current);
        } else {
          element.style[key] = current + &#39;px&#39;;
        }        
      }      
    }
    if (isStop) {
      clearInterval(element.timer);
      console.log(&#39;动画完成&#39;);
      if (typeof fun == &#39;function&#39;) {
        fun();
      }
    }
  }, 30);
}`

CSS スタイル部分には多くの説明がありません。


以下はJS部分です。コードも非常にシンプルなので、明確にしてください


<body>
  <p class="box">
    <p class="content">
      <ul>
        <li><a href="#"><img src="./images/1.jpg"></a></li>
        <li><a href="#"><img src="./images/2.jpg"></a></li>
        <li><a href="#"><img src="./images/3.jpg"></a></li>
        <li><a href="#"><img src="./images/4.jpg" class="current"></a></li>
        <li><a href="#"><img src="./images/5.jpg"></a></li>
        <li><a href="#"><img src="./images/6.jpg"></a></li>
        <li><a href="#"><img src="./images/7.jpg"></a></li>
      </ul>
    </p>
    <p class="control">
      <a href="javascript:;" id="prev"></a>
      <a href="javascript:;" id="next"></a>
    </p>
  </p>
</body>

 window.onload = function(){
  //定位,并给图片设置大小透明度
  var json = [{
    width: 630,
    top: 23,
    left: 0,
    zIndex: 2,
    opacity: 0
  },{
    width: 630,
    top: 23,
    left: 0,
    zIndex: 3,
    opacity: 0
  },{
    width: 630,
    top: 23,
    left: 0,
    zIndex: 4,
    opacity: 0.6
  },{
    width: 730,
    top: 0,
    left: 125,
    zIndex: 5,
    opacity: 1
  },{
    width: 630,
    top: 23,
    left: 350,
    zIndex: 4,
    opacity: 0.6
  },{
    width: 630,
    top: 23,
    left: 350,
    zIndex: 3,
    opacity: 0
  },{
    width: 630,
    top: 23,
    left: 350,
    zIndex: 2,
    opacity: 0
  }];

以上がJavaScript を使用して回転カルーセル チャートを実装するためのサンプル コードの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。