我有一个html页面,由80 - 100个css风格的div组成,每个div都包含一个网格,网格中有一幅图片和关于一幅作品的信息(每个div都有一个唯一的id,以便链接到页面中的特定位置)。
许多作品使用几种媒体,我希望用户能够使可见的只有艺术品,使用特定的媒体。
换句话说,我想让html页面表现得像一个可过滤的数据库,其中一个下拉菜单就像一个过滤器列表,点击"使用视频的艺术作品"选项(例如)隐藏所有不使用视频的作品。
- 我想实现上述与css和Javascript只. *
我的理解是:
我可以通过分配不同的类来使我的艺术作品div可选,比如". med-drawing"". med-video"". med-sound"等。需要有10 - 12个这样的类。
然后,我需要一种方法,onClick,来"* 使 * 所有 * 确实 * 有 * 的div可见"一个特定的类,并且"* 使 * 没有 * 的div不可见"那个类。这适用于10 - 12个不同类中的每一个。
我已经尝试了一系列的Javascript "onClick + GetElementsByClass +[some visibility control]"函数,这些函数被分配给菜单中的不同元素。我的javascript编码知识有限,到目前为止,我还不能让任何东西工作。
我真正需要的是一个基本的javascript/css解决方案,我可以修改它来适应我的项目。
我会很感激任何帮助。
1条答案
按热度按时间wpcxdonn1#
为了让您开始,一种方法是:
根据内容类型为每个div添加一个公共类名和一个
data
属性。例如:一旦你有了这个,你可以添加一个选择框,其中将包含与
data-type
值相同的选项。如果您看到上面的代码,
value
of选项包含不同的data-type
属性值,我们将使用这些值来过滤内容。现在对于js逻辑,首先我们需要监听
select
元素的onChange
事件,将选择的值存储在一个变量中,然后在用户使用document.querySelectorAll()
函数选择一个选项时查询元素,并将公共类名作为函数参数传递,以便只选择需要过滤的元素。查询完成后,我们可以使用
forEach
遍历每个元素,然后检查每个元素的data-type
属性是否与所选的过滤器值匹配,如果不匹配,则向元素添加一个类名,以控制元素的可见性。此外,我们需要确保如果
data-type
匹配,则删除类名,以便在用户选择不同的过滤器时可以看到该元素。结合这一点,这里是一个小提琴。修改代码为您的项目需要。
一个一个二个一个一个一个三个一个一个一个一个一个四个一个