使用 iframe 将 CSS 媒体查询应用于块元素

2024-01-09

我当时正在做一些网页设计,心想“嘿,如果我们可以将 CSS 媒体查询应用于块元素(即div, section, ETC。)?”

说真的,如果我们能够拥有此功能,我们可以制作一些非常令人惊叹的流体布局。在这篇文章中,我将使用一个简单的社交插件,我可以将其实现到我的任何页面的侧边栏中,该侧边栏可以根据其父 div 大小进行流动。这很方便,所以我可以调整我的小部件的大小,无论它是实现为 500px 列还是 300px 列,这样我就不必为它实现的每个布局编写特定的样式表。

该设计

            >=500px                          <500px
 _______________________________       ____________________
|                               |     |                    |
 ____________________    ______               ______
|                    |  |      |             |      |
|  LIKE ON FACEBOOK  |  | ICON |             | ICON |
|____________________|  |______|             |______|
 ____________________    ______        ____________________  
|                    |  |      |      |                    |
|  FOLLOW ON TWITTER |  | ICON |      |  LIKE ON FACEBOOK  |
|____________________|  |______|      |____________________|

                                              ______
                                             |      |
                                             | ICON |
                                             |______|
                                       ____________________  
                                      |                    |
                                      |  FOLLOW ON TWITTER |
                                      |____________________|

HTML 标记

<div class="widget clearfix">
  <div class="social">
    <div class="social-right">ICON</div>
    <div class="social-left">Like on Facebook</div>
  </div>
  <div class="social">
    <div class="social-right">ICON</div>
    <div class="social-left">Follow on Twitter</div>
  </div>
</div>

The CSS

现在是 css 元素媒体查询部分。这不是有效的 CSS,但却是我想要实现的目标。本质上只是一个基于父元素而不是整个浏览器宽度的 CSS 媒体查询:

.widget {clear:both;}
[class*=social-] {text-align:center;}
.widget(min-width:500px) {
  .social-left {overflow:hidden;}
  .social-right {float:right;}
}

这将带来无限的好处,并使创建在多个页面上实现的页面块变得轻而易举。既然我已经让大家了解了这个问题,那么我的问题是:

通过 iframe 实现这一点是一个可行的解决方案吗?

我所说的合理是指:

  • 语义上正确
  • 不利于SEO

iframe 能够拥有自己的样式表,并且 css 媒体查询基于 iframe 尺寸,而不是浏览器尺寸。

我的想法

语义学

  • 由于 iframe 元素存在于 HTML5 中,甚至还添加了属性,因此我认为 iframe 标签不会很快被弃用。
  • 无缝标签确实有助于使其成为一个可行的解决方案,因为样式将从父文档继承。现在我们需要将这些样式重新包含(或注入)到页面中。
  • iframe 也可以在不触发整个页面重新加载的情况下重新加载,这意味着如果没有 XHR,自动更新小部件将非常容易。

SEO

  • 我很确定 Google 并不讨厌使用 iframe 的人,但我可能是错的。
  • 由于实际的页面信息不会在 iframe 中,而只会在这些打包的块中,因此我认为它们不会对 SEO 造成损害,因为其中的内容不是实际页面内容的一部分。
  • 由于侧边栏对整个页面内容没有影响,因此可以在运行时动态创建 iframe。这可能是实现它的最佳方式,但我想听听您的想法。

缺点

  • 每当将新布局应用于页面时,都需要 JavaScript 来根据页面内容调整父 iframe 的大小。

在回答之前,请注意,除了某些第三方应用程序使用 iframe 的用途之外,我从未提倡将 iframe 用于任何其他用途,但现在看看这个,我看不出有什么理由不使用它们。我知道使用 css 元素媒体查询会是完美的,但我认为它不会很快实现。

我希望听到大家的更多意见,因为我绝不是 SEO 专家,也不经常(实际上,我从不)使用 iframe。


当谈到搜索引擎优化时,内容为王.

当搜索引擎抓取您的网站时,会注明 iFrame(及其来源),但它们很可能不会随页面一起抓取。如果您有绝对重要的内容,请将其归因于该特定页面,请将其排除在 iFrame 之外。

iFrame 的内容仍将被抓取,但其内容不会与抓取工具在页面上找到的信息混在一起;它将成为它自己的实体。它还将该内容归因于提供该内容的站点或页面。

另外,不要让 HTML5 中引入的无缝属性欺骗了您。它不会改变 iFrame 的工作方式,只是改变其呈现方式。

归结起来就是数据有多重要?如果您只是想出于风格目的使用 iFrame 来呈现社交媒体链接,正如您在示例中概述的那样,那么您应该能够摆脱使用 iFrame 的困扰,而不会产生负面影响。

但是,如果您出于风格目的使用 iFrame 并且有重要的内容是needs为了归因于您所在的页面,我会找到另一种方式来呈现内容。

