语义CSS3灯箱

WebFX的总裁比尔在互联网营销行业有超过25年的经验,专门从事SEO、UX、信息架构、市场自动化等方面的工作。威廉在希彭斯堡和麻省理工学院的科学计算和教育背景为市场上的CyrdFX和其他关键研发项目提供了基础。在WebFX的ts。

语义CSS灯箱

jQuery的,MooTools的,和JavaScript框架的兴起已经给许多网页设计师对生活有了新的租约,增加更多独特的功能到他们的网站。

在设计中注入的各种酷而有趣的特性中,最值得注意的是谦逊灯箱(模态窗口).

如果你曾经遇到过一个链接或图像,点击后,它的大小会增加,屏幕的其他部分会被“着色”以集中在内容上,你就会知道我在说什么。

本教程旨在展示一种基于lightbox显示内容的方法,lightbox可通过web访问,并且(不包括Internet Explorer)完全不需要脚本。听起来很有趣吗?好吧,让我们进一步探讨这个主题!

集会示威

单击下面的预览图像以查看现场演示.

集会示威

那么脚本呢?

关于为此使用客户端脚本的好处,有很多要说的。虽然我们肯定不是处于剪切粘贴时代,这导致了许多程序员希望看到的那种针对JavaScript的犯罪行为受到惩罚,但直到今天,我们仍然对脚本和框架有着令人不安的依赖,以使我们的网站能够正常运行。

也许它似乎在这种情况下有点虚伪,我批判了使用脚本(如Internet Explorer的用户将需要启用了脚本,以使用此功能),但像所有的东西,我们有时需要妥协我们的代码,以确保兼容性(特别是与那个浏览器)!

为什么不直接使用JavaScript呢?

在当前脚本框架的意义上,我不会说它们本质上是坏的,因为像jQuery这样的工具通常会以良好的成功水平优雅地降级——你们现在可以收起刀子和火把了!

然而,可悲的事实是,由于安全问题,广泛的滥用和客户端脚本的侵入潜力,这是很容易理解为什么大量的人没有(或不能)利用脚本。

因此,需要一个解决方案。希望对于CSS3迷来说,您会发现这个简单易用的代码是一个受欢迎的改进。

此CSS Lightbox的浏览器支持

在我们开始编写代码之前,让我们先简单介绍一下,值得一提的是,我已经在各种浏览器中尝试过该代码,可以肯定地说,它在所有最新版本的Mozilla Firefox、Google Chrome、Apple Safari和Opera中都能正常工作(这都是好消息)。

通过一些不引人注目的脚本来复制CSS3技术,它也可以在IE6、7和8中顺利运行。

另一个好消息是,目前的测试版本IE9支持CSS3,因此在不久的将来,这可能是最好的无JavaScript解决方案。

此CSS Lightbox的浏览器支持当涉及到缺乏标准支持时,Internet Explorer通常是罪魁祸首。

神奇的标记!

为了开始寻找更兼容的lightbox,我们首先需要一些通用的HTML标记。

下面的大部分内容都不会让你感到惊讶,因为它是相当标准的。然而,对于这个例子,为了展示这种酷方法的持久性,我们将生产三个独立的灯箱.

一个是图片,一个是可滚动内容块,最后一个是YouTube视频。你还能要求什么?

首先,让我们创建基础知识,并创建三个片段链接,这些链接将指向正确的lightbox(稍后您将了解如何创建)。

<!DOCTYPE html PUBLIC“-//W3C//DTD XHTML 1.0 Strict//EN”http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>CSS Lightbox

CSS Lightbox

您可以使用这个奇妙的解决方案来创建灯箱,而不仅仅是图像但丰富的,语义所容纳之物录影带以及!

神奇的标记!在这个阶段没有什么进展,一个带有额外链接的简单HTML文档。

到目前为止,事情很简单;您有一个标题和段落,其中包含一些链接,单击这些链接后,当前将不起任何作用。

然而,这一进程的下一个阶段非常重要。

