根据屏幕大小切换 CSS 类

Posted

技术标签:

【中文标题】根据屏幕大小切换 CSS 类【英文标题】:Switching CSS classes based on screen size 【发布时间】:2013-08-30 21:13:09 【问题描述】:

CSS newby here...

我正在研究一个响应式框架并想象我将如何完成不同的任务。

根据屏幕的大小,它们在body标签中添加了类,例如:

.PhoneVisible、.DesktopVisible 等...

他们也有类来制作按钮的链接:

.btn、小按钮、中按钮、大按钮

我对您将如何更改 CSS 感到困惑。 IE。类似:

    <a href="#" class="MyButtonOptions">XXXX</>

    .PhoneVisible .MyButtonOptions  btn small-button 
    .TabletVisible  .MyButtonOptions  btn  med-button 
    .DesktopVisible .MyButtonOptions  btn large-button 

您必须单独设置不同的选项吗?

.PhoneVisible .MyButtonOptions height:30px; ?

感谢所有建议!

【问题讨论】:

有 css 框架,这是 CSS 和 javascript 的混合来完成它,我使用 Twitter Bootstrap,但还有更多。谷歌一下就行了。 为什么不直接使用媒体查询? 看看这个问题:***.com/questions/13015719/… 赞成承认你是贵族 【参考方案1】:

就像 Nej Kutcharian 发布的那样,您可以使用上述方法并将其与课堂场景相关联。您无需切换类,而是使用相同的类并根据屏幕大小更改其应用的样式。

如下所示,任何具有“adjust-me-based-on-size”类的元素都会有一个margin-left和margin-right,其值取决于媒体大小,因此默认值为15%,但如果屏幕在 800 到 1200 (px) 之间,它将有 10%,而不是 800px 将没有右边距,左边距为 5%。

.adjust-me-based-on-size
  margin-left: 15%;
  margin-right: 15%;

@media only screen and (min-width: 800) and (max-width: 1200) 
  .adjust-me-based-on-size 

    margin-left: 10%;
    margin-right: 10%;
  

@media only screen and (max-width: 800px) 
  .adjust-me-based-on-size 
    margin-left: 5%;
    margin-right: 0%;
  

【讨论】:

【参考方案2】:

CSS 媒体查询绝对是必经之路。

您可以根据浏览器大小、像素密度等轻松分离 CSS。

这是来自CSS-Tricks 的示例列表。

/* Smartphones (portrait and landscape) ----------- */
@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 480px) 
    /* Styles */


/* Smartphones (landscape) ----------- */
@media only screen 
and (min-width : 321px) 
    /* Styles */


/* Smartphones (portrait) ----------- */
@media only screen 
and (max-width : 320px) 
    /* Styles */


/* iPads (portrait and landscape) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
    /* Styles */


/* iPads (landscape) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
and (orientation : landscape) 
    /* Styles */


/* iPads (portrait) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
and (orientation : portrait) 
    /* Styles */


/* Desktops and laptops ----------- */
@media only screen 
and (min-width : 1224px) 
    /* Styles */


/* Large screens ----------- */
@media only screen 
and (min-width : 1824px) 
    /* Styles */


/* iPhone 4 ----------- */
@media
only screen and (-webkit-min-device-pixel-ratio : 1.5),
only screen and (min-device-pixel-ratio : 1.5) 
    /* Styles */

【讨论】:

这是切换样式的好建议,但不是类【参考方案3】:

看看这个https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries。

另一种方法是将调整大小事件附加一些“切换代码”。

类似这样的:http://jsfiddle.net/s5dvb/

html

<div id="body" class="limit400">
    <h1>Hey :D</h1>
</div>

CSS

.limit400 h1  font-size:10px; 
.limit1200 h1  font-size:50px; 

JS

$(window).on('resize', function() 
    if($(window).height() > 400) 
        $('#body').addClass('limit1200');
        $('#body').removeClass('limit400');
    else
        $('#body').addClass('limit400');
        $('#body').removeClass('limit1200');
    
)

关于框架,请尝试http://purecss.io/ 或http://getbootstrap.com/

希望对你有帮助。

【讨论】:

感谢代码 sn-ps!只是挠头想弄清楚大多数人是如何做这种事情的。我正在查看引导程序,他们已经有大量的媒体查询来管理布局。似乎我要么必须制作多个控件并根据大小隐藏/显示,要么做一些 javascript。由于我在 css 方面的工作不多,所以我想我希望有另一种方法;)

以上是关于根据屏幕大小切换 CSS 类的主要内容,如果未能解决你的问题,请参考以下文章

js 根据屏幕大小调用不同的css文件

如何根据屏幕大小改变class的css样式

根据屏幕大小更改 CSS

CSS Flexbox - 根据屏幕大小组织弹性项目

css 根据屏幕大小显示或隐藏元素的类。

css 如何根据显示器屏幕大小自动调整显示区域