我有一个网页,我正在尝试针对桌面和移动设备进行优化,但是在如何将div放在屏幕上引用相同id
的不同位置方面几乎没有经验。任何关于最佳实践的建议都会非常有帮助。
<input id='feature-filter' type='text' placeholder='Filter by name' />
例如,上面我有一个名为feature-filter
的输入,它在桌面上应位于桌面上名为header
的菜单栏中。请注意,feature-filter
没有附带的CSS。
#header {
display: flex;
position: absolute;
align-items: center;
top: 0px;
width: 100%;
line-height: 50px;
height: 50px;
background: rgba(12, 12, 12, 0.8);
color: #eee;
font: 16px/20px 'Open Sans', sans-serif;
font-weight: 500;
text-align: center;
vertical-align: middle;
}
<div id='header'>
<button title = "ButtonA" id = "A"></button>
<button title = "ButtonB" id = "B"></button>
<button title = "ButtonC" id = "C"></button>
<input id='feature-filter' type='text' placeholder='Filter by name' />
</div>
但是,在移动版中,我想将此输入放在页面底部的图例中。在我的javascript中,有一个事件监听器可以从feature-filter
中提取数据。
#legend { z-index: 101010; padding: 5px; position: fixed; text-align: center;
color: #fff; bottom: 0px; width: 300px; background: #181818; opacity: 0.92;
font-family: 'Open Sans', sans-serif; left: 0; right: 0; font-weight: 300}
<div id='legend'>
<input id='feature-filter' type='text' placeholder='Filter by name' />
</div>
是否可以在javascript中引用相同的DOM id
并将feature-filter
放在html
的两个不同位置 - 一个用于移动设备,一个用于桌面版本?
解决这个问题的最佳方法是什么?使用CSS类仍然需要在id
html
的两个单独输入
任何基本的解释或建议都将不胜感激。
答案 0 :(得分:1)
无论屏幕类型如何,最好使用相同的HTML。我会使用div标签,而不是滥用图例标签。这简化了JavaScript并提高了可访问性。但是,您可以根据屏幕大小对其进行不同的样式设置。您甚至可以禁用/启用某些元素以适应移动设备。
我不会尝试使用具有相同ID的两个不同的HTML元素。重复的元素应该使用类名而不是ID(它是唯一的)。要么使用相同的HTML和样式,要么使用两个完全不同的HTML元素(具有不同的ID),并使用CSS禁用一个并在JavaScript中测试哪一个应该使用。
要针对不同设备采用不同的样式,建议的做法是使用根据屏幕大小应用不同规则的样式表。见StackOverflow question for how to target different sized screens with your CSS style sheet。
您也可以参考现有的样式框架,例如Bootstrap's responsive grid作为示例或解决方案,以了解如何针对不同大小的屏幕进行不同的样式设计。
答案 1 :(得分:0)
我建议使用CSS根据可用像素数量正确定位每个元素。如果移动比这样做,如果桌面比这样做。它的视觉问题对吗?为什么不使用CSS并告诉它你希望页面看起来如何。 CSS Info
或者下载Bootstrap并根据您的CSS喜好自定义它。