検索
ホームページウェブフロントエンドjsチュートリアルJavaScript+CSSフォトアルバム特殊効果サンプルコード

以下のエディターは、JavaScript+CSS フォト アルバム効果のサンプル コードを提供します。編集者はかなり良いと思ったので、JavaScript+CSS のソース コードを共有し、参考にさせていただきます。 JavaScript と CSS を使用してフォト アルバムを作成することに興味がある場合は、編集者をフォローして見てください

まあ、これはそのような例ですが、ビデオで学んだ特殊効果は実際にはあまり役に立ちません。 JS 言語を理解し、CSS3 スタイルに慣れるのに役立ちます。

デザイン:

写真の変化を観察して次のことを見つけてください:

1. 画像の拡大縮小 (ランダムに、同時に移動しない)

1. 大きいものから小さいものへ

2.小さいものから大きいものまで、1 から 0 までの透明度 (最初の動作が完了した直後に開始します)

2. 画像の回転 (ランダムで同時に動きません。すべての動作が完了した後に開始する必要があります)

3. 各画像はランダムに変形を開始するため、開始時間は異なります。ここでは遅延器 setTimeout を設定でき、時間はrandomを使用してランダムに生成できます。

4. 途中で自己実行関数が必要です。 setTimeout は for ループで i を無視するため、ディレイラーが実行されるたびに i の値が失敗する可能性があります。

5. 変換中はボタンのpをクリックすることができず、マークと判断が必要です。

6. モーションにはスケーリングと回転の 2 種類があり、回転はスケーリングが完了した後にのみ開始できることに注意してください。

注:

scaleはスケーリング

transition遷移であり、親の値を変更する

サブ関数を遅延させるのがクロージャです

ここでの自己実行関数は主にi の各値を保存するために使用されます

タイマーを直接追加すると、外側のループを無視して 1 秒後に実行されます。この時点では、それがどこにあるのか分からず、範囲外になる可能性があります

Math.random()によって生成される値はsetTimeoutのパラメータです

setTimeoutの遅延時間はコンピュータカードにも影響されます

transitionendはトランジションが続く限り実行されます。スタイル

に基づいて計算され、スケールと透明度は、このポイントを変更するtransitionend

call()をトリガーします。その後、オブジェクト

が直接実装され、この特殊効果はページの作成時に実行されます。ロードされています。

中央にある情報を追加します:

1.CSS3 不透明度属性:

value Description
value 不透明度を指定します。 0.0 (完全に透明) から 1.0 (完全に不透明)
inherit Opacity 属性の値は、親要素


2 から継承される必要があります。

パラメータ

パラメータ説明sx、sy水平および垂直スケーリング係数。

説明

scale() メソッドは、キャンバスの現在の変換行列にスケーリング変換を追加します。スケーリングは、独立した水平方向と垂直方向のスケーリング係数を使用して行われます。たとえば、2.0 と 0.5 の値を渡すと、描画パスの幅が 2 倍、高さが 1/2 になります。負の sx 値を指定すると、X 座標は Y 軸に沿って折り畳まれ、負の sy を指定すると、Y 座標は X 軸に沿って折り畳まれます。

ここでの私の直接パラメータは、高さと幅を同時に減らすことです

3.

