创建这个javascript和css繁重的项目最有效的方法是什么?
我有一个项目,用户在其中单击“不可见”创建这个javascript和css繁重的项目最有效的方法是什么?,javascript,html,css,frontend,Javascript,Html,Css,Frontend,我有一个项目,用户在其中单击“不可见” 对于这个例子,让我们使用这个特定的 因此,为了使belize仅在功能cenAmerica激活时显示,并在按下另一个按钮时停止存在,我必须执行以下操作: function cenAmerica() { c.style.backgroundImage = "url('https://i.imgur.com/DYh2sMR.jpg')"; c.style.backgroundSize = "65em 45em"; c.style.display
对于这个例子,让我们使用这个特定的
因此,为了使belize
仅在功能cenAmerica
激活时显示,并在按下另一个按钮时停止存在,我必须执行以下操作:
function cenAmerica() {
c.style.backgroundImage = "url('https://i.imgur.com/DYh2sMR.jpg')";
c.style.backgroundSize = "65em 45em";
c.style.display = "block";
//SHOWS
belize.style.display = "block";
因此,这意味着我必须在其他两个函数中添加这一行:
belize.style.display = "none";
最后,把它放在画布的背景图像上,这样看起来就像你在方格中按国家一样。css
伯利兹{
宽度:5em;
高度:10公分;
左:210像素;
顶部:1px;
}
问题来了:有没有更有效的方法?
我每次都在做的是:
1) 创建一个
lister.css
按钮{
宽度:10em;
身高:5公分;
字体:无衬线;
}
.按钮{
显示:无;
}
/*北美*/
.hitbox{
显示:无;
位置:绝对位置;
边框:1px纯黑;
}
#c{
显示:无;
位置:相对位置;
边框:1px纯黑;
宽度:65em;
高度:45em;
}
squares.css
/*中美洲*/
#伯利兹{
宽度:5em;
高度:10公分;
左:210像素;
顶部:1px;
}
#危地马拉阿拉托普{
宽度:7em;
高度:6.1米;
左:9.5%;
底部:80%;
}
#危地马拉三角洲{
宽度:3em;
高度:2米;
底部:86.5%;
左:6%;
}
#危地马拉{
宽度:10em;
高度:9公分;
变换:旋转(30度);
左:3%;
底部:2%;
}
#危地马拉阿拉斯利普{
高度:7公分;
宽度:5em;
左:12%;
底部:70%;
变换:旋转(340度);
}
#危地马拉树篱{
宽度:6em;
身高:5公分;
左:14%;
变换:旋转(320度);
}
为了便于理解,这里简单介绍了该项目的一个小规模演示,仅包括危地马拉(在“中美洲”子分部下)及其
我不会为此使用HTML元素。太复杂的点击区域和太多的图形。矩形元素不适合重叠的热点
如果您真的对以一种可伸缩、可扩展并最终可维护的方式进行此操作感兴趣,请使用JavaScript游戏引擎。它们已经为您处理了SVG/Canvas呈现、加载和交互事件,并为这类繁重的UI应用程序提供了一个框架思想。其中包括:
- (我用这个做了一个完整的手机视频游戏)
…和一个大的等等
如果这是数据科学/GIS方向,您可能更喜欢的另一种方法是使用数据可视化框架。这种方法可能更复杂一些,您可能需要学习更多,但可能更适合您的兴趣
例如:
- 等等(谷歌“javascript矢量图形框架”)
这些库为您提供了对图形的更多控制,但有点难以掌握,并且对于您的应用程序来说可能太强大了
通常,这些库还将处理多浏览器渲染问题、事件处理,甚至移动设备支持(触摸事件等)。少花时间处理无聊的事情会让你专注于制作更好的产品
另外,将JSON数据结构制作成数据库,以便从单个数据源自动生成所有UI。这将为使用API调用构建UI铺平道路
停止硬编码按钮,当你点击几百个ID后,它将变成一个丑陋的怪物。相反,将带有坐标和元数据的SVG URL存储在JSON中(可能是树结构),并动态生成所有内容,可以是动态生成,也可以是递归函数生成
c.style.backgroundImage = "url('https://i.imgur.com/P8Eev1i.jpg')";
c.style.backgroundSize = "65em 45em";
c.style.display = "block";
function cenAmerica() {
c.style.backgroundImage = "url('https://i.imgur.com/DYh2sMR.jpg')";
c.style.backgroundSize = "65em 45em";
c.style.display = "block";
//SHOWS
belize.style.display = "block";
belize.style.display = "none";
//NORTH AMERICA
function northAmerica() {
var c = document.getElementById("c");
let nA1 = document.getElementById("nA1");
let nA2 = document.getElementById("nA2");
let nA3 = document.getElementById("nA3");
//show blocks
$([nA1, nA2, nA3]).each(function(){
$(this).css({ 'display' : 'block'});
});
c.style.backgroundImage = "url('https://i.imgur.com/P8Eev1i.jpg')";
c.style.backgroundSize = "65em 45em";
c.style.display = "block";
}
function nNorthAmerica() {
c.style.backgroundImage = "url('https://i.imgur.com/1TodCjG.jpg')";
c.style.backgroundSize = "65em 45em";
c.style.display = "block";
//HIDES
belize.style.display = "none";
belize.style.display = "none";
guatemalaTop.style.display = "none";
guatemalaTriangle.style.display = "none";
guatemalaMain.style.display = "none";
guatemalaSlip.style.display = "none";
guatemalaHedge.style.display = "none";
}
function carribean() {
c.style.backgroundImage = "url('https://i.imgur.com/7d1VrFw.jpg')";
c.style.backgroundSize = "65em 45em";
c.style.display = "block";
//HIDES
belize.style.display = "none";
belize.style.display = "none";
guatemalaTop.style.display = "none";
guatemalaTriangle.style.display = "none";
guatemalaMain.style.display = "none";
guatemalaSlip.style.display = "none";
guatemalaHedge.style.display = "none";
}
function cenAmerica() {
c.style.backgroundImage = "url('https://i.imgur.com/DYh2sMR.jpg')";
c.style.backgroundSize = "65em 45em";
c.style.display = "block";
//SHOWS
belize.style.display = "block";
guatemalaTop.style.display = "block";
guatemalaTriangle.style.display = "block";
guatemalaMain.style.display = "block";
guatemalaSlip.style.display = "block";
guatemalaHedge.style.display = "block";
}