我们需要为每个要显示在其中的lightbox添加容器,并为它们提供适当的值。

为了让您了解三个lightbox中的每一个是如何工作的,您需要检查(并将)代码添加到源代码编辑器中。

为了更好地理解它是如何工作的,让我们单独讨论每一项。

灯箱“id=“image”>
“六个修订版”height=“98”width=“255”src=“logo.jpg/

关闭

您希望提供的每个灯箱都需要一个div元素容器,该容器包含身份证件您也希望链接的属性。那个身份证件将引用您需要附加到href锚定开始导航过程,不要忘记您还需要灯箱您所包含的每个类的类值。

到目前为止你和我在一起吗?很好!

一旦有了引用lightbox的容器,就需要同时包含div(这将保持夹内容并且将具有宽度和高度通过类值在上述声明等)以及有锚充当“着色器”的一个段落。

使用上面的源代码,您会发现自己拥有一个包含图像的工作灯箱。

考虑到可用的视口空间,您确实可以链接到任何大小的图像。

关于“着色器”的更多信息

为了更好地理解它是如何获得视觉外观的,第二个div层从该过滤器在背景中的靠近锚独立工作。它本质上是在工作中级联/平铺效果。

第一个lightbox出现了,它包含一个图像。第一个lightbox出现了,它包含一个图像。

如果您查看任何现代lightbox,您将看到的最常见特征是,您有一个半透明层,覆盖页面的其余部分,将焦点绘制到lightbox内容。单击该层后,它将返回页面。这就是为什么每个lightbox都需要一个闭合锚定的原因。

href值应该是什么?

最棒的是,你甚至可以链接href如果您希望它执行关闭以外的操作(使用无效的片段链接)。

div可以包含什么?

至于里面是什么div,这完全取决于您。您可以使用任何块或内联元素(lightbox将容纳任何HTML元素)。

在第一个例子中,我们有一个图像;让我们在代码中添加一些内容:

您的内容放在这里

我们的同僚们都是精英。猫咪的生活方式告诉我们,它的生活方式是多样的。安特努克的库拉比图尔,维塔维内纳提斯酒后驾车。在同侧被覆体中的同侧相位。我爱你,我爱你。塞德·多洛尔·利古拉(Sed dolor ligula),生命元素tincidunt vitae elementum vitae,pharetra vitae eros。这是一种简单的调味品,是一种生活调味品。CRA eu sem erat,eget ultrices enim。convallis的feugiat fringilla massa Suspendisse。这是一个很好的例子,它是一个很好的例子。Quisque posuere、laoreet hendrerit中的侵权人、同一性、同一性、同一性和同一性。不要坐在我的座位上。前发酵剂不含欧式舌苔。在自然社会中,因怀孕而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯。在ac马萨码头。悬钩子,调味品,调味品,放在洛雷姆。坐在埃米特精英酒店的大调味品室里。

坐在维韦拉贵宾室里,坐在埃米特精英酒店的房间里,代替欧盟葡萄品种。这是一个令人信服的拍卖人。semper sem fringilla中的Duis mattis risus ac tortor luctus。青藤前庭。Nam scelerisque孕妇felis quis egestas。这是一种新的交通工具。侵权人的权利,威尼斯人的权利,不可侵犯的权利。但这是一种爱,一种爱,一种爱。非nisi vitae ligula Phasellus eleifend sed neque。莫比孕妇贵宾turpis eu拍卖人。Morbi pellentesque urna vitae nunc dictum elementum。阿利奎姆·埃拉特·帕特。这是一个很好的例子。杜松子发酵液。整型贵宾双人turpis。莫比·梅特斯·利博、苏西比特·布兰迪·迪格尼西·阿利奎姆、索达莱斯·诺米。在奥古斯·奥迪奥的雕像中,坐着一位孕妇莫里斯。

