javascript - 如何使图像适合整个 JQuery DataTable 单元格
问题描述
这是一个相当简单的问题,但不幸的是,我似乎无法在 DataTable 文档或 StackOverflow 上找到答案。
我正在尝试使图像适合我的 JQuery DataTable 的整个单元格。更准确地说,我试图让我的图像占据下面屏幕截图中绿色箭头所占据的空间。
我尝试了一些解决方案,例如使用cellspacing="0"
and cellpadding="0"
,以及使用浏览器的检查器来激活/停用一些链接到表格的 css 元素,但没有改变单元格内的填充。
这是我的 JS 代码,其中填充了表格并指定了列:
var table_dom = $('#table');
self.table = table.DataTable({
serverSide: true,
dom: "<'row'<'col-md-6'l><'col-md-6'f>>" +
"<'row'<'col-md-12'tr>>" +
"<'row'<'col-md-5'i><'col-md-7'p>>",
ajax: self.callUrl(),
columns: [
{
data: 'id',
name: 'id',
title: 'ID'
},
// ... some columns
{
data: 'some_data',
render: function (data) {
image = "<img src='http://www.dvd-ppt-slideshow.com/images/ppt-background/background-1.gif'/>";
return image ? `<div title="${data}" class="case-thumbnail aw-tooltip admin-tooltip">${image}</div>` : '';
},
name: 'some_image',
title: 'Image',
orderable: false
},
// ... more columns
],
order: [[0, 'desc']],
responsive: true,
pageLength: 10
});
这是我的带有表格容器的 HTML 代码:
<div class="col-md-12">
<table id="table" class="table table-bordered table-data table-responsive responsive" cellspacing="0" cellpadding="0" width="100%"></table>
</div>
欢迎任何解决方案。理想的解决方案是只影响该列的单元格,但如果该解决方案影响所有也可以工作的单元格。
干杯,伙计们。
编辑 1:
遵循@Andrei Gheorghiubackground: url('path/to/image') no-repeat center center /cover;
在类中使用的解决方案,有没有办法只使用我的渲染函数中的样式属性来做到这一点?我问是因为每一行的图像都不同,因此我需要为每个单元格动态分配它,而不是在它自己的 css 类中定义它。
这是我到目前为止的代码,目前不显示图像。我相信这是因为样式被应用于<div>
单元格内部而不是<td>
元素。那么有没有办法<td>
直接从我的 JS 代码中将样式应用于元素?
self.table = table.DataTable({
// ... table settings
columns: [
// ... some columns
{
data: 'some_data',
render: function (data) {
image = getImgUrl();
return image ? `<div title="${data}" class="class1 class2" style=" background-image: url('${image}') no-repeat center center /cover"></div>` : 'No image';
},
name: 'some_image',
title: 'Image',
orderable: false
},
// ... more columns
],
// ... table settings
});
编辑 2:
我已经走得更远了,发现当然如果<div>
为空,则不会显示背景。所以我尝试了一些事情,例如使用width: '100%'; height: '100%';
和添加
到 div 的内容。我现在可以显示背景,但它仍然不需要整个屏幕:
JS(从render
函数返回):
return `<div title="${data}" class="class1 class2" style="width: '100%'; height: '100%'; background: url('http://www.dvd-ppt-slideshow.com/images/ppt-background/background-1.gif') no-repeat center center /cover;)"> </div>`
截屏:
解决方案
当您想用您不使用的图像覆盖元素时<img>
。
您使用background-image
:
.yourBgImgClass {
background: url('path/to/image') no-repeat center center /cover;
}
它将覆盖元素,图像从顶部+底部或左侧+右侧均匀裁剪,而不会破坏图像纵横比。
推荐阅读
- google-chrome - google chrome 和 microsoft edge 上的 DNS 因 err_connection_timed_out 失败
- python - 我正在使用 Giphy API,我想知道如何自动获取 GIF 的图像 URL,而不是手动获取
- javascript - 如何在javascript中获取Google日历中单个日历的事件文本
- python - Python列表分配错误但打印正确的结果
- react-native - 列表项数据已填充,但数据未显示在平面列表中
- java - 有没有办法从文件中读取信息并使用此代码在另一个文件上打印出来?
- node.js - Mongodb 4+ findOneAndUpdate() returnNewDocument not working
- google-cloud-vision - 每个文本的 Google Cloud Vision 准确度返回 0.0
- c - posix_spawn 管道 dmesg 到 python 脚本
- github - 如何通过 github 操作或其他工具安排 pr 检查重新运行?