Size: a a a

JavaScript Noobs — сообщество новичков

2020 December 29

AE

Alexey Elizarov in JavaScript Noobs — сообщество новичков
Chris
Так себе вариант, постоянно мин/макс по всему массиву дёргать, лучше как я выше написал сделать
я к тому чью ты проблему решаешь
источник

DP

Defragmented Panda in JavaScript Noobs — сообщество новичков
Alexey Elizarov
var params = {x:4, y:5};
var func = new Function(...Object.keys(params), 'return x+y');
func(...Object.values(params))

вообще если в лоб решать то типо так, но надо условиться что так ты сделаешь какую то херню и стоит явно указывать какие имена переменных будут переданны в каком порядке
спасибо
источник

DP

Defragmented Panda in JavaScript Noobs — сообщество новичков
Alexey Elizarov
var params = {x:4, y:5};
var func = new Function(...Object.keys(params), 'return x+y');
func(...Object.values(params))

вообще если в лоб решать то типо так, но надо условиться что так ты сделаешь какую то херню и стоит явно указывать какие имена переменных будут переданны в каком порядке
я так понимаю это почти эквивалентно with(params){}?
источник

RM

René Ma in JavaScript Noobs — сообщество новичков
как сделать чтобы падающие снежинки на сайте не попадали на  контент, а падали по бокам?
// количество снежинок, которое будет на экране одновременно.
var snowmax=30

// Цвета для снежинок. Для каждой конкретной снежинки цвет выбирается случайно из этого массива.
var snowcolor=new Array("#b9dff5","#7fc7ff","#7fb1ff","#7fc7ff","#b9dff5")

// Шрифт для снежинок
var snowtype=new Array("Times")

// Символ (*) и есть снежинка, в место нее можно вставить любой другой символ.
var snowletter="❄"

// Скорость движения снежинок (от 0.3 до 2)
var sinkspeed=0.4

// Максимальный размер для снежинок
var snowmaxsize=18

// Минимальный размер для снежинок
var snowminsize=10

// Зона для снежинок
// 1 для всей страницы, 2 в левой части страницы
// 3 в центральной части, 4 в правой части страницы
var snowingzone=1

////////////////////////
///////// Конец настроек
////////////////////////

var snow=new Array()
var marginbottom
var marginright
var timer
var i_snow=0
var x_mv=new Array();
var crds=new Array();
var lftrght=new Array();
var browserinfos=navigator.userAgent
var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/)
var ns6=document.getElementById&&!document.all
var opera=browserinfos.match(/Opera/)
var browserok=ie5||ns6||opera

function randommaker(range) {
   rand=Math.floor(range*Math.random())
   return rand
}

function initsnow() {
   if (ie5 || opera) {
       marginbottom = document.documentElement.clientHeight+50
       marginright = document.body.clientWidth-15
   }
   else if (ns6) {
       marginbottom = document.documentElement.clientHeight+50
       marginright = window.innerWidth-15
   }
   var snowsizerange=snowmaxsize-snowminsize
   for (i=0;i<=snowmax;i++) {
       crds[i] = 0;
       lftrght[i] = Math.random()*15;
       x_mv[i] = 0.03 + Math.random()/10;
       snow[i]=document.getElementById("s"+i)
       snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)]
       snow[i].size=randommaker(snowsizerange)+snowminsize
       snow[i].style.fontSize=snow[i].size+'px';
       snow[i].style.color=snowcolor[randommaker(snowcolor.length)]
       snow[i].style.zIndex=1000
       snow[i].sink=sinkspeed*snow[i].size/5
       if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
       if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
       if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
       if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
       snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size)
       snow[i].style.left=snow[i].posx+'px';
       snow[i].style.top=snow[i].posy+'px';
   }
   movesnow()
}

function movesnow() {
   for (i=0;i<=snowmax;i++) {
       crds[i] += x_mv[i];
       snow[i].posy+=snow[i].sink
       snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i])+'px';
       snow[i].style.top=snow[i].posy+'px';
       
       if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])){
           if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
           if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
           if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
           if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
           snow[i].posy=0
       }
   }
   var timer=setTimeout("movesnow()",50)
}

for (i=0;i<=snowmax;i++) {
   document.body.insertAdjacentHTML('beforeend', "<span id='s"+i+"' style='user-select:none;position:fixed;top:-"+snowmaxsize+"'>"+snowletter+"</span>")
}

if (browserok) {
   window.onload=initsnow    
}
источник

DP

Defragmented Panda in JavaScript Noobs — сообщество новичков
René Ma
как сделать чтобы падающие снежинки на сайте не попадали на  контент, а падали по бокам?
// количество снежинок, которое будет на экране одновременно.
var snowmax=30

// Цвета для снежинок. Для каждой конкретной снежинки цвет выбирается случайно из этого массива.
var snowcolor=new Array("#b9dff5","#7fc7ff","#7fb1ff","#7fc7ff","#b9dff5")

// Шрифт для снежинок
var snowtype=new Array("Times")

