欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于angularjs實現(xiàn)圖片放大鏡效果

 更新時間:2016年08月31日 15:15:27   作者:MakingChoice  
這篇文章給大家分享了angularjs實現(xiàn)購物放大鏡效果的源碼實例,代碼介紹的很詳細,有需要的可以參考借鑒,下面來一起看看。

前言

一開始打算用原生的angularjs寫,但是發(fā)現(xiàn)用原生angularjs,無論如何都不能獲取里面圖片的寬度和高度,因為angularjs內置的jquery方法里沒有winth()  、height()方法。

最好我還是引入了jquery,在同一scope上綁定了寬度高度。下面上源碼,順便我會把里面的一些注意的點說一下。

效果圖

首先說明下

1、首先使用了兩個同級指令,并在兩個同級指令間進行通信,同級指令間通信,非常簡單,就是不要讓同級的指令生成獨立的scope,并且在同一個作用域下就完成了。如果指令scope沒有特殊聲明,那么就是父scope。指令生成的模板沒有特殊意義,除非在特定的scope下編譯,默認情況下,指令并不會創(chuàng)建新的子scope,更多的是使用父scope,也就是說,如果指令存在一個controller下,它會使用controller下的scope

2、然后就是用$q來延遲異步獲取數(shù)據,這個也可以看一下$q的用法。

源碼示例

<!DOCTYPE html>
<html lang="en" ng-app="magnifierAPP">
<head>
  <meta charset="UTF-8">
  <title></title>
  <script src="lib/angular.min.js" type="text/javascript"></script>
  <script src="lib/angular-animate.js" type="text/javascript"></script>
  <script src="lib/jquery-2.1.4.min.js" type="text/javascript"></script>
</head>
<style>
  *{
    padding: 0px;
    margin: 0px;
  }
  .content{
    width: 800px;
    height: 400px;
    position: relative;
    border: 1px solid red;
  }
  .left{
    width: 310px;
    height: 380px;
  }
  .top{
    width: 310px;
    height: 310px;
    border: 1px solid blue;
    cursor: pointer;
  }
  .top img{
    width: 310px;
    height: 310px;
  }
  .bottom{
    position: relative;
    width: 310px;
    height: 60px;
    border: 1px solid black;
  }
  .bottom img{
    display: inline-block;
    width: 60px;
    height: 60px;
    float: left;
    margin: 0 30px;
    cursor: pointer;
  }
  .right{
    border: 1px solid ;
    width: 300px;
    height: 300px;
    position: absolute;
    left: 400px;
    top: 20px;
    overflow: hidden;
  }
  .right img{
    position: absolute;
    width: 700px;
    height: 600px;
  }
  .show{
    display: block;
  }
  .hidden{
    display: none;
  }
</style>
<body>
<div ng-controller="magnifierController">
  <div class="content">
    <div class="left" ng-init="isActive=0">
      <div>{{x}}+{{y}}</div>
      <div magnifier-top></div>
      <div class="bottom" >
        <img src="img/blue_1.jpg" alt="1" ng-mouseover="isActive=0"/>
        <img src="img/yellow_1.jpg" alt="1" ng-mouseover="isActive=1"/>
      </div>
    </div>
    <div magnifier-right>
      <div>{{x}}+{{y}}</div>
    </div>
  </div>
  <script type="text/ng-template" id="magnifier-top.html">
    <div class="top" ng-mousemove="getPosition($event.offsetX,$event.offsetY)" ng-mouseover="isshow=true" ng-mouseleave="isshow=false">
      <img src="img/blue_2.jpg" alt="0" ng-class="{true:'show',false:'hidden'}[isActive==0]"/>
      <img src="img/yellow_2.jpg" alt="1" ng-class="{true:'show',false:'hidden'}[isActive==1]"/>
    </div>
  </script>

  <script type="text/ng-template" id="magnifier-right.html" >
    <div class="right" >
      <img src="{{img1.src}}" alt="1" ng-class="{true:'show',false:'hidden'}[isActive==0]" id="img1"/>
      <img src="{{img2.src}}" alt="1" ng-class="{true:'show',false:'hidden'}[isActive==1]"/>
    </div>
  </script>
