Commit a63221892928b68c0feda2272ad5282d61aa2f4e
1 parent
a1dded18
Lazyload
Showing
4 changed files
with
97 additions
and
2 deletions
Show diff stats
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace artweb\artbox\assets; | ||
| 4 | + | ||
| 5 | +use yii\web\AssetBundle; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * Main frontend application asset bundle. | ||
| 9 | + */ | ||
| 10 | +class LazyAsset extends AssetBundle | ||
| 11 | +{ | ||
| 12 | + public $sourcePath = '@artweb/artbox/resources'; | ||
| 13 | + public $js = [ | ||
| 14 | + 'artbox-lazy.js', | ||
| 15 | + ]; | ||
| 16 | + | ||
| 17 | + public $depends = [ | ||
| 18 | + 'artweb\artbox\assets\LazyLoadAsset', | ||
| 19 | + ]; | ||
| 20 | + | ||
| 21 | +} |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace artweb\artbox\assets; | ||
| 4 | + | ||
| 5 | +use yii\web\AssetBundle; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * Main frontend application asset bundle. | ||
| 9 | + */ | ||
| 10 | +class LazyLoadAsset extends AssetBundle | ||
| 11 | +{ | ||
| 12 | + public $sourcePath = '@bower/jquery.lazyload'; | ||
| 13 | + public $js = [ | ||
| 14 | + 'jquery.lazyload.js', | ||
| 15 | + ]; | ||
| 16 | + | ||
| 17 | + public $depends = [ | ||
| 18 | + 'yii\web\JqueryAsset', | ||
| 19 | + ]; | ||
| 20 | + | ||
| 21 | +} |
components/artboximage/ArtboxImageHelper.php
| @@ -53,14 +53,25 @@ | @@ -53,14 +53,25 @@ | ||
| 53 | * @param array|string $preset | 53 | * @param array|string $preset |
| 54 | * @param array $imgOptions | 54 | * @param array $imgOptions |
| 55 | * @param int $quality | 55 | * @param int $quality |
| 56 | + * @param bool $lazy | ||
| 56 | * | 57 | * |
| 57 | * @return string | 58 | * @return string |
| 58 | * @see Html::img() | 59 | * @see Html::img() |
| 59 | */ | 60 | */ |
| 60 | - public static function getImage($file, $preset, $imgOptions = [], $quality = 65) | 61 | + public static function getImage($file, $preset, $imgOptions = [], $quality = 65, $lazy = false) |
| 61 | { | 62 | { |
| 62 | $preset_alias = is_array($preset) ? array_keys($preset)[ 0 ] : null; | 63 | $preset_alias = is_array($preset) ? array_keys($preset)[ 0 ] : null; |
| 63 | - return Html::img(self::getImageSrc($file, $preset, $preset_alias, $quality), $imgOptions); | 64 | + $src = self::getImageSrc($file, $preset, $preset_alias, $quality); |
| 65 | + if($lazy) { | ||
| 66 | + if(isset($imgOptions['class'])) { | ||
| 67 | + $imgOptions['class'] = $imgOptions['class'].' artbox-lazy'; | ||
| 68 | + } else { | ||
| 69 | + $imgOptions['class'] = 'artbox-lazy'; | ||
| 70 | + } | ||
| 71 | + return Html::img(''); | ||
| 72 | + } else { | ||
| 73 | + return Html::img($src, $imgOptions); | ||
| 74 | + } | ||
| 64 | } | 75 | } |
| 65 | 76 | ||
| 66 | /** | 77 | /** |
| 1 | +$(function() { | ||
| 2 | + $('img.artbox-lazy').lazyload(); | ||
| 3 | + lazyThreshold(); | ||
| 4 | + lazyEvent(); | ||
| 5 | + lazyEffect(); | ||
| 6 | +}); | ||
| 7 | +function lazyThreshold() { | ||
| 8 | + $.each($('img.artbox-lazy-threshold'), function(index, value) { | ||
| 9 | + var threshold = 200; | ||
| 10 | + var attribute = $(value).attr('data-threshold'); | ||
| 11 | + if(attribute) { | ||
| 12 | + threshold = attribute; | ||
| 13 | + } | ||
| 14 | + this.lazyload({ | ||
| 15 | + threshold: threshold | ||
| 16 | + }); | ||
| 17 | + }); | ||
| 18 | +} | ||
| 19 | +function lazyEvent() { | ||
| 20 | + $.each($('img.artbox-lazy-event'), function(index, value) { | ||
| 21 | + var event = 'click'; | ||
| 22 | + var attribute = $(value).attr('data-event'); | ||
| 23 | + if(attribute) { | ||
| 24 | + event = attribute; | ||
| 25 | + } | ||
| 26 | + this.lazyload({ | ||
| 27 | + event: event | ||
| 28 | + }); | ||
| 29 | + }); | ||
| 30 | +} | ||
| 31 | +function lazyEffect() { | ||
| 32 | + $.each($('img.artbox-lazy-effect'), function(index, value) { | ||
| 33 | + var effect = 'fadeIn'; | ||
| 34 | + var attribute = $(value).attr('data-effect'); | ||
| 35 | + if(attribute) { | ||
| 36 | + effect = attribute; | ||
| 37 | + } | ||
| 38 | + this.lazyload({ | ||
| 39 | + effect: effect | ||
| 40 | + }); | ||
| 41 | + }); | ||
| 42 | +} | ||
| 0 | \ No newline at end of file | 43 | \ No newline at end of file |