【发布时间】:2016-10-11 09:00:59
【问题描述】:
这是我的问题:
我在左侧有一个菜单。当屏幕太小时,菜单占用太多空间,所以我“最小化”它。 为此,当屏幕宽度小于特定像素大小时,我会应用不同的样式。 (带有媒体查询)。
但我想允许用户使用按钮最小化菜单,即使在大屏幕上也是如此。这意味着应用与我的媒体查询相同的样式。
我知道我可以通过单击按钮向容器中添加一个类,然后从该类的媒体查询中复制/粘贴代码,但我想可能有比复制代码更好的方法。
现在:
/* Classic style */
#menu{
width:100px;
background-color:#ddd;
padding:15px;
}
#menu li{
color:red;
padding:20px 20px;
}
/* Style when screen less than 600px */
@media (max-width: 600px) {
#menu{
width:40px;
padding:5px;
}
#menu li{
padding: 10px 10px;
}
...
/* ...a lot more style... $/
}
/* Same style when class buttonClicked */
.buttonClicked #menu{
width:40px;
padding:5px;
}
.buttonClicked #menu li{
padding: 10px 10px;
}
...
/* ...a lot more style... $/
这只是一个简单的例子,但我在菜单上应用的样式比这复杂得多,所以我想尽可能避免重复代码。
这是一个 JsFiddle:https://jsfiddle.net/rtnp67s2/3/
编辑:实际上我正在寻找的是对样式进行代码重构。有可能吗?
类似的东西(显然不起作用):
/* Style when screen is less than 600px or when class .buttonClicked active */
@media (max-width: 600px) OR .buttonClicked {
#menu{
width:40px;
padding:5px;
}
#menu li{
padding: 10px 10px;
}
/*... more than 100 lines of styling... */
}
提前致谢!
【问题讨论】:
-
如果您不想添加 CSS 类,请尝试使用 jQuery/javascript。例如,添加一个“增加”按钮来增加菜单的大小,添加一个“减少”按钮来减小菜单的大小。增加点击... $('#menu').css({width:'100px', height:'30px'});减少点击... $('#menu').css({width:'90px', height: '20px'});
-
我不介意添加一个CSS类,只是我想在点击时应用媒体查询中描述的最小化样式而不必重复它,因为这个自定义样式超过100行的代码。查看我的编辑。
标签: html css twitter-bootstrap refactoring media-queries