在一位尊贵的奥基人的雕像中。Nam nec urna nisi,在温和的传说中。黄鳍金枪鱼。努克·莱克托斯·奥奇、特里斯蒂克和阿利奎特·塞德、威尼斯人和猫科动物。在法雷特拉岛上的索达莱斯奥奇河(Nullam sodales orci)被称为“地狱之王”(aliquam risus scelerisque)。瓦里乌斯河、萨吉提斯河、莫利斯河、坦普尔河、佩伦特斯河、直径。这是我的选择,是我的座右铭,是我的智慧。妊娠期葡萄品种库拉比图。奎斯克·奥古斯·塞姆,维尼那提斯的商品化分子,车辆的命运。权杖、马来苏达之龟、三色舌苔、猫咪调味品。怀孕期间万岁。Fusce在purus eu orci Laoret lobortis。阿利奎姆·库苏斯·米(Aliquam cursus mi)在泰勒斯·弗林斯(tellus fringilla)名言中。Sed nec自由多洛。mi malesuada tincidunt的整数nec neque。

关闭X

对于所有了解假人价值的人,添加了一些Lipsum内容。对于所有了解假人价值的人,添加了一些Lipsum内容。

添加YouTube视频

为了进一步完善这一点,我们将添加一段YouTube视频:

  <对象类型= “应​​用程序/ x-冲击波闪光” 宽度= “640” HEIGHT = “385” 数据=“HTTP://www.youtube.com/v/bsGEWHNJ3s8">    关闭<跨度> X    

视频点播,在灯箱里也可以!很酷,不是吗?视频点播,在灯箱里也可以!很酷吧?

在这个阶段,我们已经完成了本演示将使用的整个HTML文件。

如果您想在web浏览器中预览结果,您会注意到,除了标题和段落之外,页面上还有三条信息(图像、内容块和视频),每一条信息的下方都有一个“关闭”链接。

正确:目标

在这个阶段,您可能想知道如何确保在需要时只显示正确的内容。这是一个好问题!我们将使用一个名为:目标(哪些样式基于锚定)。

也许你遇到了麻烦:目标基本上,它允许您在元素的身份证件匹配片段标识符,该标识符是哈希(#)符号,后跟通常在页面书签中找到的文本。例如:index.html#内容(您将在地址栏中看到它)。

所以,没有任何废话少说,现在是时候我们开始格式化我们的收藏夹进行每当这个梦幻般的选择被激活所需的任务。

现在您知道了为什么我们在第一段代码中给出了三个链接,即那些唯一的URL(并分别给出了每个URL)div相配的身份证件).

片段链接最好由URL末尾的#(散列)字符表示。片段链接最好由URL末尾的#(散列)字符表示。

对于下面的代码,我将使用风格元素中的元素该文件的附件。

一般来说,这是被认为是坏习惯因为所有CSS样式都应该与结构分离。但是,由于这只是一个示例,而且工作起来不引人注目,因此您可以轻松地将所有样式代码放在外部文件中。为了简单起见,我将保持一致。

首先,我们将添加一些简单易懂的代码片段,例如删除文档中的填充和边距。此外,我们将在屏幕外隐藏灯箱,直到需要使用一些绝对位置和负边距。

html,正文{高度:100%;溢出:隐藏;宽度:100%;边距:0;填充:0;}正文{溢出-y:auto;}。lightbox{left:-999em;位置:绝对;}

注:您完全可以在三个灯箱未使用属性时隐藏它们显示:无. 然而,由于这可能会影响一些屏幕阅读软件如何与您的页面交互,因此我使用了反向定位来获得相同的效果。

随着灯箱偏移,东西消失。随着灯箱偏移,东西消失。

在这个阶段刷新浏览器时,您会注意到之前可见的三个灯箱将被隐藏,这非常好。

但是,当你点击链接时,什么也没发生!别担心,你的灯箱没有坏。

我们所需要做的就是添加代码来激活这两个层(“关闭此”灯箱锚定,它提供淡入效果和灯箱内容本身)。

