【问题标题】:CSS: How do I keep the text from wreaking havoc on the layout?CSS:如何防止文本对布局造成严重破坏?
【发布时间】:2012-12-29 02:42:18
【问题描述】:

这可能是一个非常简单的解决方法,但我似乎找不到它,所以我向你寻求帮助。此页面:http://www.prvlocksmiths.com.au/company/choosing-prv-locksmiths-for-sydney-commercial-projects 当缩小尺寸时出现对齐问题,这是由于某些链接上的文本太长造成的。这导致堆叠良好的图像的布局......好吧..不是很好堆叠。

我该如何解决这个问题?

编辑:这是 HTML 和 CSS

CSS:

#benimg {
    overflow:hidden;
}


.listleft {
    float: left;
    width: 50%; 

}

.listright {
    float: left;
    width: 50%; 

}

.listcentered {
    max-width: 700px;
    margin-left: auto;
    margin-right: auto;
}

.rowimg {
    display: block;
    clear: left;


}

.imglist {
    width: 100%;
    height: auto;
    width: auto\9; /* ie8 */

}

.txtlist{
    text-align: center;
    font-size: 95%;
    padding-bottom: 10px;

}

HTML:

<div id="benimg">
<div class="listcentered">
    <div class="listleft">
        <div class="rowimg">
            <a href="[[~157]]">
<img class="imglist" src="img/benefits/keymarking.png" alt="Key Marking"></a>
            <p class="txtlist"><a href="[[~157]]">Professional Key Marking</a>
</p>
        </div>
        <div class="rowimg">
            <a href="[[~158]]">
<img class="imglist" src="img/benefits/cylindermarking.png" alt="Cylinder Marking"></a>
            <p class="txtlist"><a href="[[~158]]">Professional Cylinder Marking</a>
</p>
        </div>
        <div class="rowimg">
            <a href="[[~159]]">
<img class="imglist" src="img/benefits/keyterminalreseller.png" alt="Key Terminal Reseller"></a>
            <p class="txtlist"><a href="[[~159]]">Sydney Locksmith reseller for Keyterminal</a>
</p>
        </div>
        <div class="rowimg">
            <a href="[[~160]]">
<img class="imglist" src="img/benefits/autojobdispatch.png" alt="Automatic Job Dispatch"></a>
            <p class="txtlist"><a href="[[~160]]">Automated Job Dispatch System</a>
</p>
        </div>  
    </div>

    <div class="listright">
        <div class="rowimg">
            <a href="[[~156]]"><img class="imglist" src="img/benefits/pm7masterkeyingsoftware.png" alt="ProMaster 7 Master Keying Software"></a>
            <p class="txtlist"><a href="[[~156]]">PM7 Sydney Master Keying Software</a>
</p>
        </div>
        <div class="rowimg">
            <a href="[[~161]]"><img class="imglist" src="img/benefits/staffworkshops.png" alt="15 Staff and 8 Mobile Workshops"></a>
            <p class="txtlist"><a href="[[~161]]">Automatic key machines in all Sydney Workshops</a>
</p>
        </div>
        <div class="rowimg">
            <a href="[[~162]]"><img class="imglist" src="img/benefits/scecendorsed.png" alt="SCEC Endorsed Locksmiths"></a>
            <p class="txtlist"><a href="[[~162]]">SCEC endorsed Sydney Locksmiths</a>
</p>
        </div>
        <div class="rowimg">
            <a href="[[~163]]"><img class="imglist" src="img/benefits/automatickeymachines.png" alt="Automatic keying machines"></a>
            <p class="txtlist"><a href="[[~163]]">15 Staff and 8 Mobile Workshops</a>
</p>
        </div>  
    </div>
</div>
</div>

【问题讨论】:

标签: html css


【解决方案1】:

将以下内容添加到您的 CSS 应该可以解决问题:

.txtlist > a {
  width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: block;
}

以上将仅显示链接中的文本行,以防有更多文本(当您缩小浏览器时)。如果您渲染 &lt;a&gt; 时,其 title 属性也填充了文本,当有人将鼠标悬停在它上面时,它将显示为工具提示。

&lt;a href="..." title="This is the link text"&gt;This is the link text&lt;/a&gt;

即使文本显示为“This is the li...”,当将鼠标悬停在其上时,您的用户也将能够看到全文。

【讨论】:

  • 非常感谢 Vj,这似乎完成了这项工作。我想没有真正的方法可以阻止省略号的发生吗?
  • 标题标签的好主意!然而,这种尺寸减小主要是针对移动设备的,他们将看不到这一点。
  • title 属性不应该是元素文本内容的副本。屏幕阅读器会阅读文本两次。
  • 你可以取出text-overflow: ellipsis;来去掉省略号的出现。但文字看起来会被截断。
  • 啊,既然是手机版的,标题就不需要了。
【解决方案2】:

试试这个:

.txtlist{
    text-align: center;
    font-size: 95%;
    padding-bottom: 10px;

    /* Add this css  */
    text-overflow: ellipsis;
    white-space: nowrap;

}

