对垂直图像进行不同的样式设置,使它们并排运行
Styling vertical images differently so they run side-by-side
我正在建立一个图片库,并有水平和垂直图像。此时图像一个接一个地加载,垂直堆叠。
它在水平图像上工作得很好,但是一旦我在布局上有一个垂直图像,它就会拉伸以匹配水平图像的宽度,并且变得太高而不适合屏幕。
我正试图找到一个解决方案,始终对齐两个垂直图像并排。
这里有一些图形来说明我想要实现的目标:
图片<-抱歉我不能发布图片。
理想情况下会有一个只使用CSS的解决方案,但我认为这是不可能的。因此,我尝试使用一些jQuery。
$('.image-wrapper').prop('height', function(){
if($(this).height() > $(this).width()){
//portrait, resize accordingly
var width = $(this).width();
var height = $(this).height();
$(this).css({"width": "50%", "float": "left"});
});
这个解决方案的唯一问题是它没有考虑DIV的边距。而我却找不到补偿的方法。
这里是JSfiddle的链接
:
我已经调整了jQuery来测试之前的图像是否垂直,并在它们之间添加边距。我只是想知道这个解决方案有多可靠。
这里是[Fiddle][4]的链接
作为一个奖励,它将是伟大的,能够检查有多少垂直图像,我有一个序列和位置,所有他们并排。;)
谢谢!
选项1:
你提到你无法访问html。为了访问第n个元素的css,您可以使用第n- of-type(x)选择器。
以下是关于它的一些信息:http://www.w3schools.com/cssref/sel_nth-of-type.asp
只使用css,添加如下:
.image-wrapper:nth-of-type(2),.image-wrapper:nth-of-type(3){
float:left;
width:50%;
padding:0;
margin:0;
}
和删除你的js。这个应该可以了。
演示:http://jsfiddle.net/dsfa2bvu/39/
选项2:
使用Jquery,在每个图像中找到单词"vertical"。找到后,给它添加一个样式。
查找方法如下:
var x = $("img[src$='vertical-img']");
x.css("float","left");
演示:http://jsfiddle.net/dsfa2bvu/40/
这里有一个解决方案:
$('.thumb-image').each(function (i, obj) {
if ($(this).width() > $(this).eq(i + 1).width()) {
$('.thumb-image').slice(i + 1).each(function () {
$(this).css({
float: "left",
width: "50%",
padding: "0",
margin: "0"
});
});
}
});
小提琴编辑: http://jsfiddle.net/dsfa2bvu/41/
- jquery设置为使用参数运行
- 在jquery函数内部设置来自jquery函数的var;t运行
- 如何停止一个函数并将其他函数设置为在 html5 的 javascript 中加载时运行
- 立即运行设置间隔
- 在运行时用JavaScript设置函数的名称
- 一旦设置了PHP查询字符串,如何运行jQuery脚本
- 根据选中的按钮运行不同的计算时,设置单选按钮
- Angularjs,在运行时设置价值服务的值
- Grunt为任务设置选项,并使用新值运行该任务
- JQuery val()在设置表单值时引发运行时错误
- 设置为“run_at”document_start“的 Chrome 扩展程序运行速度太快
- 如何在运行时在 ngResource 查询方法中设置超时
- 设置设置间隔函数正在运行并导致浏览器崩溃
- Flask wtf.quick_form运行一些 JavaScript 并设置表单变量
- 在浏览器空闲后保持设置超时函数运行
- 为数组中的每个间隔 ID 再次运行设置间隔
- 如何防止在 Safari 中使用 javascript 设置高度后在页面加载时运行过渡
- 通过在运行时使用 CSS 设置其高度/宽度来拉伸 img 会产生奇怪的渐变
- 如果通过 ajax 调用 PHP 页面需要一段时间才能运行/返回(并且它设置了会话变量),则第二次 ajax 调用会看到
- 在不同的上下文中运行设置超时