【问题标题】:How to Load Different Home Page according to screen size如何根据屏幕大小加载不同的主页
【发布时间】:2017-06-13 10:30:03
【问题描述】:

我想根据屏幕大小加载不同的主页。有人可以帮忙吗?

例如, 对于屏幕尺寸 960 像素,我想将默认登录页面显示为 index2.html

提前致谢。

【问题讨论】:

  • 按照建议,我将使用基于媒体查询的脚本来执行此操作。如果您计划进行许多查询或根据查询更改资产,我推荐 Modernizr 作为轻量级解决方案。也就是说,虽然我不知道您要解决什么问题,但我相信解决方法违背了响应式 Web 的原则。当用户从一个媒体查询到另一个媒体查询并返回时会发生什么?您如何处理页面重定向?考虑使用可以随着受众变化的媒介而重新调整用途的块。希望这会有所帮助!

标签: html css httpwebresponse adaptive-design


【解决方案1】:

您已标记此问题responsive-design,但您正在询问如何进行“自适应设计”。响应式设计将拥有一个 HTML 页面,该页面可以根据正在查看的媒体进行调整,例如通过使用媒体查询。我不会讨论哪个更好,但如果你对响应式设计感兴趣,我会添加这个,以便你对谷歌有一些想法。

按照您的要求,一种方法是在您的页面上使用一些 JavaScript 来检查窗口的宽度并在必要时进行重定向:

// In index2.html
if (window.innerWidth < 960) {
    window.location = "index1.html";
}

// In index1.html
if (window.innerWidth >= 960) {
    window.location = "index2.html";
}

【讨论】:

  • 谢谢先生。它似乎工作。唯一的问题是当我调整浏览器大小时,我必须重新加载页面 (Ctrl + F5) 。我尝试了 window.resize() 函数。但它没有用。
  • 看看developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/… - 有一个window.onresize事件可以定义。
  • 不过,您可能需要考虑,如果您的网站在每次调整屏幕尺寸时都重新加载,对用户来说可能会有多烦人。
  • 这不是一个好方法。您应该改用响应式设计,因为它会在您以后维护移动和桌面网站时省去很多麻烦。
  • 到目前为止,响应式设计一直是一个令人头疼的问题。我喜欢“给我展示这些移动页面”、“给我展示不同的桌面页面”的想法。特别是对于广告,当移动用户没有台式电脑时,向他们展示桌面软件的广告会激怒他们。
【解决方案2】:

我尝试了上述解决方案。它有效,但页面不断重新加载。通过这种方法解决了重新加载问题,并且我添加了一个可以在视口大小变化时自动重新加载页面的功能。

// refreshing page automatically when viewport size change  
window.onresize = function(event) {
  document.location.reload(true);
}

var href = window.location.href.split("/")
var html_location = href[href.length-1]

if (window.innerWidth >= 960 && html_location !== "index.html") {
    window.location = "index.html";
}

if (window.innerWidth < 960 && html_location !== "index2.html") {
    window.location = "index2.html";
}

【讨论】:

    【解决方案3】:

    我知道这是不久前被问及回答的,但我认为我添加的解决方案比接受的答案更好,因为它不涉及重新加载并且适用于调整大小。定义两个 CSS 类,.HideOnMobile 和 .ShowOnMobile,并在两个顶级 DIV 元素中使用它们。

    然后使用媒体查询将这两个类的显示值设置为non或initial,根据屏幕宽度显示或隐藏每个DIV。

    @media (max-width: 575.98px) {
      .HideOnMobile {
        display: none;
      }
      .ShowOnMobile {
        display: initial;
      }
    }
    
    @media (min-width: 576px) {
      .HideOnMobile {
        display: initial;
      }
      .ShowOnMobile {
        display: none;
      }
    }
    <div class="ShowOnMobile">
      MOBILE content
    </div>
    <div class="HideOnMobile">
      DESKTOP content
    </div>

    【讨论】:

    • 我想你错过了这部分:对于屏幕尺寸 960 像素,我想将默认着陆页显示为 index2 .html
    • 好吧,首先显然相应地更改我的解决方案中的最大宽度和最小宽度值。是的,我的解决方案不允许或需要 2 个不同的 index.html 文件,但它确实根据屏幕宽度显示完全不同的内容,无需重新加载,我认为这要好得多。它也适用于调整大小!
    • @WendiT 正如我在前言中所说的我建议一种不同的方法一样,我认为反对票没有帮助。
    猜你喜欢
    • 2013-10-26
    • 2014-02-21
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多