// Символ (*) и есть снежинка, в место нее можно вставить любой другой символ.
var snowletter="&#10052;"

// Скорость движения снежинок (от 0.3 до 2)
var sinkspeed=0.4

// Максимальный размер для снежинок
var snowmaxsize=18

// Минимальный размер для снежинок
var snowminsize=10

// Зона для снежинок
// 1 для всей страницы, 2 в левой части страницы
// 3 в центральной части, 4 в правой части страницы
var snowingzone=1

////////////////////////
///////// Конец настроек
////////////////////////

var snow=new Array()
var marginbottom
var marginright
var timer
var i_snow=0
var x_mv=new Array();
var crds=new Array();
var lftrght=new Array();
var browserinfos=navigator.userAgent
var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/)
var ns6=document.getElementById&&!document.all
var opera=browserinfos.match(/Opera/)
var browserok=ie5||ns6||opera

function randommaker(range) {
   rand=Math.floor(range*Math.random())
   return rand
}

function initsnow() {
   if (ie5 || opera) {
       marginbottom = document.documentElement.clientHeight+50
       marginright = document.body.clientWidth-15
   }
   else if (ns6) {
       marginbottom = document.documentElement.clientHeight+50
       marginright = window.innerWidth-15
   }
   var snowsizerange=snowmaxsize-snowminsize
   for (i=0;i<=snowmax;i++) {
       crds[i] = 0;
       lftrght[i] = Math.random()*15;
       x_mv[i] = 0.03 + Math.random()/10;
       snow[i]=document.getElementById("s"+i)
       snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)]
       snow[i].size=randommaker(snowsizerange)+snowminsize
       snow[i].style.fontSize=snow[i].size+'px';
       snow[i].style.color=snowcolor[randommaker(snowcolor.length)]
       snow[i].style.zIndex=1000
       snow[i].sink=sinkspeed*snow[i].size/5
       if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
       if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
       if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
       if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
       snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size)
       snow[i].style.left=snow[i].posx+'px';
       snow[i].style.top=snow[i].posy+'px';
   }
   movesnow()
}

function movesnow() {
   for (i=0;i<=snowmax;i++) {
       crds[i] += x_mv[i];
       snow[i].posy+=snow[i].sink
       snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i])+'px';
       snow[i].style.top=snow[i].posy+'px';
       
       if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])){
           if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
           if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
           if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
           if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
           snow[i].posy=0
       }
   }
   var timer=setTimeout("movesnow()",50)
}

for (i=0;i<=snowmax;i++) {
   document.body.insertAdjacentHTML('beforeend', "<span id='s"+i+"' style='user-select:none;position:fixed;top:-"+snowmaxsize+"'>"+snowletter+"</span>")
}

if (browserok) {
   window.onload=initsnow    
}
z-index снежинок меньше чем у блока с контентом
источник

RM

René Ma in JavaScript Noobs — сообщество новичков
René Ma
как сделать чтобы падающие снежинки на сайте не попадали на  контент, а падали по бокам?
// количество снежинок, которое будет на экране одновременно.
var snowmax=30

// Цвета для снежинок. Для каждой конкретной снежинки цвет выбирается случайно из этого массива.
var snowcolor=new Array("#b9dff5","#7fc7ff","#7fb1ff","#7fc7ff","#b9dff5")

// Шрифт для снежинок
var snowtype=new Array("Times")

// Символ (*) и есть снежинка, в место нее можно вставить любой другой символ.
var snowletter="&#10052;"

// Скорость движения снежинок (от 0.3 до 2)
var sinkspeed=0.4

// Максимальный размер для снежинок
var snowmaxsize=18

// Минимальный размер для снежинок
var snowminsize=10

// Зона для снежинок
// 1 для всей страницы, 2 в левой части страницы
// 3 в центральной части, 4 в правой части страницы
var snowingzone=1

////////////////////////
///////// Конец настроек
////////////////////////

var snow=new Array()
var marginbottom
var marginright
var timer
var i_snow=0
var x_mv=new Array();
var crds=new Array();
var lftrght=new Array();
var browserinfos=navigator.userAgent
var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/)
var ns6=document.getElementById&&!document.all
var opera=browserinfos.match(/Opera/)
var browserok=ie5||ns6||opera

function randommaker(range) {
   rand=Math.floor(range*Math.random())
   return rand
}

function initsnow() {
   if (ie5 || opera) {
       marginbottom = document.documentElement.clientHeight+50
       marginright = document.body.clientWidth-15
   }
   else if (ns6) {
       marginbottom = document.documentElement.clientHeight+50
       marginright = window.innerWidth-15
   }
   var snowsizerange=snowmaxsize-snowminsize
   for (i=0;i<=snowmax;i++) {
       crds[i] = 0;
       lftrght[i] = Math.random()*15;
       x_mv[i] = 0.03 + Math.random()/10;
       snow[i]=document.getElementById("s"+i)
       snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)]
       snow[i].size=randommaker(snowsizerange)+snowminsize
       snow[i].style.fontSize=snow[i].size+'px';
       snow[i].style.color=snowcolor[randommaker(snowcolor.length)]
       snow[i].style.zIndex=1000
       snow[i].sink=sinkspeed*snow[i].size/5
       if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
       if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
       if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
       if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
       snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size)
       snow[i].style.left=snow[i].posx+'px';
       snow[i].style.top=snow[i].posy+'px';
   }
   movesnow()
}

