Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
201 views
in Technique[技术] by (71.8m points)

line-height对背景图标高度有何影响?

在制作纵向导航条时发现作为项目符号的背景图像比字符的位置要高一些。例如:

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>测试网页</title>
        <style>
            ul {
                list-style: none;
            }
            
            ul li {
                background-image: url(apple.png);
                background-size: 32px 32px;
                background-repeat: no-repeat;
                padding-left: 40px;
                margin: 10px auto;
            }
            
            ul li a {
                font-size: 32px;
                text-decoration: none;
            }
        </style>
    </head>
    <body>
        <ul>
            <li><a href="#">第一个项目</a></li>
            <li><a href="#">第二个项目</a></li>
            <li><a href="#">第三个项目</a></li>
        </ul>
    </body>
</html>

其中用到的图标文件是apple.png
image
在浏览器中显示的效果:
image
如果在列表项的样式里设置line-height为32px:

ul li {
    line-height: 32px;
    ......
}

那么背景图像与字符基本上站在同一条水平线上:
image
虽然能够做到比较满意的效果,但还是想搞清楚line-height起到什么作用。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

一般line-height默认是1.5em,你这里是通过line-height: 32px即(1em)强制把li的高度跟背景图片高度一致,从而达到对齐的效果。但是1em的行高有副作用的,不建议这么做。可以考虑使用background-position实现对齐:

ul li {
    /* ... */
    background-position: 0 50%;
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...