【问题标题】:render html div content based on screensize根据屏幕大小呈现 html div 内容
【发布时间】:2021-08-13 12:01:17
【问题描述】:

我有一个有视频背景的网站。但是,它不会在 ios 设备上显示。(不确定它是否会在 Android 上显示。)现在我想像这样更改加载方法:

如果设备不是媒体(宽度 >700),则渲染 (div part=video.html) 否则网站仅渲染 novideo.html(背景图像)。

这个 div 位于索引页面的中间部分。

这是video example

顺便说一句,这只是一个简单的网站,没有建立在任何框架之上。我也更喜欢使用 javascript 而不是 jquery。我该怎么做?谢谢!

【问题讨论】:

  • 您好,欢迎您关注CSS media queries
  • 感谢@Greedo 我查看了 css 和基于 css 的类似答案,css 来自其他开发人员。但是在 html 部分我该怎么做呢?
  • 好的,我在你分享的页面上看到了一些javacript代码,我现在就试试。谢谢
  • 那么我真的认为你应该联系其他开发人员,因为 HTML 和 CSS 确实相关。另一个解决方案是使用 javascript 来操作 CSS,但这会导致代码非常脏跨度>

标签: javascript html


【解决方案1】:

您好,参考这篇文章https://www.w3schools.com/howto/howto_js_media_queries.asp#:~:text=Using%20Media%20Queries%20With%20JavaScript,tablets%2C%20phones%2C%20etc)。

HTML:您可以在包含的 div 中包含视频和图像。像这样:

<div class = "media">
    <img id = "image"/>
    <video id = "video"></video> 
</div> 

JavaScript:

function myFunction(x) {
  if (x.matches) { // If media query matches
    document.getElementById("image").style.display = "block";
    document.getElementById("video").style.display = "none";
  } else {
    document.getElementById("video").style.display = "block";
    document.getElementById("image").style.display = "none";
  }
}

var x = window.matchMedia("(max-width: 700px)")
myFunction(x) // Call listener function at run time
x.addListener(myFunction) // Attach listener function on state changes

【讨论】:

  • 谢谢@Nguyen,我现在试试。问题是我有一个背景图像的 div 以及该背景图像顶部的 div 徽标。所以实际上是两个 html 组件。但是让我试试看,谢谢:)。视频部分虽然只有一个 div
  • 没关系。只需引用您要显示的元素的所有类/ID
  • 是否可以有两个不同的html组件?如果是媒体,那么 nonvideo.html 其他视频 html?喜欢各种部分html?
  • 我猜你在问没有包含元素是否可以。只要您可以使用其类或 id 引用要显示/隐藏的元素,javascript 就可以为您更改显示。
猜你喜欢
  • 2021-12-31
  • 2017-08-20
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 2016-02-10
  • 2022-08-14
  • 1970-01-01
相关资源
最近更新 更多