如果在iframe中,则以不同方式显示页面(css)

Tho*_*ggi 18 html javascript css iframe jquery

有没有办法,正如标题所说"在iframe中以不同方式显示页面(css)".我正在寻找一个jQuery/JavaScript方法,如果该网站在iframe中,可能会使用不同的css样式表.有任何想法吗?

Ode*_*ded 35

如果窗口不是顶部窗口,则可以注入不同的样式表.

if (window.top!=window.self)
{
  // In a Frame or IFrame
}
else
{
  // Not in a frame
} 
Run Code Online (Sandbox Code Playgroud)

  • 是否有纯粹的 CSS 方法来完成此操作,或者是否需要通过 JavaScript 检查“window.top”? (3认同)

Hen*_*k N 16

我会建议添加一个CSS类,而不是注入一个新的样式表body.

jQuery示例:

$(function() {
  if (window.self != window.top) {
    $(document.body).addClass("in-iframe");
  }
});
Run Code Online (Sandbox Code Playgroud)

现在你可以用不同的方式设计样式

.in-iframe p {
  background: purple;
}
Run Code Online (Sandbox Code Playgroud)


Jer*_*ook 5

这是一种使用vanilla JS的快速且设计友好的方法.只需一行JS,外观可以通过CSS/SASS/LESS进行控制.

head加载任何CSS或JS之前将其放在元素中:

// Sets the class of the HTML element using vanilla JavaScript
document.documentElement.className += (window.self == window.top ? " top" : " framed");
Run Code Online (Sandbox Code Playgroud)

然后在CSS/SASS/LESS中,您可以根据应用的类隐藏,显示和调整.

/* Hide site navigation when in an iframe */
html.framed .site-nav,
html.framed .site-footer {
    display: none;
}
Run Code Online (Sandbox Code Playgroud)

PSA:考虑利用X-Frame-Options来保持你的辛勤工作不被劫持.