使用按钮和媒体查询切换显示状态
Toggle Display State with Button and Media Query
我正在寻找一种最佳的显示状态方式,它可以通过页面上的按钮进行切换,但也可以基于媒体查询进行覆盖。在大屏幕上,我想默认为horiz
布局,并提供切换vert
布局的选项。在较小的屏幕上,我希望默认为vert
布局,不允许切换。
我目前的解决方案依赖于级联来覆盖样式表中的样式,我希望避免这种情况,因为它要求我的样式按特定顺序排列。
HTML:
应用默认布局layout--horiz
。还应用layout
,以便用@media
查询覆盖特定布局。
<div id='layout' class='layout layout--horiz'>
<a href="#" id='btn'>Toggle</a>
<p>This</p>
<p>is</p>
<p>a</p>
<p>test</p>
</div>
CSS:
在小屏幕的@media
查询中:隐藏切换,并将vert
样式硬编码为layout
样式以覆盖layout--horiz
(如果应用)。
#btn {
display: block;
}
.layout--horiz p {
display: inline;
}
.layout--vert p {
display: block;
}
@media screen and (max-width: 600px) {
#btn {
display: none;
}
.layout p {
display: block;
}
}
JS:
单击按钮切换特定的--horiz
和--vert
类。
$('#btn').click(function() {
$('#layout').toggleClass('layout--vert layout--horiz');
});
这个解决方案运行良好,但我想知道是否有更好的方法来实现这一点。
注意:这是一个可以玩的电笔。
除非将JS包含在前端框架中,否则您的解决方案离最佳解决方案不远了。这可能就是为什么你会收到指导你进行代码审查的评论。若要改进您的解决方案,请仅使用一个状态更改选择器。这将调用布局layout--horiz
的两个状态和一个默认状态。一旦您将媒体查询切换为选择大显示器而不是小显示器,就很容易进行此更改。
HTML:
<div id='layout' class='layout layout--horiz'>
<a href="#" id='btn'>Toggle</a>
<p>This</p>
<p>is</p>
<p>a</p>
<p>test</p>
</div>
CSS:
#btn {
display: none;
}
.layout p {
display: block;
}
@media screen and (min-width: 601px) {
#btn {
display: block;
}
.layout.layout--horiz p {
display: inline;
}
}
JS:
$('#btn').click(function() {
$('#layout').toggleClass('layout--horiz');
});
我认为更好的方法可能是有两个独立的样式表,一个是水平布局,另一个是垂直布局,然后你可以在点击功能上切换样式表以获得首选布局。这里有一个我很快就找到的链接。
https://www.developphp.com/video/JavaScript/Change-Style-Sheet-Using-Tutorial-CSS-Swap-Stylesheet
- 使用按钮和媒体查询切换显示状态
- 显示服务工作者状态的消息
- jQuery隐藏元素在使用CSS显示时保持隐藏状态
- 如何在状态输入ui路由器时立即显示模板,然后当承诺被解决时显示数据
- 在弹出窗口中显示状态
- 如何在 jquery 中的速率按钮下方显示消息状态
- 使用codehelper.io显示基于IP位置的状态缩写
- 这个预加载器工作吗?它不用于显示状态,只是加快了以后可能的图像加载速度
- 如何在ui路由器的父模板中显示状态
- 获取受 .slideToggle() 影响的显示状态元素
- 自动对焦属性在 Firefox 中因显示状态更改而不起作用
- 角度 SPA 未显示状态激活的 API 数据
- 如何在iOS UIAutomation中获取按钮突出显示状态
- Javascript图像预加载程序没有't显示状态
- 使用jQuery切换显示状态
- 如何启用窗口.在弹出窗口中显示状态
- 如何解决选择国家时动态显示状态的问题
- 这是在asp.net中显示状态消息的最佳方式
- 切换可见性-显示/隐藏-切换时保持显示状态
- 使用jQuery/Ajax/JS加载PHP文件和显示状态的正确或最佳过程