Php 将CSS类用于JS标记是一种糟糕的做法吗?
场景:Php 将CSS类用于JS标记是一种糟糕的做法吗?,php,javascript,jquery,css,Php,Javascript,Jquery,Css,场景: 使用PHP和模板引擎生成的主页 该页面正在重新设计 新的设计基于jqueryui 当前CMS使用多个模板:页面模板、文章详细信息模板、评论模板等 问题: 一些模板(比如文章细节模板)生成html片段,这些片段应该使用jQueryUI元素,比如选项卡。当前,页面模板的数据源不包含任何信息,即哪些元素应该在文档头的主jQuery调用中转换为jQuery UI元素 可能的解决方案 将类似“jqTabs”的CSS类添加到子模板的html标记中,并在主jQuery脚本中使用选择器.jqTabs
- 使用PHP和模板引擎生成的主页李>
- 该页面正在重新设计李>
- 新的设计基于jqueryui
- 当前CMS使用多个模板:页面模板、文章详细信息模板、评论模板等
.jqTabs
问题
这是个坏主意吗
顺便说一句:“使用不同的CMS”不是一个有效的答案,因为这现在不是一个选项(截止日期、预算……你可以说-。-)。一点也不坏
这是类的主要用途之一
类(如和ID)既可以用作元素样式的方法,也可以用作脚本编写的挂钩
在这种情况下,它可能是最好的解决方案,因为它允许在更广泛的重新设计中对标记进行最小的更改
而且它很容易逆转。我认为使用CSS类作为JavaScript的挂钩确实是一种不好的做法。我之所以这样说,是因为这种方法将CSS和JavaScript混合在一起,常常会导致不必要的混乱 让我解释一下:现在我正在向现有系统添加新模板,该系统使用动态用户控制的管理设置来控制CSS属性(页面宽度、字体大小、颜色等)。这些设置也会影响JS属性(幻灯片放映选项、幻灯片之间的延迟等) 问题是,由于有这么多CSS类被用作JavaScript钩子,我很难确定哪些类用于样式,哪些类用作JS钩子,哪些类用于两者!因此,在创建新模板时,很难从零开始使用新标记,因为我会忽略CSS和JS功能的各种重要类
<a href="/mylink" class="my-style-class my-other-style-class js-my-hook-1 js-myhook-2">
My link
</a>
如果CSS类只用于样式化,而其他JS钩子只用于JS,那么这项任务就会容易得多。我设想这可以通过HTML5数据属性来实现,它看起来像这样:
<a href="#" class="button" data-lightbox="true" data-slide-delay="250">my link</a>
你为什么认为这可能是个坏主意?不是个坏主意。我更喜欢参考类。从长远来看,有很多“简单”的解决方案都是“坏主意”。最好问一下,然后在几个月内重建一切。不,这不是个坏主意。只需正确使用类和ID;也就是说,使用类来“分类”或分组不同的元素,并使用ID属性来指向一个且仅指向一个元素(不要在页面上的任何其他元素中重用ID值)。这不是只适用于HTML5兼容的浏览器吗?我们70%的网站用户是政府,其中一半以上的用户仍在使用IE7,并且在未来2-3年内没有升级计划。@Brian:最终我用这种方法解决了这个问题:因为我大量使用了jquery ui和tal模板,所以我使用了一组有文档记录的类,这些类应用了默认的外观(ui对话框,ui列表…)所有这些类都以ui作为前缀。所有其他“样式”类都以cs(自定义样式)作为前缀。但我同意你的方式更干净。