:first-letter on li elements

风格不统一 提交于 2019-12-13 16:19:50

问题


I'm trying to use a :first-letter pseudo element on a navigation menu.

HTML such as:

<nav>
    <ul>
        <li>Navigation</li>
        <li>Navigation</li>
        <li>Navigation</li>
        <li>Navigation</li>
    </ul>
</nav>

And CSS like:

nav li:first-letter {font-size: 150%;}

I've also tried

nav ul li:first-letter {font-size: 150%;}

to no help.

I can see it working for the first element on the <ul> tag if I adjust it to this:

nav ul:first-letter {font-size: 150%;}

but still can't get exactly what I need; <li>'s inline whose first character is larger than the others.


回答1:


Because your li elements are all flowing inline (assuming you have a display: inline style that's not shown), the :first-letter pseudo-element will only pick up the very first letter out of that entire chunk of inline text. That is why ul:first-letter works, but li:first-letter does not.

Try making your list items inline blocks instead, so they continue to contain their text within their own boxes, while these boxes themselves flow inline. If necessary, zero out their margins and padding.

jsFiddle demo




回答2:


Your first CSS snippet works fine, look at this fiddle. You must have another css rule which override it.




回答3:


it seems as the created "Shadow" Markup from the Browser just inserts another element.

Something like:

<p><p:first-letter>H</p:first-letter>ello</p>

Did you try :first-letter selector with an inline-block and/or block element?

Try adding a display:block, that should work then.



来源:https://stackoverflow.com/questions/9553539/first-letter-on-li-elements

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!