2016-08-20 107 views
0

我提出了一个视图 - staff1 - 在drupal 7中有四个响应视图行。每行包含下面的图像和文本;我有一个覆盖图像和文本位置相同的高度绝对在图像的中心。我通过jQuery来做到这一点。jQuery并不总是按顺序运行

简体版:

var imgHeight = $(".img").height(); 
 
var rowHeight = $(".wrapper").height() - $(".img").height(); 
 

 

 
$(".red-back").css("height", imgHeight); 
 
$(".wrapper").css("height", imgHeight).css("margin-bottom", rowHeight);
* { 
 
    box-sizing: border-box; 
 
} 
 
img { 
 
    max-width: 100% 
 
} 
 
.wrapper { 
 
    width: 25%; 
 
    float: left; 
 
    position: relative; 
 
    padding: 0 15px; 
 
} 
 
.img { 
 
    display: block; 
 
    line-height: 0; 
 
    position: relative; 
 
} 
 
.red-back { 
 
    content: ""; 
 
    position: absolute; 
 
    left: 0; 
 
    top: 0; 
 
    width: 100%; 
 
    background: #e74c3c; 
 
    visibility: hidden; 
 
    opacity: 0; 
 
} 
 
.wrapper:hover .red-back { 
 
    visibility: visible; 
 
    opacity: 0.75; 
 
} 
 
.text { 
 
    visibility: hidden; 
 
    position: absolute; 
 
    font-size: 80%; 
 
    top: 50%; 
 
    left: 50%; 
 
    transform: translate(-50%, 100%); 
 
    z-index: 5; 
 
    opacity: 0; 
 
    color: #333; 
 
} 
 
.wrapper:hover .text { 
 
    visibility: visible; 
 
    opacity: 1; 
 
    transform: translate(-50%, -50%); 
 
} 
 
