<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>梦幻树木:在树上留下你的美好回忆</title>
		<link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.min.css">
		<style>
			body, html {
			  margin: 0;
			  padding: 0;
			  height: 100%;
			  width: 100%;
			}
<pre><code>		#island {
		  width: 100%;
		  height: 100%;
		  position: relative;
		  background-size: cover;
		}
		
		.flower {
		  width: 50px;
		  height: 50px;
		  position: absolute;
		}
		
		#cloudInput {
			width: 100px;
			height: 100px;
		  position: fixed;
		  top: 50%;
		  left: 50%;
		  transform: translate(-50%, -50%);
		  border: 1px solid black;
		  display: none;
		}
	&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;div id=&quot;island&quot; style=&quot;background-image: url('daoyu.png');&quot;&gt;&lt;/div&gt;
	&lt;script src=&quot;https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js&quot;&gt;&lt;/script&gt;
	&lt;script src=&quot;https://cdn.staticfile.org/layui/2.5.6/layui.min.js&quot;&gt;&lt;/script&gt;
	&lt;script&gt;
		var island = document.getElementById('island');
		
		// 从localStorage中获取保存的花朵和内容
		var savedFlowers = JSON.parse(localStorage.getItem('flowers')) || [];
		
		// 创建保存花朵和内容的数组
		var flowers = [];
		
		
// 遍历已保存的花朵并恢复它们
	savedFlowers.forEach(function(savedFlower) {
	  var flower = document.createElement('img');
	  flower.src = savedFlower.image;
	  flower.style.top = savedFlower.top + 'px';
	  flower.style.left = savedFlower.left + 'px';
	  flower.classList.add('flower');
	  island.appendChild(flower);
	
	  flower.addEventListener('mouseover', function() {
	    showTooltip(flower);
	  });
	
	  flower.addEventListener('mouseout', function() {
	    hideTooltip();
	  });
	
	  flowers.push(flower);
	  flower.data = savedFlower.data; // 将保存的数据赋值给对应花朵的提示词
	});