function movesnow() {
   for (i=0;i<=snowmax;i++) {
       crds[i] += x_mv[i];
       snow[i].posy+=snow[i].sink
       snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i])+'px';
       snow[i].style.top=snow[i].posy+'px';
       
       if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])){
           if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
           if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
           if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
           if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
           snow[i].posy=0
       }
   }
   var timer=setTimeout("movesnow()",50)
}

for (i=0;i<=snowmax;i++) {
   document.body.insertAdjacentHTML('beforeend', "<span id='s"+i+"' style='user-select:none;position:fixed;top:-"+snowmaxsize+"'>"+snowletter+"</span>")
}

if (browserok) {
   window.onload=initsnow    
}
Я бы справился свойством Z-index, но он будет конфликтовать с остальной частью сайта
источник

AE

Alexey Elizarov in JavaScript Noobs — сообщество новичков
Defragmented Panda
я так понимаю это почти эквивалентно with(params){}?
просто with стараются не использовать, а это просто деструктуризация
источник

DP

Defragmented Panda in JavaScript Noobs — сообщество новичков
René Ma
Я бы справился свойством Z-index, но он будет конфликтовать с остальной частью сайта
если не хочешь через z-index то вcе становится резко очень сложно. и тебе придется кодить свой "граф движок" и высчитывать где блоки сайта и снежинки
источник

DP

Defragmented Panda in JavaScript Noobs — сообщество новичков
Alexey Elizarov
просто with стараются не использовать, а это просто деструктуризация
понимаю, по этим же соображениям смотрю можно ли обойтись без with
источник

RM

René Ma in JavaScript Noobs — сообщество новичков
Defragmented Panda
если не хочешь через z-index то вcе становится резко очень сложно. и тебе придется кодить свой "граф движок" и высчитывать где блоки сайта и снежинки
ок, понял
источник

AE

Alexey Elizarov in JavaScript Noobs — сообщество новичков
Defragmented Panda
понимаю, по этим же соображениям смотрю можно ли обойтись без with
меня смущает что ты все равно при описании тела функции должен знать имена переменных и сколько их, что динамическая составляющая которую ты пытаешься добиться теряет смысл
источник

DP

Defragmented Panda in JavaScript Noobs — сообщество новичков
Alexey Elizarov
меня смущает что ты все равно при описании тела функции должен знать имена переменных и сколько их, что динамическая составляющая которую ты пытаешься добиться теряет смысл
а тело функции тоже составляется динамически )
источник

AE

Alexey Elizarov in JavaScript Noobs — сообщество новичков
Defragmented Panda
а тело функции тоже составляется динамически )
понял. а что за такую интересную задачу ты решаешь?
источник

DP

Defragmented Panda in JavaScript Noobs — сообщество новичков
Alexey Elizarov
понял. а что за такую интересную задачу ты решаешь?
калькулятор пишу )
грубо говоря eval (2+2)
источник

AE

Alexey Elizarov in JavaScript Noobs — сообщество новичков
Defragmented Panda
калькулятор пишу )
грубо говоря eval (2+2)
я просто на базе new Function видел реализацию системы плагинов, а ля как в фигме это делается. Когда нужно сторонний код запустить внутри приложения предоставляя интерфейс для взаимодействия с внутренним ядром грубо говоря. Интересная тема, есть куда копать
источник

А

Андрей in JavaScript Noobs — сообщество новичков
Нагуглил пример нужный мне и там импортится библтотека из файла ./three.min, я захотел импортить эту библиотеку из нпм пакета с папки нод_модулес. Но когда поменял импорты, то пример крашнулся, это связанно с тем что локальный файл с плагином ./three.min не из нпм репозитория был изначально?
источник

А

Андрей in JavaScript Noobs — сообщество новичков
🙈
источник

AE

Alexey Elizarov in JavaScript Noobs — сообщество новичков
Defragmented Panda
калькулятор пишу )
грубо говоря eval (2+2)
вот еще если интересно https://github.com/Agoric/realms-shim
Realms API щас уже в stage 2
источник

DP

Defragmented Panda in JavaScript Noobs — сообщество новичков
слишком сложно. я туплю даже в своих полутора переменных
источник

AE

Alexey Elizarov in JavaScript Noobs — сообщество новичков
Андрей
Нагуглил пример нужный мне и там импортится библтотека из файла ./three.min, я захотел импортить эту библиотеку из нпм пакета с папки нод_модулес. Но когда поменял импорты, то пример крашнулся, это связанно с тем что локальный файл с плагином ./three.min не из нпм репозитория был изначально?
в примере какая версия three.js?
источник