.transition { 
 
    transition: all 0.4s; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="wrapper"> 
 
    <div class="text transition">Read Bio</div> 
 
    <div class="img"> 
 
    <img src="http://img.ffffound.com/static-data/assets/6/51cc46900bf5fe574293d49c4d9939e0ebfc8ee3_m.jpg" alt=""> 
 
    <div class="red-back transition"></div> 
 
    </div> 
 
    <div class="subtext">afweeawe</div> 
 
    <div class="subText2">feweffe</div> 
 
</div> 
 

 
<div class="wrapper"> 
 
    <div class="text transition">Read Bio</div> 
 
    <div class="img"> 
 
    <img src="http://img.ffffound.com/static-data/assets/6/51cc46900bf5fe574293d49c4d9939e0ebfc8ee3_m.jpg" alt=""> 
 
    <div class="red-back transition"></div> 
 
    </div> 
 
    <div class="subtext">afweeawe</div> 
 
    <div class="subText2">feweffe</div> 
 
</div> 
 

 
<div class="wrapper"> 
 
    <div class="text transition">Read Bio</div> 
 
    <div class="img"> 
 
    <img src="http://img.ffffound.com/static-data/assets/6/51cc46900bf5fe574293d49c4d9939e0ebfc8ee3_m.jpg" alt=""> 
 
    <div class="red-back transition"></div> 
 
    </div> 
 
    <div class="subtext">afweeawe</div> 
 
    <div class="subText2">feweffe</div> 
 
</div> 
 

 
<div class="wrapper"> 
 
    <div class="text transition">Read Bio</div> 
 
    <div class="img"> 
 
    <img src="http://img.ffffound.com/static-data/assets/6/51cc46900bf5fe574293d49c4d9939e0ebfc8ee3_m.jpg" alt=""> 
 
    <div class="red-back transition"></div> 
 
    </div> 
 
    <div class="subtext">afweeawe</div> 
 
    <div class="subText2">feweffe</div> 
 
</div>

有时候工作,其他时候不?我已经有几次高度是15px,但用Angular jQuery修复。

完整版本:

var imgHeight = $(".view-staff1 .views-field-colorbox img").height(); var rowHeight = $(".view-staff1 .views-row").height() - $(".view-staff1 .views-field-colorbox img").height();

$(".view-staff1 .views-row").css("height", imgHeight).css("margin-bottom", rowHeight); $(".view-staff1 .views-field-colorbox .red-back").css("height", imgHeight);

逻辑:

两个变量:

  1. imageHeight =图像高度
  2. rowHeigh t =父元素高度(包含图像和文本的包装),减去imageHeight

使包装等于imgHeight和margin-bottom到rowHeight。使覆盖高度等于imgHeight。

JSfiddle here

的问题是,有时jQuery的不会的东西的顺序运行,我得到imageHeight等于0像素。

+0

如果你只有那么为什么你喜欢做这使用jQuery的CSS这样做呢? –

+0

@MinalChauhan在这种情况下,我可以通过drupal视图中的重写函数使其工作。但是,在这种情况下,我不得不使用jQuery。 –

回答

1

我这样做只是使用CSS悬停效果。不需要Jquery。

添加position:relative父类

.view-staff1 .views-field-colorbox { 
    position: relative 
} 

* { 
 
    box-sizing: border-box; 
 
} 
 

 
body { 
 
    font-family: 'Lato', Georgia, "Times New Roman", Times, serif; 
 
    font-size: 16px; 
 
    line-height: 1.428571429; 
 
    color: #8f8f8f; 
 
    background: white; 
 
} 
 

 
img { 
 
    max-width: 100% 
 
} 
 

 
.view-staff1 .views-row { 
 
    font-size: 11px; 
 
    font-weight: 700; 
 
    line-height: 20px; 
 
    text-align: center; 
 
    padding: 0 15px 10px; 
 
    letter-spacing: 1px; 
 
    text-transform: uppercase; 
 
    width: 25%; 
 
    float: left; 
 
    position: relative; 
 
} 
 

 
.view-staff1 .views-field-title { 
 
    margin: 25px 0 0; 
 
    color: #2a2a2a; 
 
    letter-spacing: 2px; 
 
    text-transform: uppercase; 
 
    font: 700 130% "Lato", Georgia, "Times New Roman", Times, serif; 
 
} 
 

 
.view-staff1 .views-field-title-1 { 
 
    visibility: hidden; 
 
    position: absolute; 
 
    top: 35%; 
 
    left: 50%; 
 
    -webkit-transform: translate(-50%, -50%); 
 
    transform: translate(-50%, 50%); 
 
    z-index: 5; 
 
    -webkit-transition: all 0.4s ease; 
 
    transition: all 0.4s ease; 
 
    opacity: 0; 
 
    cursor: pointer; 
 
    pointer-events: none; 
 
} 
 

 
.view-staff1 .views-row:hover .views-field-title-1 { 
 
    visibility: visible; 
 
    opacity: 1; 
 
    -webkit-transform: translate(-50%, -50%); 
 
    transform: translate(-50%, -50%); 
 
} 
 

 
.view-staff1 .views-field-title-1 .fa-info:before { 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 50%; 
 
    -webkit-transform: translate(-50%, -50%); 
 
    transform: translate(-50%, -50%); 
 
    font-size: 130%; 
 
    /* transition: all 0.4s ease;*/ 
 
} 
 

 
.view-staff1 .views-field-title-1 .fa-info { 
 
    border-radius: 50%; 
 
    width: 30px; 
 
    height: 30px; 
 
    border: 2px solid transparent; 
 
    -webkit-transition: all 0.4s ease; 
 
    transition: all 0.4s ease; 
 
    color: #fff; 
 
    border-color: #fff; 
 
    position: relative; 
 
    -webkit-transition: all 0.4s; 
 
    transition: all 0.4s; 
 
} 
 
.view-staff1 .views-field-colorbox{ 
 
    position:relative; 
 
} 
 
.view-staff1 .views-field-colorbox .red-back { 
 
    content: ""; 
 
    position: absolute; 
 
    left: 0; 
 
    bottom: 0; 
 
// margin: 0 15px; 
 
    -webkit-transition: all 0.4s; 
 
    transition: all 0.4s; 
 
    background: #e74c3c; 
 
    visibility: hidden; 
 
    opacity: 0; 
 
    height:100%; 
 
    width:100%; 
 
} 
 

 
.view-staff1 .views-row:hover .views-field-colorbox .red-back { 
 
    visibility: visible; 
 
    opacity: 0.75; 
 
// height:100%; 
 
} 
 

 

 
.view-staff1 .views-field-colorbox a { 
 
    display: block; 
 
    line-height: 0; 
 
} 
 

 
.view-staff1 .views-field-title-1 .bio { 
 
// margin-left: 5px; 
 
    font-size: 140%; 
 
    position: relative; 
 
// -webkit-transform: translate(0, -50%); 
 
// transform: translate(0, -50%); 
 
    display: inline-block; 
 
// -webkit-transition: all 0.4s; 
 
// transition: all 0.4s; 
 
    color: #fff; 
 
    vertical-align:middle 
 
} 
 

 
.view-staff1 .views-field-title-1 .bio:after { 
 
    content: ""; 
 
    height: 2px; 
 
    margin-top: 2px; 
 
    position: absolute; 
 
    -webkit-transition: all .2s; 
 
    transition: all .2s; 
 
    width: 0; 
 
    bottom: -2px; 
 
    background: #9E251B; 
 
    left: 0; 
 
} 
 

 
.view-staff1 .views-field-title-1.hover .bio:after { 
 
    width: 100%; 
 
}
<div class="view-staff1"> 
 

 

 
    <div class="views-row"> 
 
    <div class="views-field views-field-title-1"> 
 
     <span class="field-content"> 
 
      <div class="bio">Read Bio</div></span> </div> 
 
    <div class="views-field views-field-colorbox"> 
 
     <span class="field-content"> 
 
       <a href="#" class="colorbox-inline init-colorbox-inline-processed cboxElement" rel="gallery-staff1"> 
 
        <img typeof="foaf:Image" class="image-style-simple-crop" src="http://img.ffffound.com/static-data/assets/6/51cc46900bf5fe574293d49c4d9939e0ebfc8ee3_m.jpg" alt=""> 
 
        <div class="red-back"></div> 
 
       </a> 
 
      </span> 
 
    </div> 
 
    <div class="views-field views-field-title"> 
 
     <span class="field-content">afweeawe</span> 
 
    </div> 
 
    <div class="views-field views-field-field-title"> 
 
     <div class="field-content">feweffe</div> 
 
    </div> 
 
    </div> 
 

 
    <div class="views-row"> 
 
    <div class="views-field views-field-title-1"> 
 
     <span class="field-content"> 
 
      <div class="bio">Read Bio</div></span> </div> 
 
    <div class="views-field views-field-colorbox"> 
 
     <span class="field-content"> 
 
       <a href="#" class="colorbox-inline init-colorbox-inline-processed cboxElement" rel="gallery-staff1"> 
 
        <img typeof="foaf:Image" class="image-style-simple-crop" src="http://img.ffffound.com/static-data/assets/6/51cc46900bf5fe574293d49c4d9939e0ebfc8ee3_m.jpg" alt=""> 
 
        <div class="red-back"></div> 
 
       </a> 
 
      </span> 
 
    </div> 
 
    <div class="views-field views-field-title"> 
 
     <span class="field-content">afweeawe</span> 
 
    </div> 
 
    <div class="views-field views-field-field-title"> 
 
     <div class="field-content">feweffe</div> 
 
    </div> 
 
    </div> 
 

 
    <div class="views-row"> 
 
    <div class="views-field views-field-title-1"> 
 
     <span class="field-content"> 
 
      <div class="bio">Read Bio</div></span> </div> 
 
    <div class="views-field views-field-colorbox"> 
 
     <span class="field-content"> 
 
       <a href="#" class="colorbox-inline init-colorbox-inline-processed cboxElement" rel="gallery-staff1"> 
 
        <img typeof="foaf:Image" class="image-style-simple-crop" src="http://img.ffffound.com/static-data/assets/6/51cc46900bf5fe574293d49c4d9939e0ebfc8ee3_m.jpg" alt=""> 
 
        <div class="red-back"></div> 
 
       </a> 
 
      </span> 
 
    </div> 
 
    <div class="views-field views-field-title"> 
 
     <span class="field-content">afweeawe</span> 
 
    </div> 
 
    <div class="views-field views-field-field-title"> 
 
     <div class="field-content">feweffe</div> 
 
    </div> 
 
    </div> 
 

 
    <div class="views-row"> 
 
    <div class="views-field views-field-title-1"> 
 
     <span class="field-content"> 
 
      <div class="bio">Read Bio</div></span> </div> 
 
    <div class="views-field views-field-colorbox"> 
 
     <span class="field-content"> 
 
       <a href="#" class="colorbox-inline init-colorbox-inline-processed cboxElement" rel="gallery-staff1"> 
 
        <img typeof="foaf:Image" class="image-style-simple-crop" src="http://img.ffffound.com/static-data/assets/6/51cc46900bf5fe574293d49c4d9939e0ebfc8ee3_m.jpg" alt=""> 
 
        <div class="red-back"></div> 
 
       </a> 
 
      </span> 
 
    </div> 
 
    <div class="views-field views-field-title"> 
 
     <span class="field-content">afweeawe</span> 
 
    </div> 
 
    <div class="views-field views-field-field-title"> 
 
     <div class="field-content">feweffe</div> 
 
    </div> 
 
    </div> 
 
</div>

+0

伟大的工作,打我吧!尽管如此,//不会在CSS中发表评论。虽然这可能是最好的答案,但我会在稍后奖励你,因为我想知道为什么我的jQuery不起作用。 –

+0

对不起,我只是意识到它没有响应。发布响应式代码。 –

0

我想知道我做错了什么,但我也得到了这个理论铭记工作:

position: absolute; top: 0; bottom: 0;上的图像包装:之后,position: relative上的包装,并且还将文本移动到图像包装的包装:后。

JS fiddle

* { 
 
    box-sizing: border-box; 
 
} 
 
body { 
 
    font-family: 'Lato', Georgia, "Times New Roman", Times, serif; 
 
    font-size: 16px; 
 
    line-height: 1.428571429; 
 
    color: #8f8f8f; 
 
    background: white; 
 
} 
 
img { 
 
    max-width: 100% 
 
} 
 
.view-staff1 .views-row { 
 
    font-size: 11px; 
 
    font-weight: 700; 
 
    line-height: 20px; 
 
    text-align: center; 
 
    padding: 0 15px 10px; 
 
    letter-spacing: 1px; 
 
    text-transform: uppercase; 
 
    width: 25%; 
 
    float: left; 
 
    position: relative; 
 
} 
 
.view-staff1 .views-field-title { 
 
    margin: 25px 0 0; 
 
    color: #2a2a2a; 
 
    letter-spacing: 2px; 
 
    text-transform: uppercase; 
 
    font: 700 130%"Lato", Georgia, "Times New Roman", Times, serif; 
 
} 
 
.view-staff1 .views-field-title-1 { 
 
    visibility: hidden; 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 50%; 
 
    -webkit-transform: translate(-50%, 50%); 
 
    transform: translate(-50%, 50%); 
 
    z-index: 5; 
 
    -webkit-transition: all 0.4s ease; 
 
    transition: all 0.4s ease; 
 
    opacity: 0; 
 
    cursor: pointer; 
 
    pointer-events: none; 
 
} 
 
.view-staff1 .views-row:hover .views-field-title-1 { 
 
    visibility: visible; 
 
    opacity: 1; 
 
    -webkit-transform: translate(-50%, -50%); 
 
    transform: translate(-50%, -50%); 
 
} 
 
.view-staff1 .views-field-colorbox { 
 
    position: relative 
 
} 
 
.view-staff1 .views-field-colorbox a { 
 
    line-height: 0; 
 
    display: block; 
 
} 
 
.view-staff1 .views-field-colorbox a:after { 
 
    content: ""; 
 
    position: absolute; 
 
    left: 0; 
 
    top: 0; 
 
    bottom: 0; 
 
    width: 100%; 
 
    -webkit-transition: all 0.4s; 
 
    transition: all 0.4s; 
 
    background: #e74c3c; 
 
    visibility: hidden; 
 
    opacity: 0; 
 
} 
 
.view-staff1 .views-row:hover .views-field-colorbox a:after { 
 
    visibility: visible; 
 
    opacity: 0.75; 
 
} 
 
.view-staff1 .views-field-colorbox .field-content:after { 
 
    content: "Read More"; 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 50%; 
 
    font-size: 140%; 
 
    -webkit-transform: translate(-50%, -50%); 
 
    transform: translate(-50%, 150%); 
 
    -webkit-transition: all 0.4s; 
 
    transition: all 0.4s; 
 
    color: #fff; 
 
    opacity: 0; 
 
} 
 
.view-staff1 .views-row:hover .views-field-colorbox .field-content:after { 
 
    visibility: visible; 
 
    opacity: 1; 
 
    -webkit-transform: translate(-50%, -50%); 
 
    transform: translate(-50%, -50%);
<div class="view-staff1"> 
 

 
    <div class="views-row"> 
 
    <div class="views-field views-field-colorbox"> 
 
     <span class="field-content"> 
 
       <a href="#" class="colorbox-inline init-colorbox-inline-processed cboxElement" rel="gallery-staff1"> 
 
        <img typeof="foaf:Image" class="image-style-simple-crop" src="http://img.ffffound.com/static-data/assets/6/51cc46900bf5fe574293d49c4d9939e0ebfc8ee3_m.jpg" alt=""> 
 
       </a> 
 
      </span> 
 
    </div> 
 
    <div class="views-field views-field-title"> 
 
     <span class="field-content">afweeawe</span> 
 
    </div> 
 
    <div class="views-field views-field-field-title"> 
 
     <div class="field-content">feweffe</div> 
 
    </div> 
 
    </div> 
 
    <div class="views-row"> 
 
    <div class="views-field views-field-colorbox"> 
 
     <span class="field-content"> 
 
       <a href="#" class="colorbox-inline init-colorbox-inline-processed cboxElement" rel="gallery-staff1"> 
 
        <img typeof="foaf:Image" class="image-style-simple-crop" src="http://img.ffffound.com/static-data/assets/6/51cc46900bf5fe574293d49c4d9939e0ebfc8ee3_m.jpg" alt=""> 
 
       </a> 
 
      </span> 
 
    </div> 
 
    <div class="views-field views-field-title"> 
 
     <span class="field-content">afweeawe</span> 
 
    </div> 
 
    <div class="views-field views-field-field-title"> 
 
     <div class="field-content">feweffe</div> 
 
    </div> 
 
    </div> 
 
    <div class="views-row"> 
 
    <div class="views-field views-field-colorbox"> 
 
     <span class="field-content"> 
 
       <a href="#" class="colorbox-inline init-colorbox-inline-processed cboxElement" rel="gallery-staff1"> 
 
        <img typeof="foaf:Image" class="image-style-simple-crop" src="http://img.ffffound.com/static-data/assets/6/51cc46900bf5fe574293d49c4d9939e0ebfc8ee3_m.jpg" alt=""> 
 
       </a> 
 
      </span> 
 
    </div> 
 
    <div class="views-field views-field-title"> 
 
     <span class="field-content">afweeawe</span> 
 
    </div> 
 
    <div class="views-field views-field-field-title"> 
 
     <div class="field-content">feweffe</div> 
 
    </div> 
 
    </div> 
 
    <div class="views-row"> 
 
    <div class="views-field views-field-colorbox"> 
 
     <span class="field-content"> 
 
       <a href="#" class="colorbox-inline init-colorbox-inline-processed cboxElement" rel="gallery-staff1"> 
 
        <img typeof="foaf:Image" class="image-style-simple-crop" src="http://img.ffffound.com/static-data/assets/6/51cc46900bf5fe574293d49c4d9939e0ebfc8ee3_m.jpg" alt=""> 
 
       </a> 
 
      </span> 
 
    </div> 
 
    <div class="views-field views-field-title"> 
 
     <span class="field-content">afweeawe</span> 
 
    </div> 
 
    <div class="views-field views-field-field-title"> 
 
     <div class="field-content">feweffe</div> 
 
    </div> 
 
    </div> 
 
</div>