【发布时间】:2013-02-21 17:47:01
【问题描述】:
我创建了一个纯 CSS 语音气泡,其中三角形“语音提示”使用“玩零大小 div 的 4 个边框”技巧完成。到目前为止一切顺利。
但我还需要动态调整三角形的位置(相对于包含单词的主要矩形 div)。
图例:
http://www.designwalker.com/img/speech_bubble/speech_bubble10.jpg(忽略色差,第1个和第2个气泡中三角形的位置不同)。
问题在于三角形(及其边框)通常使用主气泡的 :before 和 :after 类来完成。而且似乎在 jQuery(或任何 javascript API)中没有(简单的)方法来操作 :before 和 :after 类的 CSS 属性。
有解决办法吗?
我很确定这是可以做到的,因为当用户将鼠标悬停在右侧的代码行上时,Facebook 似乎可以轻松地将三角形动态定位到它想要的任何位置(取决于屏幕折叠和其他因素)。
我在这里搜索并找到了将类动态添加到 div 的解决方案,但这似乎不切实际,因为会有许多独特的类,每个类都有不同的偏移值。 (从0像素到很多像素)
谢谢!
安德鲁
附注:
顺便说一句,我进一步查看了 Facebook,他们可能正在玩一些背景图片精灵技巧。但是我花了很多时间使用“玩零大小 div 的 4 个边框”技巧来“完善”我的气泡,我真的很犹豫重新调查 Facebook 是如何做到的,更不用说我必须交付网站很快..... :-(
【问题讨论】:
-
你图片中的 4 个位置是你需要的仅有的四个吗?即左中左中右中右?
-
不幸的是,偏移量需要调整到像素。这是为了适应用户滚动窗口。我展示的图片有水平偏移。在我正在构建的网站中,我需要垂直偏移。我意识到如果只有几种可能性,我可能可以使用“插入类”技巧。
-
最后,我回避了这个问题。大多数在线示例使用 :before 和 :after 来实现 CSS 三角形。至少在我的情况下,我发现通过将 :before & :after CSS 内容作为插入到实际的 html 文件中,我想要的三角形工作得很好。这使得 html 文件更加混乱而不是“优雅”,但它回避了 jQuery(或任何 Javascript 库)无法选择和处理 :before 和 :after 伪类的问题。
标签: jquery css pseudo-element