根据屏幕大小切换 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/
<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 类的主要内容,如果未能解决你的问题,请参考以下文章