开发者

Is there a way to use wildcards in css id tag

assuming i have few items with similar ids:

<input class="a" id="id_1"/>
<input class="a" id="id_2"/>

i would like to set in my css file something like:

#id_*{width = 100%;}

is there a way i can do that? i've tried something like:

input[id^='id_']{width:200px;}

but that didnt worked out......

And its need to work on IE :(

EDIT: nedd to work on IE8....

EDIT:

<input tabIndex="1690" class="form" id="cust_1_NUM_OBJ_5-00461" dataFld="cust_1_NUM_OBJ_5-00461" dataSrc="#FIELDVALUES" style="text-align: right; height: 20px;" onkeypress="validateNumberChar(this)" onfocus="resetGFocusField('cust_1_NUM_OBJ_5-00461');" onblur="validateChangedNumber(this);" onbeforedeactivate="onbeforedeactivateLookup(this);" type="text" size开发者_StackOverflow社区="20" maxLength="55" datatype="number" numbertype="24,6" valueFieldID="null" tabStop="true" value="1"/>

and CSS:

input[id^='cust_1_NUM_OBJ_5-0046']{width:200px;}

Is there a way to use wildcards in css id tag

Is there a way to use wildcards in css id tag


input[id^='id_']{width:200px;} should work. It certainly does in this fiddle:

http://jsfiddle.net/jYZnX/

EDIT: Also, to show that it doesn't pick an input without an id beginning 'id_':

http://jsfiddle.net/jYZnX/1/

EDIT 2: As your Document Mode seems to be set to Quirks this will cause issues with the css selector. Set your doc type correctly, eg using <!DOCTYPE HTML>. This will need access to the original code for the web pages though, so without that you will be in a spot of bother.


The selector you used (^), works correctly in IE:

input[id^='id'] {
    background: red;
}

And here is the result:

IE7

Is there a way to use wildcards in css id tag


IE8

Is there a way to use wildcards in css id tag


IE9

Is there a way to use wildcards in css id tag


IE10

Is there a way to use wildcards in css id tag


As I saw in your pictures, your IE is rendering your page with Quirks Mode. Maybe you have no doctype or wrong doctype at your page. Make your doctype valid as below:

<!doctype html>


My answer is quite general and never directly related to the question because this is already very old and so far solved by other answers on this page.


The first part of this answer is dry theory which is useful to understand the options.
The second part is an example for usage of this theory.


1) ATTRIBUTE SELCTORS

Substring matching attribute selectors:

[att^=val]
Represents an element with the att attribute whose value begins with the prefix "val". If "val" is the empty string then the selector does not represent anything.

[att$=val]
Represents an element with the att attribute whose value ends with the suffix "val". If "val" is the empty string then the selector does not represent anything.

[att*=val]
Represents an element with the att attribute whose value contains at least one instance of the substring "val". If "val" is the empty string then the selector does not represent anything.

Additionally there are still more selectors, in the specification they are sorted in the chapter Attribute presence and value selectors:

[att]
Represents an element with the att attribute, whatever the value of the attribute.

[att=val]
Represents an element with the att attribute whose value is exactly "val".

[att~=val]
Represents an element with the att attribute whose value is a whitespace-separated list of words, one of which is exactly "val". If "val" contains whitespace, it will never represent anything (since the words are separated by spaces). Also if "val" is the empty string, it will never represent anything.

[att|=val]
Represents an element with the att attribute, its value either being exactly "val" or beginning with "val" immediately followed by "-" (U+002D).


2) EXAMPLE HOW TO SELECT SEVERAL THINGS ON A PAGE DEPENDING ON AN EVENT

Wildcards are especially then useful when an event is triggered like that a page is visited with a special hash-tag. For a completely static page in contrast they are also useful but still could be noted different, even it would be more CSS-code.

Assume a page is visited with the hash-tag action, so the URL would look like this:

https://example.com/index.html#action

While only one id is triggered like that we can use it to note a whole stack of related actions in CSS, we just have to enclose the whole area where something shall happen in an element with the id action:

/* all div-elements which are direct child of element with class `wrapper` are hidden: */

.wrapper>div {
  display: none;
}


/* following line addresses all elements inside element with the id "action"
   where the id is starting with "action_". This is only triggered when the
   URL with hashtag "action" is called, because of usage of ":target":
*/

#action:target [id^="action_"] {
  display: block;
}


/* following line addresses all elements inside element with the id "amother-action"
   where the class is "another-action". This is only triggered when the
   URL with hashtag "another-action" is called, because of usage of ":target".
   This example shows that we never need ids but can use classes too:
*/

#another-action:target .another-action {
  display: block;
}
<div id="action">
  <div id="another-action">
    <div class="wrapper">
      <!-- this small menu is always shown as it's an unordered list and no div: -->
      <ul>
        <li><a href="#">No Action / Reset</a></li>
        <li><a href="#action">Action</a></li>
        <li><a href="#another-action">Another Action</a></li>
      </ul>
      <!-- The following div-elements are by default hidden and
           only shown when some event is triggered: -->
      <div id="action_1" class="another-action">
        <!-- this is on both actions shown as the div has an id starting
               with "action" and also a class "another-action" -->
        Hello
      </div>
      <div id="action_2">
        <!-- this is above only triggered by the CSS-rule 
               #action:target [id^="action_"] -->
        World!
      </div>
      <div class="another-action">
        <!-- This is above only triggered by the CSS-rule
               #another-action:target .another-action -->
        Everybody!
      </div>
    </div>
  </div>
</div>

The different results are these:

  1. When the page is called without any hash, only the menu is shown:
  • Action
  • Another Action
  1. When the page is called with the hash action, below the menu can be seen:

Hello
World!

  1. When the page is called with the hash another-action, below the menu can be seen this instead:

Hello
Everybody!

Like this we can mix much content where each division is only shown in special cases. Mixing several ids and classes does only work if the elements with the ids are enclosing the elements with content and select-able properties. In my example above you can see that everything in HTML is written between <div id="action"><div id="another-action"> and </div></div>, like this every used event can optionally trigger everything in the content between.

Naturally it's possible by CSS to use this method for other effects too. Hiding or showing the elements is only a simple example but you could change colors, start CSS-animations and do many other things by CSS.


Keep care that you don't publish any confidential things in any of those elements, because this CSS-solution is no security but only for distinguishing cases for visual display. Any things you hide or show like this are always visible in the HTML-source.


Given a three-column table with 200 rows and each row having an individual id like this row:

<tr id="row_177">
 <td><a class="btn" href="..">Link1</a></td>
 <td><a href="pdfName.pdf" target="_blank">Name of PDF File</a></td>
 <td><select class="pdf_sel">
    <option value=""> ---- </option>
    <option>Crowell, Thomas</option> 
    </select>
 </td>
</tr>

and given that you want to vertically center the content in each td, then the following css wildcard will cause the content of each td to be centered vertically** (I'm sure you could also use this to adjust width):

tr[id^='row_'] > td {
  vertical-align:middle
}

** One caveat - the third column in the table contains a Select in each td. While the anchor button in the first column and the text anchor in the second column are centered vertically in each td by using the above css, the Select in the third column does not respond to this css for some reason - but there is a fix. The following css will cause the Select elements to be properly centered vertically:

tr[id^='pdfrow_'] > td > select {
margin-top:5px;
margin-bottom:5px
} 


That is precisely what classes are for. What you want is:

.a { width: 100% }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