Я нашел JavaScript с эффектом падающего снега и хотел спросить: можно ли добавить этот скрипт в тему? Я пытался вставить его туда, где обычно размещают CSS, но сайт начал глючить, ха-ха. Есть ли другое место для вставки или Discourse не поддерживает такие скрипты?
Можно ли вставлять любой JavaScript-код в секцию ?
А когда есть HTML-код в сочетании с CSS, нужно ли размещать его в обычном CSS или в объединённом CSS???
Можете показать код, который вы хотите вставить, чтобы мы лучше поняли, чего вы хотите достичь?
HTML — это
<div class="snow"></div> 176 раз
а CSS — это
body {
height: 100vh;
background: radial-gradient(ellipse at bottom, #1b2735 0%, #090a0f 100%);
overflow: hidden;
filter: drop-shadow(0 0 10px white);
}
@function random_range($min, $max) {
$rand: random();
$random_range: $min + floor($rand * (($max - $min) + 1));
@return $random_range;
}
.snow {
$total: 200;
position: absolute;
width: 10px;
height: 10px;
background: #fff;
border-radius: 50%;
@for $i from 1 through $total {
$random-x: random(1000000) * 0.0001vw;
$random-offset: random_range(-100000, 100000) * 0.0001vw;
$random-x-end: $random-x + $random-offset;
$random-x-end-yoyo: $random-x + ($random-offset / 2);
$random-yoyo-time: random_range(30000, 80000) / 100000;
$random-yoyo-y: $random-yoyo-time * 100vh;
$random-scale: random(10000) * 0.0001;
$fall-duration: random_range(10, 30) * 1s;
$fall-delay: random(30) * -1s;
&:nth-child(#{$i}) {
opacity: random(10000) * 0.0001;
transform: translate($random-x, -10px) scale($random-scale);
animation: fall-#{$i} $fall-duration $fall-delay linear infinite;
}
@keyframes fall-#{$i} {
#{percentage($random-yoyo-time)} {
transform: translate($random-x-end, $random-yoyo-y) scale($random-scale);
}
to {
transform: translate($random-x-end-yoyo, 100vh) scale($random-scale);
}
}
}
}
<script src="https://sites.google.com/site/novoefeitoneve/home/novoefeitoneve/snowstorm.js"></script>
Я пытался использовать этот JavaScript, но он не сработал.
Я бы не рекомендовал подключать внешний JavaScript, если вы не уверены в его надёжности. Если удалённый скрипт изменится, это может сломать ваш форум.
Вместо этого я предлагаю создать новый компонент темы в панели администратора. Назовите его, например, «эффект снежинки».
Отредактируйте этот новый компонент темы:
-
На вкладке «Head» скопируйте и вставьте код JavaScript внутри тега
<script>. -
На вкладке «CSS» вставьте код CSS, исключив часть
height: 100vh;изbody {. -
На вкладке «Footer» вставьте 176 раз
<div class="snow"></div>. -
Наслаждайтесь снегом.
Обратите внимание, что этот эффект был создан кем-то в собственной HTML-среде, не является «совместимым с Discourse» из коробки и поэтому может вызвать проблемы на вашем форуме.
Вам действительно стоит прочитать это, @danielabc, если вы ещё этого не сделали:
Вы можете использовать это как образец: Компонент зимней снежной темы ![]()
Я нашел этот эффект снега, и он мне очень понравился, но он работает только на компьютере, на мобильном — нет. Почему? Нужно ли что-то активировать на мобильном устройстве, чтобы он заработал?
<script>if(typeof jQuery=='undefined'){document.write('<'+'script');document.write(' language="javascript"');document.write(' type="text/javascript"');document.write(' src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">');document.write('</'+'script'+'>')}</script><script>if(!image_urls){var image_urls=Array()}if(!flash_urls){var flash_urls=Array()}image_urls['rain1']="https://static.tumblr.com/wt4apym/gG6mxfzjz/lakeside_snowflake.png";image_urls['rain2']="https://static.tumblr.com/wt4apym/gG6mxfzjz/lakeside_snowflake.png";image_urls['rain3']="https://static.tumblr.com/wt4apym/gG6mxfzjz/lakeside_snowflake.png";image_urls['rain4']="https://static.tumblr.com/wt4apym/gG6mxfzjz/lakeside_snowflake.png";$(document).ready(function(){var c=$(window).width();var d=$(window).height();var e=function(a,b){return Math.round(a+(Math.random()*(b-a)))};var f=function(a){setTimeout(function(){a.css({left:e(0,c)+'px',top:'-30px',display:'block',opacity:'0.'+e(10,100)}).animate({top:(d-10)+'px'},e(7500,8000),function(){$(this).fadeOut('slow',function(){f(a)})})},e(1,8000))};$('<div></div>').attr('id','rainDiv')
.css({position:'fixed',width:(c-20)+'px',height:'1px',left:'0px',top:'-5px',display:'block'}).appendTo('body');for(var i=1;i<=20;i++){var g=$('<img/>').attr('src',image_urls['rain'+e(1,4)])
.css({position:'absolute',left:e(0,c)+'px',top:'-30px',display:'block',opacity:'0.'+e(10,100),'margin-left':0}).addClass('rainDrop').appendTo('#rainDiv');f(g);g=null};var h=0;var j=0;$(window).resize(function(){c=$(window).width();d=$(window).height()})});</script>
<script>if(typeof jQuery=='undefined'){document.write('<'+'script');document.write(' language="javascript"');document.write(' type="text/javascript"');document.write(' src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">');document.write('</'+'script'+'>')}</script><script>$(document).ready(function(){var a=$('<img>').attr({'src':'https://static.tumblr.com/wt4apym/gG6mxfzjz/lakeside_snowflake.png','border':0});$('<a></a>').css({position:'absolute',right:'0px',top:'22px','z-index':'90'}).attr({'href':'http://tutorialuntukblog.blogspot.com/2011/10/tutorial-kelopak-bunga-berguguran-di.html'}).append(a).appendTo('body')});</script>
Я узнаю об этом, спасибо
Я установил его, но ничего не произошло ![]()
Честно говоря, взять случайный эффект падающего снега из интернета и заставить его работать на Discourse — не самая простая задача.
У Discourse есть свои ограничения, и большинство скриптов JavaScript из открытых источников, которые вы хотите использовать на Discourse, нужно модифицировать и адаптировать под эти ограничения.
Я пробовал вчера, и в текущем виде эффект довольно… незаметный. Его, конечно, можно улучшить, но это потребует дополнительной работы.
Я также согласен с другими: если вы хотите добавить кастомизацию на свой сайт (похоже, вы очень активно в этом участвуете и часто читаете раздел Meta), вам стоит начать с основ и разобраться в HTML, CSS и JavaScript.
Я думаю, что бесплатная помощь здесь по таким кастомизациям будет ограничена.
Спасибо за разъяснение моих сомнений. Но я не понял одну вещь: эффекты работают на сайте для настольных компьютеров, но не для мобильных телефонов. Почему так?