.lightbox:target{background:rgba(0,0,0,0.75);bottom:0;left:0;right:0;top:0;position:absolute;z-index:1;}。lightbox:target.关闭{背景:rgba(0,0,0,0,0,0,0.75);bottom:0;left:0;right:0;top:0;position:absolute;z-index:1;}。关闭{文本缩进:-999em;}

为了简单起见,上面的代码将使用绝对定位将lightbox扩展到浏览器视口的每个角落。

第二行代码将在锚点上加强此代码,并为其提供一个z指数(优先于页面上的其他内容)和背景,在本机支持CSS3 alpha透明的浏览器中使用不透明性。

第三行将使用跨度元素,以使人们知道单击锚定将关闭灯箱。

最后一行将隐藏褪色部分中的文本(以获得完全效果)。

注:值得指出的是,如果您的内容滚动,并且希望lightbox跟随滚动动作,则可以替换位置:绝对位置具有位置:固定,但IE6将不支持它。例如,为了简单起见,我使用了绝对定位,并展示了它的潜在用途。

现在,当你点击一个lightbox链接时,透明度效果会变得更加明显。现在,当你点击一个lightbox链接时,透明度效果会变得更加明显。

如果您刷新浏览器与上面的代码,你会在点击你得到的是惊人的褪色效果,这将跨越整个内容的任何元素通知。你也应该有一个整洁的小“X”在右上角的按钮即可帮助加强在点击收藏夹外的效果。

现在的问题是,我们需要让灯箱内容本身正确定位,并在屏幕上看起来很棒。

因此,在下面,您将找到CSS的最后几位,以便根据指定内容的宽度对齐内容并偏移内容。

.lightbox:目标的div {背景:#FFFFFF;位置:绝对的;左:50%;顶部:50%;的z-index:99;} {.w60p余量左:-30%;宽度:60%;} {.w300余量左:-150px;宽度:300像素;} {.w640余量左:-320px; width: 640px; } .h60 { height: 60px; margin-top: -30px; } .h400 { height: 400px; margin-top: -200px; } .h386 { height: 386px; margin-top: -193px; } .scroll { overflow-y: scroll; padding: 0 1em; }

如果你回头的HTML代码,你会看到每个收藏容器具有类值,如w300(宽度为300px)或H400(高度400px)或w60p(宽度为60%)。

通过测量所需内容物的宽度和高度,然后设置容器宽度和高度以匹配尺寸,即可简单计算每个灯箱的值。

以我们使用的图像为例:由于该图像具有特定的宽度和高度需求,因此将特定的宽度和高度应用于灯箱容器,并为每个容器提供该值一半的负边距,以使其精确居中。

注:您可能已经注意到,一个纸卷还添加了类以匹配每个灯箱的宽度和高度类。

简单地说,如果你在容器中有很多内容,并且你给它一个固定的宽度和高度,滚动机制将允许它溢出并附加滚动条。真可爱!

添加下一组代码将正确对齐Lightbox内容。添加下一组代码将正确对齐Lightbox内容。

现在再次尝试刷新页面-瞧就像魔术一样,只要你点击其中一个链接,它的内容就会加载到屏幕中央的一个容器中。

奇妙的是,它的外观和功能与其他灯箱一样。点击灯箱内部将正常运行,但点击灯箱外部将恢复主屏幕(从而隐藏灯箱内容,因为它们不是片段)。

如果你使用Firefox、Chrome、Safari或Opera,这段代码将完美地工作,是实现lightbox的100%纯CSS方式。

但对于Internet Explorer,我们(像往常一样)要处理兼容性问题!

提示:试想一下,你可以用这些目标灯箱做什么:你可以从上面显示的内容什么,一直到容器的宽度和高度设置为100%,并有文字不同的“页上的”溢出出现在一个单一的启用页面的网页设计。WOOT!

兼容性危机

下面的JavaScript代码并不涉及太多细节,而是针对Internet Explorer对:目标(这很可能是解决这一问题的第一个有效和简单的办法)。

与样式一样,我使用