我想知道如何在我的Shiny应用程序的背景中实现粒子动画,如https://vincentgarreau.com/particles.js/中所述
以下是到目前为止的我的Shiny代码。
用户界面
library(shiny)
fluidPage(
tagList(tags$head(includeCSS("CSS.css"), includeScript("particles.js"), includeScript("JS.js"))),
### particle.js is obtained from https://github.com/VincentGarreau/particles.js/
div(div(id = 'particles-js'), selectInput("Dummy", "Some Dummy number:",c(1,2,3)))
)
服务器
server <- function(input, output) {
}
CSS.css
#particles-js {
width: 100%;
height: 100%;
background: rgba(0,53,107, 0.3);
}
JS.js
particlesJS("particles-js", {
particles: {
number: {
value: 80,
density: {
enable: true,
value_area: 700
}
},
color: {
value: "#000"
},
shape: {
type: "circle",
stroke: {
width: 0,
color: "#000000"
},
polygon: {
nb_sides: 5
}
},
opacity: {
value: 0.5,
random: false,
anim: {
enable: false,
speed: 1,
opacity_min: 0.1,
sync: false
}
},
size: {
value: 3,
random: true,
anim: {
enable: false,
speed: 40,
size_min: 0.1,
sync: false
}
},
line_linked: {
enable: true,
distance: 150,
color: "#000",
opacity: 0.4,
width: 1
},
move: {
enable: true,
speed: 6,
direction: "none",
random: false,
straight: false,
out_mode: "out",
bounce: false,
attract: {
enable: false,
rotateX: 600,
rotateY: 1200
}
}
},
interactivity: {
detect_on: "canvas",
events: {
onhover: {
enable: true,
mode: "grab"
},
onclick: {
enable: true,
mode: "push"
},
resize: true
},
modes: {
grab: {
distance: 140,
line_linked: {
opacity: 1
}
},
bubble: {
distance: 400,
size: 40,
duration: 2,
opacity: 8,
speed: 3
},
repulse: {
distance: 200,
duration: 0.4
},
push: {
particles_nb: 4
},
remove: {
particles_nb: 2
}
}
},
retina_detect: true
});
显然,以上代码未能在我的Shiny应用程序的背景中合并“粒子”动画。
任何指向正确方向的指针将不胜感激。
谢谢,
最佳答案
按照包含here的建议,解决方案可以是:
用户界面
ui <- fluidPage(
tagList(
tags$head(tags$script(src="https://cdn.jsdelivr.net/npm/[email protected]/particles.min.js")),
tags$head(includeCSS("CSS.css")),
includeScript("app.js")),
div(div(id = 'particles-js'), selectInput("Dummy", "Some Dummy number:",c(1,2,3)))
)
app.js
particlesJS.load('particles-js', 'particles.json');
particle.json
{
"particles": {
"number": {
"value": 80,
"density": {
"enable": true,
"value_area": 800
}
},
"color": {
"value": "#ffffff"
},
"shape": {
"type": "circle",
"stroke": {
"width": 0,
"color": "#000000"
},
"polygon": {
"nb_sides": 5
},
"image": {
"src": "img/github.svg",
"width": 100,
"height": 100
}
},
"opacity": {
"value": 0.5,
"random": false,
"anim": {
"enable": false,
"speed": 1,
"opacity_min": 0.1,
"sync": false
}
},
"size": {
"value": 10,
"random": true,
"anim": {
"enable": false,
"speed": 80,
"size_min": 0.1,
"sync": false
}
},
"line_linked": {
"enable": true,
"distance": 300,
"color": "#ffffff",
"opacity": 0.4,
"width": 2
},
"move": {
"enable": true,
"speed": 12,
"direction": "none",
"random": false,
"straight": false,
"out_mode": "out",
"bounce": false,
"attract": {
"enable": false,
"rotateX": 600,
"rotateY": 1200
}
}
},
"interactivity": {
"detect_on": "canvas",
"events": {
"onhover": {
"enable": false,
"mode": "repulse"
},
"onclick": {
"enable": true,
"mode": "push"
},
"resize": true
},
"modes": {
"grab": {
"distance": 800,
"line_linked": {
"opacity": 1
}
},
"bubble": {
"distance": 800,
"size": 80,
"duration": 2,
"opacity": 0.8,
"speed": 3
},
"repulse": {
"distance": 400,
"duration": 0.4
},
"push": {
"particles_nb": 4
},
"remove": {
"particles_nb": 2
}
}
},
"retina_detect": true
}
CSS.css
#particles-js canvas{
position: absolute;
width: 100%;
height: 100%;
background: rgba(0,53,107, 0.3);
z-index: -1;
}
app.js
和particles.json
文件需要放入Shiny的www
目录(在我的Windows 7 PC中为C:\Users\<user>\Documents\R\win-library\3.4\shiny\www
)。关于javascript - 如何在“ Shiny ”应用程序中合并“粒子”动画,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49266822/