jcarousel如何垂直居中项目

时间:2013-04-04 21:07:33

标签: jquery css asp.net-mvc-3 jcarousel

我正在接管使用jQuery(所有新技术)的ASP.NET MVC 3 C#Razor网站的维护。我的jcarousel中的项目是各种尺寸的缩略图。我希望它们在旋转木马中垂直居中,但我无法弄清楚如何实现这一目标。

我尝试将vertical-align: middle;放在不同的地方,但没有效果。我想问题是我对网络开发很陌生并且遗漏了一些明显的东西,但是我已经花了几个小时,所以我终于向这个出色的社区寻求帮助了!

如何让我的图像在旋转木马中垂直居中?

以下是我的观点中的代码:

<ul id="screenshot-carousel" class="jcarousel-skin-tango">
  @{ string[,] screenshots = ViewBag.Screenshots; }
  @for (int i = 0; i < screenshots.GetLength(0); i++)
  {
    <li><a class="screenshot" href="@Url.Content("~/Content/images/map-creator/" + screenshots[i, 0] + ".jpg")" title="@screenshots[i, 1]">
      <img src="@Url.Content("~/Content/images/map-creator/" + screenshots[i, 0] + "_t.jpg")" width="@screenshots[i, 2] " height="@screenshots[i, 3] " alt="@screenshots[i, 1]" /></a></li>
  }
</ul>
@section HtmlHead
{
  <style type="text/css">
/**
 * Overwrite for having a carousel with dynamic width.
 */
.jcarousel-skin-tango .jcarousel-container-horizontal {
    width: 85%;
}

.jcarousel-skin-tango .jcarousel-clip-horizontal {
    width: 100%;
}

.jcarousel-skin-tango .jcarousel-item {
    width: auto;
    height: auto;
}

.jcarousel-skin-tango .jcarousel-item-horizontal {
    margin-left: 0;
    margin-right: 3px;
}

    a.screenshot img {
      border: 1px solid #aaa;
    }
  </style>
  <script type="text/javascript">
      $(document).ready(function () {
          $('#screenshot-carousel').jcarousel();

          $(".screenshot").colorbox({
              rel: 'screenshot',
              width: "1200",
              height: "600",
              current: "{current} of {total}"
          });
      });    
  </script>

这里是jcarousel \ tango \ skin.css中的非按钮轮播内容(请注意,其中一些也出现在视图中的代码中,我认为这意味着视图中的代码会覆盖此代码):

.jcarousel-skin-tango .jcarousel-container {
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
   border-radius: 10px;
    background: #F0F6F9;
    border: 1px solid #346F97;
}

.jcarousel-skin-tango .jcarousel-direction-rtl {
    direction: rtl;
}

.jcarousel-skin-tango .jcarousel-container-horizontal {
    width: 245px;
    padding: 20px 40px;
}

.jcarousel-skin-tango .jcarousel-container-vertical {
    width: 75px;
    height: 245px;
    padding: 40px 20px;
}

.jcarousel-skin-tango .jcarousel-clip {
    overflow: hidden;
}

.jcarousel-skin-tango .jcarousel-clip-horizontal {
    width:  245px;
    height: 75px;
}

.jcarousel-skin-tango .jcarousel-clip-vertical {
    width:  75px;
    height: 245px;
}

.jcarousel-skin-tango .jcarousel-item {
    width: 75px;
    height: 75px;
}

.jcarousel-skin-tango .jcarousel-item-horizontal {
    margin-left: 0;
    margin-right: 10px;
}

.jcarousel-skin-tango .jcarousel-direction-rtl .jcarousel-item-horizontal {
    margin-left: 10px;
    margin-right: 0;
}

.jcarousel-skin-tango .jcarousel-item-vertical {
    margin-bottom: 10px;
}

.jcarousel-skin-tango .jcarousel-item-placeholder {
    background: #fff;
    color: #000;
}

3 个答案:

答案 0 :(得分:1)

我知道这是相当陈旧的甚至jcarousel发生了重大变化,但我建议你好 //Handler which receives the message static Handler myHandler = new Handler() { public void handleMessage(Message msg) { Bundle bundle = msg.getData(); String str1 = bundle.getString("dot"); String str2 = bundle.getString("dash"); //I think i need to use a conditional statement here } }; //Logic done within the worker thread for (int i = 0; i < cArray.length; i++) { if (cArray[i] == '.') { msg = new Message(); bundle = new Bundle(); bundle.putString("dot", "dot dot dot"); msg.setData(bundle); Sos.myHandler.sendMessage(msg); try { Thread.sleep(50); }catch(Exception e) { } try { Thread.sleep(offIntervalTime); }catch(Exception e) { } } else if(cArray[i] == ' ') { try{ Thread.sleep(100); }catch(Exception e) { } } else { msg = new Message(); bundle = new Bundle(); bundle.putString("dash", "dash dash dash"); msg.setData(bundle); Sos.myHandler.sendMessage(msg); try{ Thread.sleep(dash); }catch(Exception e) { } try{ Thread.sleep(offIntervalTime); }catch(Exception e) { } } }

display: table-cell

答案 1 :(得分:0)

我在我的视图文件中更改了以下css,它适用于Chrome。设置行高和垂直对齐似乎就是这样做的。仍然无法在IE10上运行,所以我开始认为IE10是不可能的。如果有人有更好的答案,请发帖,我会接受而不是我的!

.jcarousel-skin-tango .jcarousel-clip-horizontal {
    width: 100%;
    height: 100%;
}

.jcarousel-skin-tango .jcarousel-item {
    width: auto;
}

.jcarousel-skin-tango .jcarousel-item-horizontal {
    margin-left: 0;
    margin-right: 3px;
    height: auto;
    line-height: 80px;
}

a.screenshot img {
  border: 1px solid #aaa;
  vertical-align: middle;
}

答案 2 :(得分:0)

我离开了我的另一个答案,以防它可以帮助某人,但我现在找到了一个更好的答案,适用于IE10和Chrome(尽管Chrome的中心可能不完美,但对我来说已经足够接近了)。在我的img中设置line-heightvertical-align属性而不是设置适当的上边距,即(LARGEST_IMAGE_HEIGHT - IMAGE_HEIGHT)/ 2.我在控制器中计算该值并传递值在每个图像的视图中。

所以视图中的修复是将样式添加到img元素:

<img src="@Url.Content("~/Content/images/map-creator/" + screenshots[i, 0] + "_t.jpg")" width="@screenshots[i, 2]" alt="@screenshots[i, 1]" style="margin-top:@screenshots[i, 4]" />