【讨论】:

    【解决方案3】:

    简而言之,您有一个左列和一个右列。两列的内容之间不能有任何关系。我会放弃两个包含列的概念,而改用“行”概念。

    请参阅此fiddle 以获得快速而肮脏的示例

    代码,根据示例是又快又脏

    HTML

    <ul class="listcentered">
        <li class="rowClear"> <a href="[[~157]]">
            <img class="imglist" src="http://www.prvlocksmiths.com.au/img/benefits/keymarking.png" alt="Key Marking"></a>
            <p class="txtlist"><a href="[[~157]]">Professional Key Marking</a></p>
          </li>
    
          <li class="rowimg"> <a href="[[~156]]"><img class="imglist" src="http://www.prvlocksmiths.com.au/img/benefits/pm7masterkeyingsoftware.png" alt="ProMaster 7 Master Keying Software"></a>
    
            <p class="txtlist"><a href="[[~156]]">PM7 Sydney Master Keying Software</a></p>
          </li>
    
          <li class="rowClear"> <a href="[[~158]]">
            <img class="imglist" src="http://www.prvlocksmiths.com.au/img/benefits/cylindermarking.png" alt="Cylinder Marking"></a>
            <p class="txtlist"><a href="[[~158]]">Professional Cylinder Marking</a></p>
          </li>
    <li class="rowimg"> <a href="[[~162]]"><img class="imglist" src="http://www.prvlocksmiths.com.au/img/benefits/scecendorsed.png" alt="SCEC Endorsed Locksmiths"></a>
    
            <p
            class="txtlist"><a href="[[~162]]">SCEC endorsed Sydney Locksmiths</a>
    
              </p>
          </li>        
    
          <li class="rowimg rowClear"> <a href="[[~161]]"><img class="imglist" src="http://www.prvlocksmiths.com.au/img/benefits/staffworkshops.png" alt="15 Staff and 8 Mobile Workshops"></a>
    
            <p
            class="txtlist"><a href="[[~161]]">Automatic key machines in all Sydney Workshops</a>
    
              </p>
          </li>
          <li  > <a href="[[~159]]">
            <img class="imglist" src="http://www.prvlocksmiths.com.au/img/benefits/keyterminalreseller.png" alt="Key Terminal Reseller"></a>
            <p class="txtlist"><a href="[[~159]]">Sydney Locksmith reseller for Keyterminal</a></p>
          </li>
          <li class="rowimg rowClear"> <a href="[[~160]]">
            <img class="imglist" src="http://www.prvlocksmiths.com.au/img/benefits/autojobdispatch.png" alt="Automatic Job Dispatch"></a>
            <p class="txtlist"><a href="[[~160]]">Automated Job Dispatch System</a></p>
          </li>
    
    
    
    
    
          <li class="rowimg"> <a href="[[~163]]"><img class="imglist" src="http://www.prvlocksmiths.com.au/img/benefits/automatickeymachines.png" alt="Automatic keying machines"></a>
    
            <p
            class="txtlist"><a href="[[~163]]">15 Staff and 8 Mobile Workshops</a>
    
              </p>
          </li>
        </ul>
    

    CSS

    ul {
      position:relative
    }
    
    li
    {
      float:left;
      width:47%;
      font-size:1.3em;
      padding:10px;
    
    }
    
    .rowClear
    {
      clear:both;
    }
    

    这应该足以让您继续前进。您需要根据您的要求调整 li 宽度和填充。 Firebug 将成为你的朋友。

    更新

    受 powerbouys 回答的启发,我已经消除了 this fiddle 中对浮点数的需求

    更新2

    响应您的评论,将li 元素的填充更改为padding-bottom:10px; 将使列能够“重叠”(http://jsfiddle.net/FHE65/3/)。就个人而言,我认为一旦达到图像的大小,流到一列会更有意义。

    在合并您调整图像大小的 CSS 之后,这应该完全符合您的需要 (http://jsfiddle.net/FHE65/5/)。一旦达到最长单个单词的宽度,它将转到一列。

    【讨论】:

    • 感谢乔恩,似乎这个概念完成了这项工作,但是当调整大小时(至少从小提琴示例),它会将内容全部放在一列中。我需要它保持在它的两列结构中。
    • @Marc 这是因为您正在接近图像的宽度。无论采用哪种方法,这都是您列的最小宽度。当调整大小强制列宽小于图像宽度时,您期望会发生什么?
    • 我希望该列能够像当前设置的那样减小图像宽度。查看帖子中的 URL,您就会明白我的意思。
    【解决方案4】:

    你可以像一些人建议的那样使用text-overflow

    .txtlist {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    

    或者(如果您不想隐藏任何文本),您可以将每个.rowimg 显示为inline-blockvertical-align: top

    这是更改后的 CSS:

    .rowimg {
     /*  display: block;
        clear: left; */
    
        width: 45%; /* You might wanna play around with this as well as margin */
        display: inline-block;
        vertical-align: top;
     }
    

    您还必须从 HTML 中删除 div.listleftdiv.listright 元素。

    【讨论】:

      【解决方案5】:

      只需为divs设置一个固定高度

      height:300px; 或者随便什么

      【讨论】:

      • 绝对不需要固定divs的高度。它破坏了任何类似于流体布局的目的
      猜你喜欢
      • 1970-01-01
      • 2019-07-21
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      相关资源
      最近更新 更多