p はブロックラベルです。この場合、p ラベルは、画像ラベル内の画像の高さによってサポートされます。デフォルトでは左にフロートします、1行にちょうど10個、それぞれ80px
margin: 0 autoはmargin: 0 auto 0 autoの略で、つまり左右が自動的に中央に配置されます。なぜpがないのかというと。その隣に、これがマージンである必要があります: 上の p のマージンから 80 ピクセルまでの距離が設定されています。残りはフォントによってサポートされています。コメントは非常に詳細であり、多くのコールバック関数があります。 。 :

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 <style>
  /*图片容器整体样式,左右居中 视角景深800px */
  #imgWrap{
  width: 800px;
  height: 400px;
  margin: 80px auto;
  perspective: 800px;
  }

  /*左对齐,高宽*数量=整体p*/
  #imgWrap img{
  float: left;
  width: 80px;
  height: 80px;
  }

  #btn{
  width: 100px;
  /*height: 40px 这里不定义就是跟font大小一样*/
  background: rgb(0,100,0);
  padding: 0 20px;
  /*font-size 和 line-height 中可能的值。*/
  font: 16px/40px "微软雅黑";
  color: #fff;
  margin: 0 auto;
  border-radius: 5px;
  box-shadow: 2px 2px 5px #000;
  cursor: pointer;
  }
 </style>
 <script>
  /*
  * 1、图片缩放(随机,并且不是同时运动)
  * 1、从大到小
  * 2、从小到大,透明度从1到0(在第一步运动完成后立马开始)
  *
  * 2、图片旋转(随机,并且不是同时运动的。需要在全部运动走完以后开始)
  */

  window.onload=function(){
  var btn=document.getElementById("btn");
  // 选择所有元素
  var imgs=document.querySelectorAll("img");
  var endNum=0; //它代表图片运动完成的数量
  var canClick=true; //它代表用户能否再次点击

  btn.onclick=function(){
   if(!canClick){
   return; //以下的代码不要走了
   }
   canClick=false;


   for(var i=0;i<img src="/static/imghwm/default1.png"  data-src="images/1.jpg"  class="lazy" s.length;i++){
   (function(i){
    setTimeout(function(){
    /*imgs[i].style.transition=&#39;100ms&#39;;
    imgs[i].style.transform=&#39;scale(0)&#39;;
    imgs[i].style.opacity=&#39;0&#39;;

    imgs[i].addEventListener(&#39;transitionend&#39;,function(){
     console.log(1);
    });*/

    motion(imgs[i],&#39;50ms&#39;,function(){
     this.style.transform=&#39;scale(0)&#39;;
    },function(){
     motion(this,&#39;1s&#39;,function(){
     this.style.transform=&#39;scale(1)&#39;;
     this.style.opacity=&#39;0&#39;;
     },function(){
     //在这里表示图片缩放的运动已经全部完成了,接着走第二个运动

     endNum++;
     if(endNum==imgs.length){
      //所有的运动都完成了
      //console.log(&#39;所有的运动都完成了&#39;)
      rotate();
      //endNum=0;
     }
     });
    });
    },Math.random()*1000);
   })(i);
   }
  };


  //旋转功能
  function rotate(){
   for(var i=0;i<img src="/static/imghwm/default1.png"  data-src="images/1.jpg"  class="lazy" s.length;i++){
   //给运动来一下初始化
   imgs[i].style.transition=&#39;&#39;;
   /*imgs[i].style.opacity=1;*/
   imgs[i].style.transform=&#39;rotateY(0deg) translateZ(-&#39;+Math.random()*500+&#39;px)&#39;;

   //运动来了,自执行函数
   (function(i){
    setTimeout(function(){
    motion(imgs[i],&#39;2s&#39;,function(){
     this.style.opacity=1;
     this.style.transform=&#39;rotateY(-360deg) translateZ(0)&#39;;
    },function(){
     endNum--; //因为在上次运动结束的时候,endNum的值已经加到了50了
     //console.log(endNum);
     if(endNum==0){
     //所有的运动都完成了
     canClick=true;
     //endNum=0
     }
    });
    },Math.random()*1000);
   })(i);
   }
  }

  //运动函数
  function motion(obj,timer,doFn,callBack){
   //motion(运动对象,运动时间(字符串+单位),运动属性(函数),运动结束后的回调函数)
   obj.style.transition=timer;
   doFn.call(obj);//改变对象

   var end=true; //用来知道过渡有没有完成一次

   //结束事件处理函数
   function endFn(){
   if(end){
    //callBack&&callBack.call(obj);
    if(callBack){
    callBack.call(obj);
    }

    end=false; //改成false,下次就不会走这个if了
   }

   obj.removeEventListener(&#39;transitionend&#39;,endFn); //结束后就把这个事件取消掉,要不它会一直带在身上
   }

   obj.addEventListener(&#39;transitionend&#39;,endFn);
  }
  };
 </script>
 </head>
 <body>
 <p id="imgWrap">
  <img src="/static/imghwm/default1.png"  data-src="images/1.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/2.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/3.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/4.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/5.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/6.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/7.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/8.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/9.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/10.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/11.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/12.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/13.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/14.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/15.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/16.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/17.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/18.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/19.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/20.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/21.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/22.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/23.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/24.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/25.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/26.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/27.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/28.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/29.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/30.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/31.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/32.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/33.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/34.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/35.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/36.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/37.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/38.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/39.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/40.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/41.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/42.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/43.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/44.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/45.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/46.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/47.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/48.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/49.jpg"  class="lazy"   alt="" />
  <img src="/static/imghwm/default1.png"  data-src="images/50.jpg"  class="lazy"   alt="" />
 </p>
 <p id="btn">点击查看效果</p>
 </body>
</html>

上記がこの記事のすべての内容です。皆さんの学習に役立つことを願っています。 !

関連する推奨事項:


JavaScript配列の平坦化方法について詳しく説明します


選択ドロップダウンボックスへの要素の追加と削除のJavaScript実装例の共有

JavaScriptアルゴリズム二分探索ツリーのサンプルコード

以上がJavaScript+CSSフォトアルバム特殊効果サンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
利用CSS怎么创建渐变色边框?5种方法分享利用CSS怎么创建渐变色边框?5种方法分享Oct 13, 2021 am 10:19 AM

利用CSS怎么创建渐变色边框?下面本篇文章给大家分享CSS实现渐变色边框的5种方法,希望对大家有所帮助!

css ul标签怎么去掉圆点css ul标签怎么去掉圆点Apr 25, 2022 pm 05:55 PM

在css中,可用list-style-type属性来去掉ul的圆点标记,语法为“ul{list-style-type:none}”;list-style-type属性可设置列表项标记的类型,当值为“none”可不定义标记,也可去除已有标记。

css与xml的区别是什么css与xml的区别是什么Apr 24, 2022 am 11:21 AM

区别是:css是层叠样式表单,是将样式信息与网页内容分离的一种标记语言,主要用来设计网页的样式,还可以对网页各元素进行格式化;xml是可扩展标记语言,是一种数据存储语言,用于使用简单的标记描述数据,将文档分成许多部件并对这些部件加以标识。

css3怎么实现鼠标隐藏效果css3怎么实现鼠标隐藏效果Apr 27, 2022 pm 05:20 PM

在css中,可以利用cursor属性实现鼠标隐藏效果,该属性用于定义鼠标指针放在一个元素边界范围内时所用的光标形状,当属性值设置为none时,就可以实现鼠标隐藏效果,语法为“元素{cursor:none}”。

css怎么实现英文小写转为大写css怎么实现英文小写转为大写Apr 25, 2022 pm 06:35 PM

转换方法:1、给英文元素添加“text-transform: uppercase;”样式,可将所有的英文字母都变成大写;2、给英文元素添加“text-transform:capitalize;”样式,可将英文文本中每个单词的首字母变为大写。

rtl在css是什么意思rtl在css是什么意思Apr 24, 2022 am 11:07 AM

在css中,rtl是“right-to-left”的缩写,是从右往左的意思,指的是内联内容从右往左依次排布,是direction属性的一个属性值;该属性规定了文本的方向和书写方向,语法为“元素{direction:rtl}”。

css怎么设置i不是斜体css怎么设置i不是斜体Apr 20, 2022 am 10:36 AM

在css中,可以利用“font-style”属性设置i元素不是斜体样式,该属性用于指定文本的字体样式,当属性值设置为“normal”时,会显示元素的标准字体样式,语法为“i元素{font-style:normal}”。

怎么设置rotate在css3的旋转中心点怎么设置rotate在css3的旋转中心点Apr 24, 2022 am 10:50 AM

在css3中,可以用“transform-origin”属性设置rotate的旋转中心点,该属性可更改转换元素的位置,第一个参数设置x轴的旋转位置,第二个参数设置y轴旋转位置,语法为“transform-origin:x轴位置 y轴位置”。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール