【问题标题】:List doesn't display as grid with long texts列表不显示为带有长文本的网格
【发布时间】:2019-04-30 00:33:44
【问题描述】:

我在整理它时遇到了问题,基本上它将是一个带有图标和文本的列表。图标大小保持不变,但文字没有,如图所示

.

问题是当<li> 有很多文本时,其余的会浮动到它的右侧。我该如何解决这个问题。

我的代码如下:

ul.iconifier {
width: 100%;
list-style: none;
margin: 0 auto; padding: 0;
}
ul.iconifier li {
float: left;
margin: 10px; padding: 0;
text-align: center;
border: 1px solid #ccc;
width:8em;
height:200px;
-moz-border-radius: 3px; /*--CSS3 Rounded Corners--*/
-khtml-border-radius: 3px; /*--CSS3 Rounded Corners--*/
-webkit-border-radius: 3px; /*--CSS3 Rounded Corners--*/
display: block; /*--IE6 Fix--*/
height:101%;
}

ul.iconifier li a.thumb{ 
width: 128px;
height: 128px;
overflow: hidden;
display: block;
cursor: pointer;

}
ul.iconifier li a.thumb:hover {

}
ul.iconifier li p {
font: normal 0.75em Verdana, Arial, Helvetica, sans-serif;
margin: 0; padding: 10px 5px;
background: #f0f0f0;
border-top: 1px solid #fff; /*--Subtle bevel effect--*/
text-align:center;
width:118px;

}

ul.iconifier li a {text-decoration: none; color: #777; display: block;}

html:

<ul class="iconifier">
<li>
    <a href="#" class="thumb" Title=""><img src="img/sprite.png" alt="Contacts" /></a>
    <p><a href="#">English Depatment</a></p>
</li>
<li>
    <a href="#" class="thumb" title="art"><img src="img/sprite.png"  alt="Art" /></a>
    <p><a href="#">Art Deptartment</a></p>

</li>
<li>
    <a href="#" class="thumb" title="Travel and Tourism"><img src="img/sprite.png" alt="Travel and Tourism" /></a>
    <p><a href="#">Mathematics</a></p>
</li>
    <li>
    <a href="#" class="thumb" Title=""><img src="img/sprite.png" alt="Contacts" /></a>
    <p><a href="#">Business Studies</a></p>
</li>
<li>
    <a href="#" class="thumb" Title=""><img src="img/sprite.png" alt="Contacts" /></a>
    <p><a href="#">English Depatment with a really long title that will hopefully fall</a></p>
</li>
<li>
    <a href="#" class="thumb" title="art"><img src="img/sprite.png"  alt="Art" /></a>
    <p><a href="#">Art Deptartment</a></p>

</li>
<li>
    <a href="#" class="thumb" title="Travel and Tourism"><img src="img/sprite.png" alt="Travel and Tourism" /></a>
    <p><a href="#">Mathematics</a></p>
</li>
    <li>
    <a href="#" class="thumb" Title=""><img src="img/sprite.png" alt="Contacts" /></a>
    <p><a href="#">Business Studies</a></p>
</li>
<li>
    <a href="#" class="thumb" Title=""><img src="img/sprite.png" alt="Contacts" /></a>
    <p><a href="#">English Depatment</a></p>
</li>
<li>
    <a href="#" class="thumb" title="art"><img src="img/sprite.png"  alt="Art" /></a>
    <p><a href="#">Art Deptartment</a></p>

</li>
</ul>

【问题讨论】:

    标签: css css-float


    【解决方案1】:

    对于现代浏览器,您需要使用 display: inline-block; 而不是 float 来让它们将其下方的行向下推。对于 IE6 和 IE7,请使用 display: inline

    用此代码替换您的ul.iconifier li

            ul.iconifier li
        {
            margin: 10px;
            padding: 0;
            text-align: center;
            border: 1px solid #ccc;
            width: 8em;
            -moz-border-radius: 3px; /*--CSS3 Rounded Corners--*/
            -khtml-border-radius: 3px; /*--CSS3 Rounded Corners--*/
            -webkit-border-radius: 3px; /*--CSS3 Rounded Corners--*/
            display: -moz-inline-box; /* mozilla only */
            display: inline-block; /* for browsers that support display:inline-block*/
            vertical-align: top;
        }
    

    然后添加此代码以使 IE6 和 IE7 工作:

       /* Show only to IE7 */
        *:first-child + html ul.iconifier li
        {
            display: inline;
        }
        /* Show only to IE6 */
        * html ul.iconifier li
        {
            display: inline;
        }
    

    我从这些网站学习了这种方法:
    http://gtwebdev.com/workshop/layout/inline-block-gallery.php
    http://www.css-lab.com/demos/image-display/inline-block-caption.html

    【讨论】:

      【解决方案2】:

      有两种使用css的方法,第一种方法是为带有固定长度的修剪文本的小块设置固定高度 第二种解决方案是使用服务器端开发代码,通过在该行的第一个 LI 中添加一个清晰的样式(注意:此解决方案用于固定行的块数)

      【讨论】:

        【解决方案3】:

        不理想,但你可以让元素的大小都一样,这样你就不会遇到向右浮动的问题。

        尝试将其添加到您的 CSS:

        ul.iconifier li 
        {
            margin-bottom: -5000px;
            padding-bottom: 5000px;
        }
        

        CSS 应该使元素的高度相同。

        干杯,肖恩

        【讨论】:

        • 谢谢,但不幸的是没有用。我不介意解决方案是 jquery,但我的技能还不够好
        【解决方案4】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-02-09
          • 1970-01-01
          • 1970-01-01
          • 2019-06-19
          • 1970-01-01
          • 1970-01-01
          • 2021-03-17
          • 1970-01-01
          相关资源
          最近更新 更多