Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Полупрозрачные края картинок (можно ли сделать?) (https://javascript.ru/forum/dom-window/65015-poluprozrachnye-kraya-kartinok-mozhno-li-sdelat.html)

рони 20.09.2016 17:31

Цитата:

Сообщение от Fesali
она грузится долго

не долго а только когда сработает скрипт , сделайте прелоад этой картинки в head, вынесите из скрипта
вот так
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .mask.hide{
    opacity: 0;
  }
  .mask{
    transition:opacity .8s;
  }

  </style>
  <script>(function(){
  var mask = document.createElement('img');
  mask.src = "centerblur.png";
  var width = 0;
  var height = 0;
  window.addEventListener('load', function(ev){
  var imagecanvas = document.createElement('canvas');
  var imagecontext = imagecanvas.getContext('2d');
  var images = document.querySelectorAll('.mask');
  var all = images.length;
    while (all--) {
      var img = images[all];
      width = img.offsetWidth;
      height = img.offsetHeight;
      imagecanvas.width = width;
      imagecanvas.height = height;
      imagecontext.drawImage(mask, 0, 0, width, height);
      imagecontext.globalCompositeOperation = 'source-atop';
      imagecontext.drawImage(img, 0, 0);
      img.src = imagecanvas.toDataURL();
      img.classList.remove('hide')
    }
  }, false);

})();</script>
</head>

<body>
<img src="preload.png" alt="" class="mask hide" >



</body>
</html>

Fesali 20.09.2016 18:42

Вот кое-что в гугле нашел, поколдовал и вот что получилось (края только подровнять нужно). Что скажете?
<div class="content">

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="620" height="412">
    <mask id="mask1">
      <ellipse cx="50%" cy="50%" rx="40%" ry="43%" fill="white" filter="url(#filter2)"></ellipse>
    </mask>
  <image xlink:href="http://www.imageup.ru/img133/2542020/preload.png" width="640" height="412" mask="url(#mask1)"></image>
</svg>


<svg width="0" height="0">
  <defs>
    <filter id="filter2">
      <feGaussianBlur stdDeviation="20"></feGaussianBlur>
    </filter>
        
    <linearGradient id="gradient" x1="0" y1="00%" x2="0" y2="100%">
      <stop stop-color="black" offset="0"></stop>
      <stop stop-color="white" offset="1"></stop>
    </linearGradient>
    </defs>
</svg>

      </div>

рони 20.09.2016 18:48

Fesali,
вам решать :)

warren buffet 22.09.2016 08:35

Fesali, про svg уже было сказано и еще раз скажу, что ты херней занимаешься. Если бы у тебя там был свой инстаграм, это виньетирование оказалось бы в числе других фильтров, но у тебя какая-то анальная идея экономить на трафике.


Часовой пояс GMT +3, время: 14:27.