island.addEventListener('click', function(event) {
  if (event.target !== island) {
    return;
  }

  var activeFlower = document.createElement('img');
  activeFlower.data = '';
  
  activeFlower.src = 'tree.jpg';
  activeFlower.style.top = event.clientY + 'px';
  activeFlower.style.left = event.clientX + 'px';
  activeFlower.classList.add('flower');
  island.appendChild(activeFlower);
  
  activeFlower.addEventListener('mouseover', function() {
    showTooltip(activeFlower);
  });
  
  activeFlower.addEventListener('mouseout', function() {
    hideTooltip();
  });
  
  if (activeFlower &amp;&amp; activeFlower.data) {
    layer.tips(content, activeFlower, {
      tips: [1, '#000'],
      time: 0
    });
  }
  
  flowers.push(activeFlower);

  island.removeEventListener('click', clickHandler); // 解除点击事件

  function clickHandler(event) {
    if (event.target !== island) {
      return;
    }

    var activeFlower = document.createElement('img');
    activeFlower.data = '';
    
    activeFlower.src = 'tree.jpg';
    activeFlower.style.top = event.clientY + 'px';
    activeFlower.style.left = event.clientX + 'px';
    activeFlower.classList.add('flower');
    island.appendChild(activeFlower);
    
    activeFlower.addEventListener('mouseover', function() {
	
      showTooltip(activeFlower);
    });
    
    activeFlower.addEventListener('mouseout', function() {
      hideTooltip();
    });
    
    if (activeFlower &amp;&amp; activeFlower.data) {
      layer.tips(content, activeFlower, {
        tips: [1, '#000'],
        time: 0
      });
    }
    
    flowers.push(activeFlower);
  }

  setTimeout(function() {
    island.addEventListener('click', clickHandler); // 重新绑定点击事件
  }, 0);
</code></pre>
<p>});</p>
<pre><code>	function showTooltip(activeFlower) {
		
	    layui.use('layer', function() {
	        var layer = layui.layer;
	        if (activeFlower &amp;&amp; activeFlower.data) {
	            layer.tips(activeFlower.data, activeFlower,  {
	                tips: [1, '#000'],
	                time: 0
	            });
	        }
	    });
	}
		
		function hideTooltip() {
		  layui.use('layer', function() {
		    var layer = layui.layer;
		    layer.closeAll('tips');
		  });
		}
		
	$(document).on('click', '.flower', function(event) {
	    var activeFlower = this;
	    var time = 0; // 定义time变量
	    
	    event.stopPropagation();
	
	    layui.use(['layer', 'form'], function() {
	        var layer = layui.layer;
	        var form = layui.form;
	
	        $(activeFlower).off('click'); // 解除之前绑定的点击事件
	
	
	        // 判断花朵图片提示词是否有值,如果有值则直接返回
	        if (activeFlower.data) {
			
	            return;
	        }
	
	        var cloudInput = layer.open({
	            type: 1,
	            title: false,
	            closeBtn: 0,
	            shadeClose: false,
	            area: ['100px', '100px'],
	            content: '&lt;div style=&quot;padding: 20px;&quot;&gt;&lt;input id=&quot;inputText&quot; type=&quot;text&quot; class=&quot;layui-input&quot; &gt;&lt;/div&gt;',
	            success: function(layero, index) {
	                var inputText = layero.find('#inputText');
	                inputText.val(activeFlower.data);
	                inputText.focus();
	
	                inputText.keydown(function(event) {
	                    if (event.keyCode === 13) {
	                        activeFlower.data = inputText.val();
	                        inputText.val('');
	                        layer.close(cloudInput);
	                        $(activeFlower).on('click', function(event) {
	                            event.stopPropagation();
	                            showInput(activeFlower);
	                        }); // 重新绑定点击事件
	                        time = Math.floor(Math.random() * 3 + 1); // 生成1到3之间的随机数
	
	                        setTimeout(function() {
	                            var message = new SpeechSynthesisUtterance(time+'分钟后把你最美好的事情写出来放到树里');
	                            window.speechSynthesis.speak(message);
	                            layer.msg(time+'分钟后把你最美好的事情写出来放到树里', {
	                                time: 5000,
	                                offset: 't',
	                                anim: 6
	                            });
	                        }, 3000);
	
	                        setTimeout(function() {
	                            var message = new SpeechSynthesisUtterance('时间到了,现在可以把你最美好的事情写出来放到树里啦!');
	                            window.speechSynthesis.speak(message);
	                            layer.msg('时间到了,现在可以把你最美好的事情写出来放到树里啦!', {
	                                time: 5000,
	                                offset: 't',
	                                anim: 6
	                            });
	                        }, time * 60 * 1000);
	                    }
	                });
	            }
	        });
	    });
	});




	
	// 在窗口关闭时保存花朵和内容到localStorage中
	window.addEventListener('beforeunload', function() {
	  var savedFlowers = flowers.map(function(flower) {
	    return {
	      image: flower.src,
	      top: parseInt(flower.style.top),
	      left: parseInt(flower.style.left),
	      data: flower.data
	    };
	  });
	  savedFlowers.forEach(function(savedFlower) {
	    var flower = flowers.find(function(flower) {
	      return flower.src === savedFlower.image &amp;&amp; parseInt(flower.style.top) === savedFlower.top &amp;&amp; parseInt(flower.style.left) === savedFlower.left;
	    });
	    if (flower) {
	      flower.data = savedFlower.data;
	    }
	  });
	  localStorage.setItem('flowers', JSON.stringify(savedFlowers));
	});



	&lt;/script&gt;
&lt;/body&gt;
</code></pre>
</html>
梦幻树木:在树上留下你的美好回忆

原文地址: https://www.cveoy.top/t/topic/HsS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录