图像在放入表格单元格布局时不再有响应
Image no longer responsive as put in table cell layout
我正在尝试将图像集中在一个站点上。由于我希望它在水平和垂直方向都居中,我使用了如下的表格/表格单元格布局:
<div id="mainContainer>
<div id="horizon">
<img src="url">
</div>
</div>
这里,mainContainer被设置为display:table,horizon被设置为display:table-cell。
不幸的是,当图像成为这个结构的一部分时,它不再按比例调整大小。一旦我将其移动到表格/表格单元格div中,它就会调整为原始大小(而不是按比例调整大小,因为最大宽度:100%和最高高度:100%)
请参阅:http://jsfiddle.net/U8KcN/
编辑:
我的坏。我只是想把问题简单化。我想为图像制作一个小幻灯片。这里的问题是,我不知道图像的大小(指的是其他人使用幻灯片)。因此,简单地说,我需要一个特定的CSS:1)如果图像的宽度和高度小于div的尺寸,则将图像垂直和水平居中在div中;2)如果图像大于div的尺寸(不需要添加,不知道它的宽度还是高度更大),则自动调整图像大小。
来源:OP评论
每次我听到有人谈论使用表的害处,然后看到他们用几乎相同的标记量——有时更多——用div创建一个完整的表结构,这真的让我很紧张。
顺便问一下,你有没有为那些想使用Wordpress这样的CMS在内容区进行自己布局的人开发过一个网站?几乎没有HTML知识的人能做到这一点的唯一方法是允许他们在Tiny MCE或其他编辑器中使用表格工具。所以,是的,桌子仍然很重要。
最近,我不得不为一位客户这样做,但表格单元格中的图像没有响应,并且随着屏幕尺寸的缩小而缩小。为了解决这个问题,我只需要添加到CSS中:
table {
table-layout: fixed;
}
现在,表格单元格中的图像相应地增长和缩小,水平滚动条不再出现。哦,当然你必须在你的表格宽度和td宽度中使用百分比。
去掉那些"CSS表"的东西,让它更容易一点怎么样?
<div style="width:auto;height:auto;margin:25%;text-align:center;vertical-align:middle">
<img src="URL">
</div>
至少,我会这样处理…
编辑:
请注意,我已经将CSS内联,以向您展示什么元素应该获得什么样式。在生产中,作为对这个答案的正确注释,您应该始终将样式与类代码分开。所以,实际上,你最终会得到这样的东西:
<style>
.centerimg {
width:auto;
height:auto;
margin:25%;
text-align:center;
vertical-align:middle
}
</style>
...
<div class="centerimg">
<img src="#">
</div>
编辑2:
在回复相关评论时,以下是使图像与其父图像成比例匹配的更新:
如果图像的宽度大于高度。。。
<style>
...
img{
max-width:100%;
height:auto
}
</style>
或者,如果图像的宽度小于高度。。。
<style>
...
img{
max-height:100%;
width:auto
}
</style>
编辑3:
看着你的小提琴,我想出了一个能像你想的那样工作的东西:
<style>
*{
width:100%;
height:100%;
margin:0;
text-align:center;
vertical-align:middle
}
img{
width:auto;
height:100%;
}
</style>
我已经拨出你的小提琴来显示更新:http://jsfiddle.net/LPrkb/1/
编辑3:
由于OP似乎无法决定他需要什么,由于他的最新评论,我添加了这个最终编辑。
你也可以在"mainContainer"上使用一个带有"background-size:content"的CSS背景图像,然后完成它…checkhttp://jsfiddle.net/HGpfJ/2/或者看看这个100%工作的例子,采用完全不同的方法,产生相同的效果/功能:
<!DOCTYPE HTML>
<html itemscope="itemscope" itemtype="http://schema.org/WebPage">
<head>
<title>Example</title>
<style>
html,body{width:100%;height:100%;margin:0;padding:0}
#centerimg{
width:100%;
height:100%;
background:transparent url(http://oi42.tinypic.com/v9g8i.jpg) no-repeat scroll center;
background-size:contain;
}
</style>
<body>
<div id="centerimg"></div>
</body>
</html>
让我们面对事实:根据您希望在文档结构中使图像"居中"的位置,有十几种方法可以做到这一点。
如果OP需要特定的代码,我们将需要OP的完整文档结构,而不是简单的"通用"代码片段,它可以在任何文档结构中的任何位置。
现在,使用表(display: table-cell
)进行布局是一种web开发反模式。尝试使用<span>
元素和display: inline-block
来垂直和水平居中图像,因为这种方法可以一直工作到IE 6。此外,如果你想根据容器调整图像大小,你可以将图像大小更改为百分比:
http://jsfiddle.net/hHWy8/1/
HTML:
<span class="horizontal">
<span class="vertical">
<img src="url" />
</span>
</span>
CSS:
span {
display: inline-block;
}
span.horizontal {
text-align: center;
width: 100%;
}
span.vertical {
vertical-align: middle;
border: 1px solid black; /* put a border on container for display purposes */
line-height: 1000px; /* this sets the vertical height */
overflow: hidden;
white-space: nowrap;
}
span.vertical img {
height: 50px; /* set your image height (could be percent) */
width: 50px; /* set your image width (could be percent) */
}
span.vertical br {
display: none;
}
要调整图像大小,可以使用以下css:
html,body,div,img{
height:100%;
}
img { width:100%}
它将html和正文的高度设置为100%,这是必需的,因此页面的高度占用所有可用空间
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 如何将getJson的响应保存在全局变量中
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 使用angularjs向浏览器发送servlet响应(下载功能)
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- 响应动画手风琴不工作
- 如何从SeleniumWebdriver获取异步Javascript响应
- Ajax调用在Firefox中不会自动响应
- 可以在响应时隐藏iphone上的“播放”按钮以进行视频播放
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 如何在 JavaScript 和 HTML 中更改对输入框的提示响应
- IIS动态HTTP响应标头
- 为什么我的附加组件面板的内容脚本在更改 contentURL 后不再响应端口消息
- 当响应式样式不再适用时删除类
- JavaScript 在页面收到 AJAX 响应后不再执行
- AJAX 问题:按钮不再响应
- Ajax调用(使用jquery)在5分钟后不再得到响应
- 在指令中使用scope后,我的网站不再响应