</div>
</body>
<script>
  var app=angular.module('magnifierAPP',[]);
  app.controller('magnifierController',['$scope', function ($scope) {

  }]);
  app.directive('magnifierRight',['readJson',function (readJson) {
    return {
      restrict: 'EA',
      replace:true,
      templateUrl:'magnifier-right.html',

      link: function (scope,element,attr) {
        var promise=readJson.getJson();
        promise.then(function (data) {
          scope.img1=data[0];
          scope.img2=data[1];
        });
        //右側容器內照片寬度、高度
        scope.rightWidth=$(element).find("img").eq(scope.isActive).width();
        scope.rightHeight=$(element).find("img").eq(scope.isActive).height();
        //右側容器寬度、高度
        scope.rightBoxWidth=$(element).width();
        scope.rightBoxHeight=$(element).height();
        //移動比例
        var radX=(scope.rightWidth-scope.rightBoxWidth)/scope.topWidth;
        var radY=(scope.rightHeight-scope.rightBoxHeight)/scope.topHeight;

        console.log(radX);
        console.log(radY);
        setInterval(function (){
          scope.$apply(function (){
            element.find("img").eq(scope.isActive).css({
              "left":-scope.x*radX+"px",
              "top":-scope.y*radY+"px"
            });
          })
        },30)
      }
    }
  }]);
  app.directive('magnifierTop',[function () {
    return{
      restrict:'EA',
      replace:true,
      templateUrl:'magnifier-top.html',
      link: function (scope,element,attr) {
        scope.topWidth=$(element).find("img").eq(scope.isActive).width();
        scope.topHeight=$(element).find("img").eq(scope.isActive).height();
        scope.getPosition= function (x,y) {
          scope.x=x;
          scope.y=y;
        }
      }
    }
  }]);
  app.factory('readJson',['$http','$q', function ($http,$q) {
    return{
      getJson: function (){
        var deferred=$q.defer();
        $http({
          method:'GET',
          url:'magnifier.json'
        }).success(function (data, status, header, config) {
          deferred.resolve(data);
        }).error(function (data, status, header, config) {
          deferred.reject(data);
        });
        return deferred.promise;
      }
    }
  }]);
</script>
</html>

總結

以上就是這篇文章的全部內容,不知道大家都學會了嗎?希望這篇文章對大家的學習或者工作能帶來一定幫助,如果有問題歡迎大家留言交流。

相關文章

  • Angular 實現(xiàn)輸入框中顯示文章標簽的實例代碼

    Angular 實現(xiàn)輸入框中顯示文章標簽的實例代碼

    這篇文章主要介紹了Angular 實現(xiàn)輸入框中顯示文章標簽的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • AngularJS基礎 ng-class-odd 指令示例

    AngularJS基礎 ng-class-odd 指令示例

    本文主要介紹AngularJS ng-class-odd 指令,這里對ng-class-odd基礎知識做了詳細整理,并有示例代碼和效果圖,學習AngularJS的同學可以參考下
    2016-08-08
  • angularjs性能優(yōu)化的方法

    angularjs性能優(yōu)化的方法

    這篇文章主要介紹了angularjs性能優(yōu)化的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • angular父子組件通信詳解

    angular父子組件通信詳解

    這篇文章主要為大家介紹了angular父子組件通信,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 簡介AngularJS中$http服務的用法

    簡介AngularJS中$http服務的用法

    我們可以使用內置的$http服務直接同外部進行通信。$http服務只是簡單的封裝了瀏覽器原生的XMLHttpRequest對象。接下來通過本文給大家簡單介紹angularjs中http服務的用法,喜歡的朋友可以參考下
    2016-02-02
  • AngularJS入門教程(一):靜態(tài)模板

    AngularJS入門教程(一):靜態(tài)模板

    這篇文章主要介紹了AngularJS入門教程(一):靜態(tài)模板,本文是系列文章的第二篇,本系列會用一個項目來講解AngularJS的使用,需要的朋友可以參考下
    2014-12-12
  • angular中實現(xiàn)控制器之間傳遞參數(shù)的方式

    angular中實現(xiàn)控制器之間傳遞參數(shù)的方式

    本篇文章主要介紹了angular中實現(xiàn)控制器之間傳遞參數(shù)的方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • 淺析AngularJS Filter用法

    淺析AngularJS Filter用法

    系統(tǒng)的學習了一下angularjs,發(fā)現(xiàn)angularjs的有些思想根php的模塊smarty很像,例如數(shù)據綁定,filter。如果對smarty比較熟悉的話,學習angularjs會比較容易一點,這篇文章給大家介紹angularjs filter用法詳解,感興趣的朋友一起學習吧
    2015-12-12
  • 關于使用axios的一些心得技巧分享

    關于使用axios的一些心得技巧分享

    vue更新到2.0之后,作者就宣告不再對vue-resource更新,而是推薦的axios,所以下面這篇文章主要給大家分享了關于使用axios的一些心得技巧,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • AngularJS身份驗證的方法

    AngularJS身份驗證的方法

    在客戶端使用AngularJS做身份驗證的話,推薦使用service來做,下面腳本之家小編給大家介紹AngularJS身份驗證的方法,感興趣的朋友一起學習吧
    2016-02-02

最新評論