2016-08-20 86 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>

相關問題