2016-07-19 38 views
1

为什么我看到这两个导航元素在屏幕上显示的方式有所不同?正如你从fiddle可以看到的,未格式化的nav在到达div末尾时并未正确换行,而是通过边界溢出,而格式化标记的行为与我所期望的相同。为什么当HTML中的空白区域应该是没有意义的时候呢?影响显示的标记格式

Fiddle

不换行之间的链接:

<a href="/">Link 1</a><a href="/">Link 2</a><a href="/">Link 3</a><a href="/">Link 4</a><a href="/">Link 5</a><a href="/">Link 6</a><a href="/">Link 7</a><a href="/">Link 8</a>    </nav> 

换行之间的链接:

<nav class="service__nav"> 
    <a href="/">Link 1</a> 
    <a href="/">Link 2</a> 
    <a href="/">Link 3</a> 
    <a href="/">Link 4</a> 
    <a href="/">Link 5</a> 
    <a href="/">Link 6</a> 
    <a href="/">Link 7</a> 
    <a href="/">Link 8</a> 
</nav> 

回答

2

格表示一个单词的结尾。未格式化的HTML不换的原因是:

  1. 有元素之间没有空格,指示字的一端,使得浏览器不打破他们之间的线路:

    <a href="/">Link 1</a><a href="/">Link 2</a><a href="/">Link 3</a> 
    
  2. <a>元素都有空间,但no-wrap告诉浏览器不打破它们内部线路:

    .service__nav a { 
        white-space: nowrap; 
    } 
    

你不必格式化HTML,只是<a>元素之间加空格:

<nav class="service__nav"> 
<a href="/">LinkTest One</a> <a href="/">LinkTest Two</a> <a href="/">LinkTest Three</a> <a href="/">LinkTest Four</a> 
</nav> 

查看更新JSFiddle

+0

明白了。有没有一种方法可以防止在各个链接中发生缠绕?例如,如果“LinkTest Four”碰到div的边缘,我想将整个字符串包装到下一行,而不是介于“LinkTest”和“Four”之间 – noclist