困难的HTML、JavaScript、CSS网格页面
仅供参考,这是我正在研究的一个简化/通用示例。我只是在寻找HTML、JavaScript和/或CSS来实现这一点。我希望这可以在没有任何javascript库的情况下完成。此外,该页面将基于从数据库加载的数据构建。这只需要在更新的IE/Firefox浏览器中使用 我需要创建一个网页,有一个固定大小的网格上的“细胞”,每个细胞将是150像素的150像素。这里是示例6x3网格,但我的网格大小会有所不同(4x10或3x5,等等,根据数据库数据): 每个单元都需要以下各项: 1)包含150像素乘150像素的“主”图像。此图像需要在浏览器中更改,如果可能,希望使用CSS精灵。我想将所有这些图像粘贴到一个文件中,然后裁剪到每个单元格中所需的内容 2)当鼠标位于“单元格”上时,将显示可单击图像的覆盖。在下面的示例中,我使用字母,但图像将不是字母,更像图标。这些单击需要能够运行不同的每图像javascript函数(因此单击“a”图像将运行函数a,而单击“F”将运行函数F,等等)。图像将取决于数据库信息,因此对于不同的单元格,一些将包括在内,而另一些则不包括在内。它们在细胞内的位置将始终是固定和控制的。下面是一个单元格顶部有图像(字母)时的外观:困难的HTML、JavaScript、CSS网格页面,javascript,html,css,grid,Javascript,Html,Css,Grid,仅供参考,这是我正在研究的一个简化/通用示例。我只是在寻找HTML、JavaScript和/或CSS来实现这一点。我希望这可以在没有任何javascript库的情况下完成。此外,该页面将基于从数据库加载的数据构建。这只需要在更新的IE/Firefox浏览器中使用 我需要创建一个网页,有一个固定大小的网格上的“细胞”,每个细胞将是150像素的150像素。这里是示例6x3网格,但我的网格大小会有所不同(4x10或3x5,等等,根据数据库数据): 每个单元都需要以下各项: 1)包含150像素乘150像
---------
|A B C|
|D E F| a single cell where all overlay images appear
|G H I|
---------
---------
|A C|
| E | a single cell where only some overlay images appear
|G |
---------
3)自由文本在单元格内换行并居中。如果该自由文本位于主图像#1的上方和可点击图像#2的下方,那将是最好的,但是如果它位于所有内容的上方,那么也可以。这个文本将有一个合理的长度限制,因此滚动超过150px x 150px应该不是一个问题,但它将需要包装
请记住,这不是家庭作业!HTML/javascript/CSS肯定不是我的强项。我已经在这方面工作了一段时间,并且已经看到/使用了许多关于如何完成这项工作的各个部分的示例。当我把所有的东西都放在一起时,我还没有找到任何能起作用的东西。事实上,我想要一张大桌子 要做到这一点并不难,至少如果这或多或少是你所需要的:
(我今天有点无聊:-)我个人认为桌子是魔鬼,所以这里有一些更像我使用浮动div的方法: 您可以轻松地为图像交换文本内容,或者通过CSS添加背景图像,还可以基于每个“control”div拥有的一个9类调用单独的JS函数 编辑:
,它确实包括一个实际的表,而不是使用
显示:表单元格
,以及用于图像和包装的附加示例标记,以及一个基本的Javascript示例。这样做是为了解决旧浏览器支持的问题,并满足KM的要求。尽管整体结构与最初的小提琴基本相同。我刚刚提出了这个解决方案。它是table
和div
元素的混合使用
我还添加了一个图像精灵,通过类名左、中、右、上和下定位(这样您就不必编辑css中的所有图像位置),以及javascript,用于根据锚类来解析特定调用
这是单个单元格的HTML示例cell wrap cell1
包含背景图像精灵的元素和位置,表格垂直对齐文本,cell
包含包装到image
div中的受控定位图像
<div class="cell-wrap cell1">
<table class="content">
<tr>
<td>Connection is not correct</td>
</tr>
</table>
<div class="cell hidden">
<div class="image left top">
<a href="#linkA" class="linkA"><img src="http://goo.gl/wNDMe"></a>
</div>
<div class="image right top">
<a href="#linkB" class="linkB"><img src="http://goo.gl/wNDMe"></a>
</div>
<div class="image left bottom">
<a href="#linkC" class="linkC"><img src="http://goo.gl/wNDMe"></a>
</div>
</div>
</div>
它已经过IE7+、FF、Chrome、Safari和Opera测试
Ps:IE6有一个变通方法,您可以在这个示例中使用,包括添加一个特定的hover.htc文件和css行body{behavior:url(hover.htc);}
()来模拟非锚元素上的悬停效果
Ps:小心,试试看,你可以找到它。如果误解了什么,请告诉我。在FF5、最新Chrome、IE8(以及IE7兼容模式)下测试。不使用库,不需要实际成为网格(取决于可以在CSS中设置的宽度),并提供图像索引和单击的按钮。哦,网格应该很容易在PHP中生成(基于数据库),等等
编辑:
文本现在也垂直对齐。
这是一个很好的例子
浮动div的。。。允许自定义“表大小”李>
反应性翻转“abit随机化”;最后
集中内容(参见每个网格中的集中文本)李>
注意:您可以调整所需的各种行数/列数。=) 这可能是display:table(以及相关的显示样式)的工作,特别是因为您的目标浏览器是支持这些样式的较新浏览器。桌子是一种选择吗?比如说,每个tablecell(根据数据库数据生成)都有自己的可以使用的div(可能还有自己的css)。只是一个thought@Gobbledigook,是的,我对桌子很在行。@KM。请看一下我的解决方案,如果有什么不符合您的预期,请告诉我。您不需要表格来完成此操作。谢谢,这看起来很有希望!我把这段代码下载到我的电脑上,然后把它弄得乱七八糟。我将行折叠起来,形成一个2x6网格,鼠标悬停在新行上不起作用。当我尝试用本地图像替换“”时,它仍然保留“50 x 50”。此外,我无法从“50x50”图像中获取onclick=“alert('wow!”);”
工作。使用新的fiddle、额外的行(不明白为什么这不能在本地工作)和onclick更新了我的答案。您所说的“保留50x50”是什么意思?对于新的示例,我仍然认为
<div class="cell-wrap cell1">
<table class="content">
<tr>
<td>Connection is not correct</td>
</tr>
</table>
<div class="cell hidden">
<div class="image left top">
<a href="#linkA" class="linkA"><img src="http://goo.gl/wNDMe"></a>
</div>
<div class="image right top">
<a href="#linkB" class="linkB"><img src="http://goo.gl/wNDMe"></a>
</div>
<div class="image left bottom">
<a href="#linkC" class="linkC"><img src="http://goo.gl/wNDMe"></a>
</div>
</div>
</div>
$(function() {
$(".cell a").click(function(e) {
if ($(this).attr("class").match(/link(.)(\\s[\\b]*)?/)) {
var param = $(this).attr("class").replace(/(.*\s)*link(.).*$/, "$2");
doThings(param);
}
});
});
function doThings(param) {
switch (param) {
case 'A':
//specific 'A' functions
break;
case 'B':
//specific 'B' functions
break;
default:
//default functions
break;
}