CSS-是否可以将相同的类规范分配给id
我正在使用一个自动生成一些HTML页面的应用程序,我需要在这些页面上编写一些CSS文件。我想重用几个类(由jqueryui主题生成),但是我不能更改任何HTML元素 那么,是否可以将同一个类的规范分配给一个id 如果这是可能的,那么我将很容易地在我的类和ID之间创建一个映射 例如:CSS-是否可以将相同的类规范分配给id,css,Css,我正在使用一个自动生成一些HTML页面的应用程序,我需要在这些页面上编写一些CSS文件。我想重用几个类(由jqueryui主题生成),但是我不能更改任何HTML元素 那么,是否可以将同一个类的规范分配给一个id 如果这是可能的,那么我将很容易地在我的类和ID之间创建一个映射 例如: <html> <head><style> #charlieID { /* I want #charlie to be identical to .alphaClass */
<html>
<head><style>
#charlieID {
/* I want #charlie to be identical to .alphaClass */
/* Assume that I can not change the HTML (it will be auto generated by another application)*/
}
.alphaClass {
font-size: small;
color: lime;
}
.betaClass {
font-size: medium;
color: blue;
}
</style></head>
<body>
<p class="alphaClass">Alpha</p>
<p class="betaClass">Beta</p>
<p id="charlieID" class="charlieClass">Charlie</p>
<body></html>
#查理{
/*我想让charlie和alphaClass一模一样*/
/*假设我无法更改HTML(它将由另一个应用程序自动生成)*/
}
.alphaClass{
字体大小:小;
颜色:青柠;
}
贝塔克拉斯先生{
字号:中等;
颜色:蓝色;
}
阿尔法
测试版
查理
我将在整个应用程序中管理数百(可能数千)个ID,而不一定是在一个页面中。因此,当涉及CSS时,我有完全的自由,因此我可以将其分解为几个CSS文件(每个页面一个文件)来控制ID,并使用我的类控制另一个主CSS。以下是关于何时使用ID和类的一个很好的解释:
对于您的问题,元素可以同时具有和ID以及class。以下是关于何时使用ID和class的一个很好的解释:
对于您的问题,一个元素可以同时具有ID和class。是的,当然可以。css规范可能有多个目标。要将相同的规则同时指向类和id,只需执行以下操作:
#charlieID, .alphaClass {
font-size: small;
color: lime;
}
请注意分隔目标的逗号
补充答复: 如果要匹配几十万个ID,那么这个标准方法(不需要额外的脚本或库,只需要常规CSS)实际上比任何可能的替代方法都要小。考虑:
/* Standard CSS */
#charlieID1, #charlieID2, #charlieID3, #charlieID4, #charlieID5,
#charlieID6, #charlieID7, #charlieID8, #charlieID9, #charlieID10,
#charlieID11, #charlieID12, #charlieID13, #charlieID14, #charlieID15,
#charlieID16, #charlieID17, #charlieID18, #charlieID19, .alphaClass {
font-size: small;
color: lime;
}
并将其与:
/* LESS CSS. Needs to be compiled with LESS */
.alphaClass {
font-size: small;
color: lime;
}
#charlieID1 {
.alphaClass
}
#charlieID2 {
.alphaClass
}
#charlieID3 {
.alphaClass
}
#charlieID4 {
.alphaClass
}
#charlieID5 {
.alphaClass
}
#charlieID6 {
.alphaClass
}
#charlieID7 {
.alphaClass
}
#charlieID8 {
.alphaClass
}
#charlieID9 {
.alphaClass
}
#charlieID10 {
.alphaClass
}
#charlieID11 {
.alphaClass
}
#charlieID12 {
.alphaClass
}
#charlieID13 {
.alphaClass
}
#charlieID14 {
.alphaClass
}
#charlieID15 {
.alphaClass
}
#charlieID16 {
.alphaClass
}
#charlieID17 {
.alphaClass
}
#charlieID18 {
.alphaClass
}
#charlieID19 {
.alphaClass
}
只有19个身份证
然而,有一个更好的解决办法。如果你真的有几十万个可能的ID,那么瞄准这些ID可能是错误的。相反,您应该真正查看文档的结构,并查看您想要定位的对象是否可以通过其他方式定位
另一种方法是基于对象的父对象编写目标。例如,如果您有如下结构:
<div class='foo'>
<span id='charlieID'></span>
</div>
创造性地寻找你可以瞄准的共同结构。您还可以使用其他技巧,如使用子选择器或兄弟选择器。我强烈建议至少阅读一篇高级CSS教程。但是请注意,一些较旧的浏览器不支持一些更有用的规则。不过,既然你提到了CSS3,你可能还是瞄准了更新的浏览器
如果所有其他操作都失败,那么没有任何东西表明您不能生成CSS文件,而不是手动键入它:
#! /usr/bin/env tclsh
# Sample script to print rule with thousands of target.
# (note: I have no idea what thousands of targets do to various browsers)
set targets {}
foreach {name idx} {"#charlie" 1000 ".alphaClass" "" "#jane" 500} {
if {$idx == ""} {
lappend targets $name
} else {
for {set i 0} {$i < $idx} {incr i} {
lappend targets "$name$i"
}
}
}
puts [join $targets ","]
puts "{font-size:small; color:lime;}"
# should print a rule with the following targets:
# #charlie0..#charlie999, .alphaClass and #jane0..#jane499
#/usr/bin/env tclsh
#打印具有数千个目标的规则的示例脚本。
#(注意:我不知道数千个目标对各种浏览器做了什么)
设置目标{}
foreach{name idx}{#charlie“1000”。alphaClass“”#jane“500}{
如果{$idx==“”}{
lappend的目标是$name
}否则{
对于{set i 0}{$i<$idx}{incr i}{
lappend目标“$name$i”
}
}
}
放置[加入$targets”,“]
放入“{字体大小:小;颜色:青柠;}”
#应打印具有以下目标的规则:
##charlie0.#charlie999、#alphaClass和#jane0.#jane499
是的,当然可以。css规范可能有多个目标。要将相同的规则同时指向类和id,只需执行以下操作:
#charlieID, .alphaClass {
font-size: small;
color: lime;
}
请注意分隔目标的逗号
补充答复:
如果要匹配几十万个ID,那么这个标准方法(不需要额外的脚本或库,只需要常规CSS)实际上比任何可能的替代方法都要小。考虑:
/* Standard CSS */
#charlieID1, #charlieID2, #charlieID3, #charlieID4, #charlieID5,
#charlieID6, #charlieID7, #charlieID8, #charlieID9, #charlieID10,
#charlieID11, #charlieID12, #charlieID13, #charlieID14, #charlieID15,
#charlieID16, #charlieID17, #charlieID18, #charlieID19, .alphaClass {
font-size: small;
color: lime;
}
并将其与:
/* LESS CSS. Needs to be compiled with LESS */
.alphaClass {
font-size: small;
color: lime;
}
#charlieID1 {
.alphaClass
}
#charlieID2 {
.alphaClass
}
#charlieID3 {
.alphaClass
}
#charlieID4 {
.alphaClass
}
#charlieID5 {
.alphaClass
}
#charlieID6 {
.alphaClass
}
#charlieID7 {
.alphaClass
}
#charlieID8 {
.alphaClass
}
#charlieID9 {
.alphaClass
}
#charlieID10 {
.alphaClass
}
#charlieID11 {
.alphaClass
}
#charlieID12 {
.alphaClass
}
#charlieID13 {
.alphaClass
}
#charlieID14 {
.alphaClass
}
#charlieID15 {
.alphaClass
}
#charlieID16 {
.alphaClass
}
#charlieID17 {
.alphaClass
}
#charlieID18 {
.alphaClass
}
#charlieID19 {
.alphaClass
}
只有19个身份证
然而,有一个更好的解决办法。如果你真的有几十万个可能的ID,那么瞄准这些ID可能是错误的。相反,您应该真正查看文档的结构,并查看您想要定位的对象是否可以通过其他方式定位
另一种方法是基于对象的父对象编写目标。例如,如果您有如下结构:
<div class='foo'>
<span id='charlieID'></span>
</div>
创造性地寻找你可以瞄准的共同结构。您还可以使用其他技巧,如使用子选择器或兄弟选择器。我强烈建议至少阅读一篇高级CSS教程。但是请注意,一些较旧的浏览器不支持一些更有用的规则。不过,既然你提到了CSS3,你可能还是瞄准了更新的浏览器
如果所有其他操作都失败,那么没有任何东西表明您不能生成CSS文件,而不是手动键入它:
#! /usr/bin/env tclsh
# Sample script to print rule with thousands of target.
# (note: I have no idea what thousands of targets do to various browsers)
set targets {}
foreach {name idx} {"#charlie" 1000 ".alphaClass" "" "#jane" 500} {
if {$idx == ""} {
lappend targets $name
} else {
for {set i 0} {$i < $idx} {incr i} {
lappend targets "$name$i"
}
}
}
puts [join $targets ","]
puts "{font-size:small; color:lime;}"
# should print a rule with the following targets:
# #charlie0..#charlie999, .alphaClass and #jane0..#jane499
#/usr/bin/env tclsh
#打印具有数千个目标的规则的示例脚本。
#(注意:我不知道数千个目标对各种浏览器做了什么)
设置目标{}
foreach{name idx}{#charlie“1000”。alphaClass“”#jane“500}{
如果{$idx==“”}{
lappend的目标是$name
}否则{
对于{set i 0}{$i<$idx}{incr i}{
lappend目标“$name$i”
}
}
}
放置[加入$targets”,“]
放入“{字体大小:小;颜色:青柠;}”
#应打印具有以下目标的规则:
##charlie0.#charlie999、#alphaClass和#jane0.#jane499
AFAIK在纯CSS中无法“继承”现有类的样式
如果可以接受客户端脚本,则可以动态添加类。jQuery示例:
$(document).ready(function() {$('#charlieID').addClass('alphaClass');});
请注意,如果您确实有能力更改现有的CSS,那么我误解了您的问题。在这种情况下,您不必显式重写样式,只需使用逗号分隔的列表即可:
#charlieID,
.alphaClass {
font-size: small;
color: lime;
}
因为您确实能够编辑CSS,所以您还可以研究更高级的语言,例如。用更少的时间,你就可以