锚不包裹李。为什么?

时间:2012-09-05 13:31:21

标签: html css html5 css3

我有以下html和css代码,其中我希望<a>标记使用css包裹<li>标记。

这里是jsfiddle

HTML

<section class="row header">
            <ul class="nav">
                <li class="navfirst"><a href="#">Contact</a></li>
                <li><a href="#">Home</a></li>
                <li><a href="#">Resume</a></li>
                <li><a href="#">Interests</a></li>
                <li><a href="#">Work</a></li>
                <li class="navlast"><a href="#">Comments</a></li>
            </ul>
        </section>

CSS

.header .nav {
 margin: 0;
 padding: 0; }
  .header .nav li {
list-style-type: none;
display: inline-block;
padding: 0.5% 1%;
border: 1px solid green; }
.header .nav li.navfirst {
  margin-right: 4%; }
.header .nav li.navlast {
  margin-left: 4%; }
.header .nav li a {
  display: block;
  text-decoration: none;
  border: 1px solid red;
  width: 100%;
  height: 100%; }

这是scss。上面的css是从scss文件转换而来的

.nav {
    margin: 0;
    padding: 0;
    li {
        list-style-type: none;
        display: inline-block;
        padding: 0.5% 1%;
        border: 1px solid green;
        &.navfirst {
            margin-right: 4%;
        }
        &.navlast {
            margin-left: 4%;
        }
        a {
            display: block;
            text-decoration: none;
            border: 1px solid red;
            width: 100%;
            height: 100%;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

li标记中删除填充:

...
display: inline-block;
padding: 0.5% 1%;   <-- padding: 0
border: 1px solid green; 
...

http://jsfiddle.net/qrXWQ/1/

将填充添加到a

.header .nav li a {
     display: block;
     text-decoration: none;
     border: 1px solid red;
     padding: 5px; 
}

从上面的规则中删除width: 100%height: 100%,否则填充会弄乱布局......

http://jsfiddle.net/qrXWQ/2/

在上面的规则中,百分比单位将无法工作,因为它没有基础宽度/高度来应用%。您有3个选项:1)将填充保留在LI中,2)将填充放在a中,其中包含%(em以外的单位),或3)使用媒体查询为每个屏幕尺寸设置不同的填充。