因此,在您的示例中,如果专门针对社交媒体链接使用 iFrame,我认为使用 iFrame 来获得媒体查询的好处是可以接受的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 iframe 将 CSS 媒体查询应用于块元素 的相关文章

  • 迭代相同的表单元素

    如果一个表单重复具有相同的标签 如何在 JavaScript 中获取它的值
  • 如何让CSS选择以字符串开头的ID(不是Javascript)?

    如果 HTML 中有这样的元素 id product42 id product43 如何匹配所有以 product 开头的 id 我已经看到了完全使用 javascript 执行此操作的答案 但是如何仅使用 CSS 执行此操作 id pro
  • chrome 中选择选项元素的额外填充

    我有一个选择元素 用户可以在其中选择分类和描述 仅在 Chrome 浏览器中 我有一个额外的填充 无法使用 padding 0 或其他 css 标签删除它 Chrome 的屏幕 https i stack imgur com m3iIb p
  • 使用base64编码图像的优点和缺点[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在考虑为我正在开发的网站使用 Base64 编码图像来优化加载时间 不管怎样 在开始之前 我想知道 这样做的优点和缺点是什么 目前 我没有看
  • 无法在jspdf中加载多个图像

    我正在尝试加载动态生成的多个图像 我想将这些图像转换为 PDF 格式 HTML 代码如下
  • 重新创建 CSS3 过渡三次贝塞尔曲线

    在 CSS3 过渡中 您可以将计时函数指定为 cubic bezier 0 25 0 3 0 8 1 0 在该字符串中 您仅指定曲线上点 P1 和 P2 的 XY 因为 P0 和 P3 始终分别为 0 0 0 0 和 1 0 1 0 根据苹
  • 使用内联样式有哪些风险?

    A 内容安全政策 https developer mozilla org en US docs Web HTTP CSP with a default src or style src指令将阻止内联样式应用于
  • 未捕获的 TypeMismatchError:无法在“CanvasRenderingContext2D”上执行“drawImage”

    我对以下代码片段有疑问 var o inserted motive find span contains document documentElement o 0 b fillText m i h b drawImage d i h e f
  • Gmail 无法在电子邮件上正确呈现字体

    我已经建立了一个 html 电子邮件并使用了 Google 字体 我已使用以下方法将字体包含在 head 标签中 if mso endif 并使用字体 即我这样做了
  • 闪亮的应用程序包:css 和所有 www/ 目录内容

    我正在尝试将 Shiny 应用程序转换为 R 包 但我在处理有关 www 目录以及 松散 文件的所有问题时遇到了问题 我闪亮的应用程序运行得很好 但是当我尝试 打包它 时 它不起作用 我闪亮的应用程序目录 my shiny app R ut
  • 如何在没有 JavaScript 的情况下预加载图像?

    在我的 HTML 页面之一上 当我将鼠标悬停在某些链接上时 会显示一些大图像 并且加载这些图像需要一些时间 我不想使用 JavaScript 来预加载图像 有什么好的解决办法吗 HTML5 有一种新方法可以做到这一点 即link prefe
  • 如何去掉单词末尾多余的连字符

    我有句话我已经放了 shy 里面 它可以使用连字符 直到我达到足够小的屏幕尺寸 然后它在末尾添加一个额外的连字符 编辑 无法在 jsfiddle 中重现它 因为它似乎对 html 的解释不同 不过我可以展示问题的图片 h3 Flu shy
  • 将 JSON 发布到 Python CGI

    我已经安装了 Apache2 并且 Python 可以工作 但我有一个问题 我有两页 一个是 Python 页面 另一个是带有 JQuery 的 Html 页面 有人可以告诉我如何让我的 ajax 帖子正常工作吗
  • 宽度:适合内容;在 Chrome 上工作,但在资源管理器上不工作

    我构建了一个应用程序 所有内容都在 Chrome 中完美显示 但如果我在 Windows 资源管理器中打开该应用程序 容器会比应有的小 我在用着width fit content 这是只适用于 Chrome 的东西吗 我怎样才能使其适用于所
  • GWT 主题/模板 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 GWT 开发一个应用程序 尽管 GWT 是基于 JAVA 的媒介 但外观和感觉只能通过 CS
  • 使 Material UI Grid 项目的子项拉伸以适合父容器的剩余高度

    1 现状 我有一个包含 4 个网格项的 Material UI 网格容器 每个 Grid 项中都有一个 Typography 组件 其中包含标题和包含一些内容的 Card 如下所示 2 期望的外观 我希望卡片填充网格项目的剩余高度并且不超过
  • 如何防止弹性项目高度因其内容而溢出[重复]

    这个问题在这里已经有答案了 我刚刚开始学习 Flex 到目前为止我印象深刻 但是 我对包含页眉 页脚和三列的全页应用程序遇到了问题 第一列包含一个项目列表 由于我无法为其父级设置固定高度 因此每次列表增长时 它都会将页脚向下推 这是一个带有
  • Outlook 2013 渲染问题:嵌套表格截断相邻文本

    在开发 html 电子邮件通讯时 我经常使用类似于以下的结构 table width 244 border 0 cellpadding 0 cellspacing 0 tr td table border 0 align left tbod
  • 不使用控件时,视频元素在 Chrome 中消失

    So I think这是一个浏览器错误 它出现在一个更复杂的设计 网站中 但我已经进行了很好的尝试 简化了我的代码和设计等 并发现了以下内容 嵌入时
  • 在webview android中加载本地html文件

    我正在尝试在 android 的 webview 中加载 html 文件的内容 但是 它给了我 网页不可用错误 如果我尝试使用谷歌或雅虎等网站 它们就会起作用 html文件位于src gt main gt assests gt index

随机推荐