jQuery移动CSS是否符合W3C标准?

jQuery移动CSS是否符合W3C标准?,jquery,jquery-mobile,mobile,standards,Jquery,Jquery Mobile,Mobile,Standards,我并不需要答案,因为简短的答案是不。我提出这个问题更多是因为这是一个从jQuery论坛到GoogleCode论坛都没有解决的问题 自从我有了第一台Commodore 16使用标准盒式磁带录音机备份数据以来,我一直是一名程序员(是的……我就是那个年纪)。从那时起,在许多编程语言的编码实践中创建普遍兼容的标准一直是一场漫长而烦人的战斗,W3C是迄今为止最接近的标准 在我看来,在用jquerymobile(jQm)编写了两个应用程序之后,我认为jQm是一个好主意,只是因为这个原因而没有得到很好的实现。

我并不需要答案,因为简短的答案是。我提出这个问题更多是因为这是一个从jQuery论坛到GoogleCode论坛都没有解决的问题

自从我有了第一台Commodore 16使用标准盒式磁带录音机备份数据以来,我一直是一名程序员(是的……我就是那个年纪)。从那时起,在许多编程语言的编码实践中创建普遍兼容的标准一直是一场漫长而烦人的战斗,W3C是迄今为止最接近的标准

在我看来,在用jquerymobile(jQm)编写了两个应用程序之后,我认为jQm是一个好主意,只是因为这个原因而没有得到很好的实现。jQm已经决定以一种不合规的方式实现他们自己的CSS,让开发人员与jQm对他们自己的“符合标准的”补充CSS的hi劫持作斗争。记住,伙计们,CSS中的C代表“层叠”,这意味着一个遵循先前样式的样式声明 声明将优先于之前的样式。jQm CSS的情况并非如此,这使得它不符合标准

围绕jQm的CSS hi jacking行为(在jQuery的CSS、@imports、in-line样式之后加载的外部CSS文件…,你可以随便说),我尝试了许多实现我自己的标准兼容CSS的方法,但都没有用。在加载jqmcss之后,我用自己的CSS超越了jqmcss中包含的样式。 我是说。。。这难道不完全否定了使用jQm的任何好处吗

指向我的论点。如果我必须在我自己的“标准兼容”CSS中“超越”jQm的CSS,或者调整jQm CSS本身(这将消除以后能够将现有jQm CSS导入到主题滚轴中以添加另一种样式的优势),那么我也可以编写自己的UI开始

我可以使用jQuery和CSS3转换非常轻松地编写自己的转换,因此使用jQm的转换会带来任何好处。jQm将鼠标事件转换为触摸控件的功能已经过时,因为随着平板电脑和触摸屏笔记本电脑进入桌面世界环境,大多数主流浏览器已经在完善这一功能,但与jQm不同的是,jQm采用了符合标准的方式。还有jQm的默认ajax导航行为,我可以使用jQuery自己丰富的XMLHttpRequest速记方法($.ajax、$.get、$.post和$.getJSON)轻松实现,开销更低,性能更好。 那么为什么要使用jQm呢

我自己对jQm已经厌倦了,因为我花在与jQm不兼容的CSS行为斗争上的时间超过了我首先编写自己的符合标准的UI所需的时间。我是标准遵从性的坚定信徒,二十多年来我一直在与不符合标准的应用程序(比如IE…哦,不,我是不是大声说的!)作斗争

我自己。。。从现在起,我将使用符合标准的HTML5和CSS3编写我的所有应用程序,通过将我的符合标准的编码包装在移动设备自己的SDK中,可以轻松地通过不同的移动设备进行部署,能够使用移动设备自身的功能(如加速计、指南针、照相机等)还有另一个强大的好处

我希望听到关于这个问题的反馈,因为我总是保持开放的心态,并且喜欢一个好的圆桌讨论,让我重新思考我根据自己的经验做出的决定

更新 下面是一个示例和一个JSFIDLE,它描述了我在这个问题中引用的内容

<style>
.my_link a:link{ color:#00cc00 }
</style>

<div data-role="page" data-theme="a">
<p><a href="#">
Link using default jQm CSS</a></p>
<p><a href="#" class="my_link">
Link using CSS class declared in HEAD after jQm CSS</a></p>
<p><a href="#"> style="color:#00cc00">
Link using inline CSS declared after jQm CSS</a></p>
</div>

.my#u link a:link{color:#00cc00}

要覆盖JQM样式(或任何与此相关的样式),css选择器需要比JQM样式表使用的样式更具体

例如,给定以下带有1个链接的页面:

<div data-role="page" data-theme="a" data-url="/Ephiphany/S7NuK/show/" tabindex="0" class="ui-page ui-body-a ui-page-active" style="min-height: 209px;">
  <p class="my_p"><a href="#" class="my_link ui-link">Link using default jQm CSS</a></p>
</div>
CSS专用性是一个优先级系统,因为存在优先级层次:内联样式>ID>类/属性/状态>标记名/伪元素

考虑到这一点,我们要么需要一个ID,要么需要使用两个类。例如,如果它位于JQM样式表之后,则会覆盖它:

.my_p .my_link:link { 
    color: #00cc00
}


不要忘记
:已访问
:悬停
:活动
等。

简单的答案是,不,jQuery Mobile和jQuery UI不符合标准。如果他们要在所有的浏览器和设备上工作,他们就不可能做到,因为不是所有的浏览器和设备都遵循标准。这应该是一个问题还是一个咆哮(“你应该根据你所面临的实际问题提出实际的、可回答的问题。闲聊的、开放式的问题会降低我们网站的有用性,并将其他问题从头版上推下。”)[@Epiphany”在IE之外"这就是问题所在。JQM仍然必须在IE中工作。JQM不仅仅适用于移动设备,JQM的目标是在包括桌面在内的所有设备中工作。同样是在css上。JQM不会改变css的工作方式。请阅读css的特殊性。这是我在google上找到的第一个结果的链接:如果你使选择器足够具体,它们将覆盖JQM的风格。阅读FAQ。无论标准有多重要,所以不打算成为一个讨论问题的地方,而是帮助解决问题的地方。
.my_p .my_link:link { 
    color: #00cc00
}