Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (4)

Лучшие ответы пользователя

Все ответы (5)
  • Как переключать div по кнопке радио каждые 30сек?

    @4ce
    Привет.
    Непонятен вопрос куда нужно переключать?
    Тем не менее вот ответ вроде бы в пределах вопроса и кода...
    setInterval(function func(){
    rowe.children[Math.floor(Math.random()*rowe.children.length)].click()
    },30000);
    Где:
    setInterval это функция из вопроса
    rowe.children это массив вложенных элементов в элементе id="rowe"
    чтобы обратится к элементу массива rowe.children[номер элемента начиная с нуля]
    в конце .click() чтобы "кликнуть" (≈нажать на что нужно)
    так как по чему нажать не ясно ... Math.random() ... то есть случайный выбор...

    Конкретно js код из ответа по идее дооолжен работать и без дополнительных библиотек...

    ~_^ Удачи!
    Ответ написан
    1 комментарий
  • JS canvas. Фильтры на фото и как их задать?

    @4ce
    canvas css filter
    https://www.google.com/search?q=canvas+css+filter
    CanvasRenderingContext2D.filter
    https://developer.mozilla.org/en-US/docs/Web/API/C...

    ≈для текста
    <canvas id="canvas"></canvas>
    <script>
    ctx = canvas.getContext('2d');
    //vvvvvvvvvvvvvvvvvvvvvv;
    ctx.filter = 'blur(4px)';//<=you search this;
    //^^^^^^^^^^^^^^^^^^^^^^;
    ctx.font = '48px serif';
    ctx.fillText('Hello world', 50, 100);
    </script>


    ≈ и для картинки( для демо нужна картинка поэтому смотри первый пример, принцип тот же и этот код в спойлере нажми на эту строчку чтоб рзвернуть)

    <canvas id="canvas" width="400" height="150"></canvas>
    <div style="display:none;">
      <img id="source" src="rhino.jpg" />
    </div>
    <script>
    canvas = document.getElementById('canvas');
    ctx = canvas.getContext('2d');
    image = document.getElementById('source');
    
    image.addEventListener('load', (e) => {
      // Draw unfiltered image
      ctx.drawImage(image, 0, 0, image.width * .6, image.height * .6);
    
      // Draw image with filter
      ctx.filter = 'contrast(1.4) sepia(1) drop-shadow(-9px 9px 3px #e81)';
      ctx.drawImage(image, 400, 0, -image.width * .6, image.height * .6);
    });
    </script>



    Дополнение: так как возможно(затестить не вышло)
    "Упомянутые выше фильтры не работают в сафари."
    как заметил Alexandroppolus


    Примечание:не знаю на сколько уместно это дополнение в рамках ответа на вопрос изгаляться по всякому можно...
    Я попробовал загрузить css фильтр в svg который встроен в canvas,
    пока не знаю работает это в Safari или нет но у меня работает,
    собирался возможно написать полифил но на сегодня это пока всё...

    Не очень легко воспринимаемый код html страницы в спойлере
    <!--
    demo canvas with css "grayscale(1)" filter in svg container
    ^(this maybe need if canvas css filter  not support but i no know maybe this no work)
    for:
    https://qna.habr.com/q/1251088#answer_2290516
    -->
    demo image canvas id=iDemoImage<br>
    <canvas id="iDemoImage" width="100" height="100" style="border:solid 1px"></canvas>
    <script>
    (function(elementCanvas1,gC2,f){
    gC2=elementCanvas1.getContext('2d');
    function r1(n){
    return Math.round(Math.random()*n)
    }
    for(f=0;f<50;f++){
    gC2.fillStyle='rgb('+r1(255)+','+r1(255)+','+r1(255)+')';
    gC2.fillRect(r1(80),r1(80),10+r1(10),10+r1(10));
    }
    })(iDemoImage);
    </script><br><br>
    demo canvas with css "grayscale(1)" filter in svg container id=iDemoFilter<br>
    <canvas id="iDemoFilter" width="400" height="150" style="border:solid 1px"></canvas>
    <script>
    (function(elementCanvas1,gC2,image1){
    gC2=elementCanvas1.getContext('2d');
    gC2.drawImage(iDemoImage,25,25);
    
    image1=document.createElement('img');
    image1.src='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="'
    +iDemoImage.width+'" height="'+iDemoImage.height+'"> <image style="'+
     /*vvvvvvvvvvvvvvv*/
    'filter:grayscale(1)'/*<=css filter here*/
     /*^^^^^^^^^^^^^^^*/
    +'" href="'+iDemoImage.toDataURL()+'" height="100%" width="100%"/></svg>';
    image1.onload=function(){gC2.drawImage(image1,150,25)};
    
    gC2.filter='grayscale(1)';
    gC2.drawImage(iDemoImage,275,25);
    })(iDemoFilter);
    </script>

    У меня результат выглядел примерно так(первое картинка без фильтров, второе в svg с фильтром, третье обычный фильтр):
    63e79ce9d16e8863152708.png
    Удачи ~_^ !
    Ответ написан
    Комментировать
  • При переключении на Dark Mode ползунок не сохраняет позицию?

    @4ce
    Если добавить в JS darkModeToggle.checked=true
    сюда:
    if (darkMode === 'enabled') {
      enableDarkMode();
      darkModeToggle.checked=true;
    }
    то при загрузке страницы JS переставит его в нужное положение!

    Простой пример переключения через JS здесь:
    https://www.w3schools.com/jsref/prop_checkbox_chec...
    https://www.w3schools.com/jsref/tryit.asp?filename...
    найдено так:
    https://www.google.com/search?client=ubuntu&channe...

    И меньше драмы всё будет! только я бы как то по другому сделал ~_^
    Ответ написан
    4 комментария
  • Svg css анимация?

    @4ce
    ⠀Такое?
    ⠀Что поменялось?
    <ellipse class="st1" cx="297.6" cy="420.9" rx="123.7" ry="20"/>
    заменено на:
    <ellipse class="st1" cx="297.6" cy="420.9" rx="123.7" ry="20">
    <animate attributeName="ry" dur="2s" repeatCount="indefinite" keyTimes="0;.5;1" values="20;0;20"/>
     </ellipse>

    ⠀Где: keyTimes="0;.5;1"(от 0 до 1) время изменения attributeName="ry"(ry) values="20;0;20"(значения ry) умноженное на dur="2s"(время анимации 2секунды) повторявшееся repeatCount="indefinite"(количество повторений сейчас:бесконечно)
    ⠀Но это не единственный вариант решения.
    ⠀В качестве шпаргалки при написании ответа пользовался статьёй A Guide to SVG Animations (SMIL) (найдено в google)
    Ответ написан
    1 комментарий
  • Как на canvas увеличить толщину линий картинки?

    @4ce
    Привет всем!
    автор вопроса я не совсем понял твой вопрос...


    Если задача увеличить толщину линии в canvas то наверное
    line width canvas
    https://www.google.com/search?q=line+width+canvas
    CanvasRenderingContext2D.lineWidth
    https://developer.mozilla.org/en-US/docs/Web/API/C...

    |||
    CanvasRenderingContext2D.lineWidth=16;

    где "16" толщина линии в пикселях...

    Пример похожей рисовалки можно найти на Хабре:
    https://habr.com/ru/company/vdsina/blog/523306/
    |||
    Код в виде .html страницы из статьи (это спойлер нажми на эту строчку чтобы развернуть)
    <canvas id="v">
    <script>
    d=document, // shortcut for document
    d.body.style.margin=0, // reset style
    f=0, // mouse-down flag
    c=v.getContext("2d"), // canvas context
    v.width=innerWidth, // make canvas element fullscreen
    v.height=innerHeight,
    //vvvvvvvvvvvvv
    c.lineWidth=16, //<= make lines a bit wider
    //^^^^^^^^^^^^^
    x=e=>e.clientX||e.touches[0].clientX, // get X position from mouse/touch
    y=e=>e.clientY||e.touches[0].clientY, // get Y position from mouse/touch
    d.onmousedown=d.ontouchstart=e=>{f=1,e.preventDefault(),c.moveTo(x(e),y(e)),c.beginPath()},
    d.onmousemove=d.ontouchmove=e=>{f&&(c.lineTo(x(e),y(e)),c.stroke())},
    d.onmouseup=d.ontouchend=e=>f=0
    </script>


    Но в вопросе уже готовая картинка возможно нужно увелечить линии именно в ней через canvas...
    ^эту часть ответа считаю сложной и не обязательной...
    |||
    Для этих целей я поместил картинку в canvas и написал(переписал) svg фильтр на основе этой статьи:
    https://tympanus.net/codrops/2019/01/22/svg-filter...
    ^если честно не уверен что составлю по памяти такой же не запутавшись...
    |||
    Для понятности значения в фильтре которые могут быть названы как угодно я отметил единичками в конце
    Код в виде .html странцы (изображение должно быть в той же папке что и исполняемый файл и это спойлер нажми на эту строчку чтобы развернуть)
    <title>canvas svg filter</title>
    <svg width="0" height="0">
    <filter id="outline1" color=red>
    <feMorphology result="shadowFiler1" operator="dilate" radius="4"/>
    <!--                                            filter radius ^-->
    <!--vvvvv if color no need you can delete this vvvvv-->
    <feFlood flood-color="#44CCEE"  result="shadowColor1"/>
    <!--     ^^^^^^^^^^^^^ color ^                      -->
    <feComposite in="shadowColor1" in2="shadowFiler1" operator="in" result="colorAndShadow1"/>
    <!--^^^^^^^^^^^^^^^^^^^^^^ if color not need you can delete this ^^^^^^^^^^^^^^^^^^^^^^-->
    <feMerge>
    <feMergeNode in="colorAndShadow1"/>
    <feMergeNode in="SourceGraphic"/><!-- this line not need if you want only filter color-->
    </feMerge>
    </filter>
    </svg>
    <canvas id="canvas1"></canvas>
    <img id="image1" src="6422b38e42f09806476147.png"  style="display:none">
    <script>
    canvas0=canvas1.getContext('2d');
    image1.onload=function(){
    canvas1.width=image1.width;
    canvas1.height=image1.height;
    canvas0.filter = 'url(#outline1)';// Draw image with filter
    canvas0.drawImage(image1,0,0,image1.width,image1.height);// Draw image with filter
    }
    </script>

    |||
    Кааартинки!!! (это спойлер нажми на эту строчку чтобы развернуть)

    |||
    Картинка с тенью из вопроса
    642580e7078aa916053395.png
    |||
    Картинка новым цветом и утолщённой линей из вопроса
    642580f4c6d68164763192.png
    |||
    Картинка с утолщённой линей из вопроса
    642581455877b798391550.png


    ~_^ Удачи!
    Ответ написан
    Комментировать