如何去除 jQuery Mobile Listview 缩略图下的空白

How do I get rid of whitespace under jQuery Mobile Listview thumbnail image

当我将图像应用于列表视图列表项时,缩略图应调整为 80x80 像素。它调整为 80 宽但不是 80 高,因此图像下方有一个间隙。也因为这个原因,整个列表项看起来偏移了,列表项中的文本太高了。

我知道如果我在列表项中有很多文本并且我将白色-space设置为正常,这会导致这个问题,但我认为这不适用于我这种情况是因为我没有足够的文字。

这是我从 w3 学校复制的代码,它们是我正在尝试做的事情的示例 (http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_lists_thumbs2)。我修改了它以添加我的图像和一个普通的列表项。

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
<body>

<div data-role="page" id="pageone">
  <div data-role="main" class="ui-content">
    <h2>List With Thumbnails and Text</h2>
    <ul data-role="listview" data-inset="true">
      <li>
        <a href="#">
        <img src="images/aileens1.jpg">
        Text
        </a>
      </li>
      <li>
        <a href="#">
        <img src="images/bartra1.PNG">
        Some text
        </a>
      </li>
       <li>
        <a href="#">
        Some text
        </a>
      </li>
    </ul>
  </div>
</div> 

</body>
</html>

我知道我可以对图像应用 class,并在 class 中设置高度:80px; 可行,但图像看起来有点拉伸。

知道为什么这对我不起作用,就像在 w3 示例中一样吗?

要修复列表项的高度,您需要覆盖一些默认值 css。

但是@jqmtricks 的解决方案在缩放缩略图以适应默认 80x80 框内的死点时保持纵横比,因此无论如何你都会有一个间隙,这对各种尺寸的缩略图都是最好的如果你有的话。

如果您希望缩略图为 80x80,无论图像的高度和宽度是否不相等

CSS

.ui-listview .ui-li-has-thumb>.ui-btn>img { 
max-width:80px !important;
width: 80px;
height: 80px;
}

演示

https://jsfiddle.net/bwfnpz0q/

结果

如果要保持纵横比并固定列表项的整体高度

CSS

.ui-li-has-thumb { // any list item that has a thumbnail
height:63px;
}
.ui-li-has-thumb .ui-btn-icon-right:after { // the arrow postion
margin-top:-18px;   
}

.ui-listview .ui-li-has-thumb>.ui-btn>img { //the thumnail size
max-width:100px !important;
width: 100px;
height: 60px;
}

演示

https://jsfiddle.net/cfvj992m/

结果

如果最后一个列表项有缩略图,则需要一些额外的 Css,因为它们的样式带有填充

CSS

 .ui-li-has-thumb, .ui-listview>li.ui-last-child>a.ui-btn { // as bove with also the last list item
 height:63px;
 }

.ui-last-child .ui-btn-icon-right:after { // last list items arrow
 margin-top:-11px !important;   
 }

.ui-li-has-thumb .ui-btn-icon-right:after {
margin-top:-18px;   
}

.ui-listview .ui-li-has-thumb>.ui-btn>img { 
max-width:100px !important;
width: 100px;
height: 60px;
}

ul li:last-child a { // last list items removing padding from top and bottom
 padding-bottom: 0px;
 padding-top:0px;
}

演示

https://jsfiddle.net/dfe14jpy/

结果