当屏幕尺寸小于特定尺寸时隐藏 div 元素

Posted

技术标签:

【中文标题】当屏幕尺寸小于特定尺寸时隐藏 div 元素【英文标题】:Hide div element when screen size is smaller than a specific size 【发布时间】:2012-11-08 16:49:30 【问题描述】:

当浏览器的宽度小于或等于 1026px 时,我想隐藏一个 div 元素。这可以用css做吗:@media only screen and (min-width: 1140px) 如果用css做不到,有没有其他选择?

额外信息: 当 div 元素被隐藏时,我不想要一个空白的空白。如果我从代码中完全删除了 div 元素,我希望页面能够正常流动。

我隐藏的 div 是 <div id="fadeshow1"></div>

html5 文档类型。

我使用 javascript 将画廊放入该 div。 我希望它在大于 1026px 宽度时看起来像这样:

我希望它在宽度小于 1026 像素时看起来像这样:

【问题讨论】:

这个问题还有效吗? @VitorinoFernandes:我的答案仍在获得投票,所以,是的。 【参考方案1】:

你可以用 CSS 做到这一点:

@media only screen and (max-width: 1026px) 
    #fadeshow1 
        display: none;
    

我们使用max-width,因为当屏幕小于 小于 1026 像素时,我们希望对 CSS 进行例外处理。 min-width 将使 CSS 规则适用于所有宽度为 1026 像素且更大的屏幕。

要记住的是,@media 查询在 IE8 及更低版本上不受支持。

【讨论】:

这很有魅力!!!如果你有课,那么按照 CSS 规则使用 . 而不是 #,如下所示。 @media only screen and (max-width: 1026px) .fadeshow1 display: none; 【参考方案2】:
@media only screen and (max-width: 1026px)  
  #fadeshow1  
    display: none; 
   

只要屏幕宽度小于 1026 像素, 内的任何内容都将适用。

Some browsers don't support media queries.你可以使用像Respond.JS这样的javascript库来解决这个问题

【讨论】:

【参考方案3】:

如果您使用的是引导程序,您可以根据您的需要使用 hidden-sm(lg 或 md 或 xs)。然后您可以进入 css 文件并指定您希望它显示的百分比。在下面的示例中,它将隐藏在大屏幕、中屏幕和超小屏幕上,但在小屏幕上会占据一半的屏幕。

<div class="col-sm-12 hidden-lg hidden-md hidden-xs">what ever you want</div>

【讨论】:

Bootstrap by defualt 有这个 css 文件,其中包含所有@media 屏幕尺寸,适用于超小型、小型、中型和大型设置,您需要做的就是根据您的需要调整它们。即使您不使用引导程序,您也可以复制并粘贴到您的 css 文件中。 文件链接-> [链接](drive.google.com/file/d/0B5X-yh_L2HHNZ2gyejdXTWRCc28/…)【参考方案4】:

我不了解 CSS,但这段 Javascript 代码应该可以工作:

    function getBrowserSize()
       var w, h;

         if(typeof window.innerWidth != 'undefined')
         
          w = window.innerWidth; //other browsers
          h = window.innerHeight;
          
         else if(typeof document.documentElement != 'undefined' && typeof      document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) 
         
          w =  document.documentElement.clientWidth; //IE
          h = document.documentElement.clientHeight;
         
         else
          w = document.body.clientWidth; //IE
          h = document.body.clientHeight;
         
       return 'width':w, 'height': h;


if(parseInt(getBrowserSize().width) < 1026)
 document.getElementById("fadeshow1").style.display = "none";

【讨论】:

在 css 中使用 @media 更容易。 Javascript 使这项任务更加复杂。 我是 Web 应用程序的新手,如果我错了,请纠正我,但使用 ==! 而不是 =! 不是更好吗?【参考方案5】:

您只需在 CSS 中使用媒体查询即可完成此操作。

@media (max-width: 1026px) 
    #fadeshow1  display: none; 

很遗憾有些浏览器不支持@media(看你IE8及以下)。在这些情况下,您有几个选择,但最常见的是 Respond.js,它是一个用于最小/最大宽度 CSS3 媒体查询的轻量级 polyfill。

<!--[if lt IE 9]>
    <script src="respond.min.js"></script>
<![endif]-->

这将使您的响应式设计能够在旧版本的 IE 中运行。 *reference

【讨论】:

【参考方案6】:

你必须使用 max-width 而不是 min-width。

<style>
    @media (max-width: 1026px) 
        #test 
            display: none;
        
    
</style>
<div id="test">
    <h1>Test</h1>
</div>

【讨论】:

【参考方案7】:

这应该会有所帮助:

if(screen.width<1026)//get the screen width
   //get element form document
   elem.style.display == 'none'//toggle visibility

768 像素也应该足够了

【讨论】:

Visibility:hidden 使 div 不可见,但不会消除它在页面上占据的区域,因此 OP 在他的站点中间会有一个大的空白块。 Display: none更好【参考方案8】:
@media only screen and (min-width: 1140px)

应该做他的工作,向我们展示你的 css 文件

【讨论】:

【参考方案9】:

我知道的最简单的方法是使用 onresize() func:

   window.onresize = function(event) 
        ...
    

Here is a fiddle for it

【讨论】:

以上是关于当屏幕尺寸小于特定尺寸时隐藏 div 元素的主要内容,如果未能解决你的问题,请参考以下文章

为啥@media 查询不改变特定屏幕尺寸上的元素?

使 HTML 元素大于其兄弟元素,受最大/屏幕尺寸限制

用于检测屏幕尺寸的 Angular 指令

在所有屏幕分辨率下,对包含网格的div应用水平滚动。

div设置全屏(铺满屏幕)

删除某些屏幕尺寸的元素