I am trying to apply css on the first A element inside .Outer,
.Outer > a:first-child {font-weight:bold}
doesn't work. Why?
<div class="Outer">
<img src='image123.jpg' />
<a href="Default.aspx?ID=4083" id="ctl00_CPH_Main_Rep_List2_ctl03_HyperLink1">John Johnsson</a>
<a href="../Users/ViewList.aspx?module=Occupation&ID=70">Doctor</a>
<a href="../W开发者_如何学编程orkplaces/Default.aspx?ID=31">Mayo Clinica>
</div>
It's because <a>
isn't the first child, <img/>
is. What you're looking for is .Outer > a:first-of-type
or .Outer > a:nth-child(2)
. Take not these "more advanced" selector don't work in all browsers *coughIEcough*
try it without the angle bracket. also, the :first-child
pseudo class isn't recognized by all browsers.
it's also possible that your CSS is being overridden by an existing rule. use firebug in firefox to see exactly what styles are being applied.
What you are doing will only work if the first child of your div.Outer was an a element. :first-child
does exactly what it says, it only matches an element if that element is the first child of something.
Unfortunately, I don't think there is any way to select only the first matching child element of an element using CSS only.
Because the first child is the image, this would work:
<div class="Outer">
<a href="Default.aspx?ID=4083" id="ctl00_CPH_Main_Rep_List2_ctl03_HyperLink1">John Johnsson</a>
<a href="../Users/ViewList.aspx?module=Occupation&ID=70">Doctor</a>
<a href="../Workplaces/Default.aspx?ID=31">Mayo Clinic</a>
</div>
Disclaimer: sorry I won't be testing this, just throwing some ideas.
Since image is actually the first element, here's an alternative simple idea, if you haven't figured any yet:
<div class="Outer">
<img src='image123.jpg' />
</div>
<div class="Outer">
<a href="Default.aspx?ID=4083" id="ctl00_CPH_Main_Rep_List2_ctl03_HyperLink1">John Johnsson</a>
<a href="../Users/ViewList.aspx?module=Occupation&ID=70">Doctor</a>
<a href="../Workplaces/Default.aspx?ID=31">Mayo Clinica</a>
</div>
It shouldn't affect img
since it's just bold.
Another approach would be modifying just the CSS and not touching the HTML:
.Outer a:first-child {font-weight:bold;}
That will affect every child from Outer, but I believe it would work in this case if there's nothing more inside Outer.
The best thing to do, whoever, would be one different div
for each group of elements. In this case, it would be something like this:
CSS
.Outer {font-size:10pt;}
.Outer-Head {boder:0;}
.Outer-Body {font-weight:none;}
.Outer-First {font-weight:bold;}
HTML
<div class="Outer">
<div class="Outer-Head">
<img src='image123.jpg' />
</div>
<div class="Outer-Body">
<div class="Outer-First">
<a href="Default.aspx?ID=4083" id="ctl00_CPH_Main_Rep_List2_ctl03_HyperLink1">John Johnsson</a>
</div>
<a href="../Users/ViewList.aspx?module=Occupation&ID=70">Doctor</a>
<a href="../Workplaces/Default.aspx?ID=31">Mayo Clinica</a>
</div>
</div>
It will give you best results. Just take a look at StackOverflow source on how it's done. It's very smooth.
精彩评论