Reputation: 1089
I'm trying to target an element that could have one of many classes. Isn't there an easier way to write the following example? I haven't been able to find a reference, but it seems there should be a more efficient option.
.myTable1 a, .myTable2 a, .myTable3 a, .myTable4 a
{
text-decoration: underline;
}
Upvotes: 4
Views: 137
Reputation: 6325
You could use multiple classes in the tables that need underlined links.
HTML:
<table class="myTable1 ul_table">...</table>
<table class="myTable2 ul_table">...</table>
<table class="myTable3 ul_table">...</table>
<table class="myTable4 ul_table">...</table>
CSS:
.ul_table a {
text-decoration: underline;
}
Upvotes: 1
Reputation: 723428
If you're talking about computational efficiency (i.e. browser performance), then I suggest sticking with what you already have. Otherwise...
If you know the class
attribute always starts with the substring myTable
, you can just use an attribute selector:
[class^="myTable"] a
{
text-decoration: underline;
}
If you can't guarantee that you need something that's a little more complex:
[class^="myTable"] a, [class*=" myTable"] a
{
text-decoration: underline;
}
An explanation is offered here. If you find this syntax arcane, then I'll suggest again going with what you already have as it's the simplest.
Alternatively, modify your HTML to include a common class that you can select by. This will let you simplify your CSS even more from what you already have.
Upvotes: 4
Reputation: 5153
No, there is not an easier way in plain CSS.
However if your many classes are all similar, you can do fuzzy matching like this *[class^="myTable"] { ... }
.
Upvotes: 2
Reputation: 47657
Try -
table[class^=myTable] a {
text-decoration: underline;
}
Upvotes: 5