如何在div中从右到左显示图像

Posted

技术标签:

【中文标题】如何在div中从右到左显示图像【英文标题】:How to display image in div from right to left 【发布时间】:2016-07-16 13:28:05 【问题描述】:

我必须根据日期一张一张地显示图像,每个图像之间都有一个箭头图像。像这样的东西: A->B->C->D

我将它显示在一个 div 上。

当有很多图像时会出现问题。 div 的宽度是恒定的,图像会像这样转到下一行:

A->B->C->D->
E->F->G->
H->I

在这种情况下,我希望显示这样的图像(这次请看箭头符号图像和图像流):

A->B->C->D->
G<-F<-E 
H->I

是否有内置控制或任何方法来实现这一点?

【问题讨论】:

float:right; ? jsfiddle.net/rayon_1990/8axvzp83 可能是个好主意。但是如何获取div的宽度以及如何应用如果箭头图像的宽度+其他图像宽度之和超过阈值宽度则反转图像显示流程的逻辑? 所有这些都只能使用 htmljavascript 来完成。 另请注意,我们不知道静态时图像和箭头的大小。 【参考方案1】:
<!doctype html>
<html lang="en">
<head>

<style>
  .floatRight 
  
  .clearBoth
    clear:both;
  
  .container
    width:100%;
  
  .container .floatRight
    float:right;
  width:9%;
  margin-right: 1%;
  background:#cdcdcd;

    height:100px;
  
</style>
</head>
<body>
<div class="container">
 <div class="floatRight">1</div>
<div class="floatRight">2</div>
<div class="floatRight">3</div>
<div class="floatRight">4</div>
<div class="floatRight">5</div>
<div class="floatRight">6</div>
<div class="floatRight">7</div>
<div class="floatRight">8</div>
<div class="floatRight">9</div>
<div class="floatRight">10</div>
<div class="clearBoth"></div>
</div>

</body>
</html>

【讨论】:

【参考方案2】:

JS + CSS

var correctDirection = function() 
  var direction = null;
  var lastTop = null;

  $('div').each(function() 
    var $entity = $(this);
    var top = $entity.offset().top;
    if (lastTop != top) 
        lastTop = top;
        direction = direction == 'ltr' ? 'rtl' : 'ltr';
    
    $entity.addClass(direction);
  );
;

correctDirection();
$(window).on('resize', correctDirection);
div 
  width: 100px;
  height: 100px;
  background: red;
  color: white;
  margin: 2px;
  float: left;
  position: relative;


div:after 
  position: absolute;
  color: green;
  top: 40%;


div.ltr 
  margin-right: 20px;


div.ltr:after 
  content: '→';
  right: -20%;


div.rtl 
  margin-left: 20px;
  float: right;


div.rtl:after 
  content: '←';
  left: -20%;


div:last-child:after 
  display: none;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>

【讨论】:

感谢您的回答。你能解释一下什么是 last 和 top 吗?如果你能解释一下你的逻辑和算法,我真的很感激?谢谢 direction 变量包含 css 类名:'rtl' 或 'ltr'。 lastTop 包含 div 元素的位置(从顶部偏移)。如果最后一个元素的位置(lastTop)和当前元素(top)的位置不同,则表示新行开始,我们需要改变方向。 非常感谢您的回答和帮助。但我对最重要的词感到困惑。我想到的是每次添加图像时,我都会获取它的宽度并将其与 div 的总宽度(包含这些图像)进行比较。如果总和 > 那么 div 的总宽度。然后我改变箭头方向和方向流。现在它与您的 top 逻辑有何不同?你能帮我解惑吗 在我的方法中,所有图像都已经在 DOM 中。加载文档时,我得到第一张图片,然后得到它的位置 - 从文档开头到 div 元素的距离 (top)。然后我将 css class 'ltr' 设置为第一个 div。之后 - 我得到第二张图像及其位置。如果第二张图像在另一行,则其顶部位置将与第一张图像不同。在这种情况下,我需要设置 css 类“rtl”。对于其他图像逻辑是相同的:如果行更改(顶部位置更改),我将类名更改为相反。对不起我的英语:)【参考方案3】:

您可以尝试将此添加到您的主要原始 div dir="rtl"

更多信息请阅读这里CSS Direction

【讨论】:

感谢答案,还请查看我希望拥有的输出类型(我需要处理 div 的宽度,如何获得它?如何知道添加时动态增加的 div 宽度图像并决定流必须是 ltr 或 rtl) 你可以使用this document.getElementById("yourDiv").offsetWidth;获取图像div的宽度,也可以获取主原始div,然后计算主div是否已满,为下一个div添加属性 dir $('div').attr('dir', 'rtl'); 这是主要思想,但可能与您的代码不同。

以上是关于如何在div中从右到左显示图像的主要内容,如果未能解决你的问题,请参考以下文章

在无限循环中从左到右,从右到左平移动画箭头图像

如何从右到左显示 RadListView

在gridLayout中从右到左放置项目

如何使用 CGAffineTransform Scale 从右到左添加动画和放大动画

R中从右到左的运算符关联性是不是可能?

在Xamarin android中从右向左滑动抽屉