2017-01-16 4 views
1

Я создал четыре окна, и когда один из ящиков щелкнул или выбрал зависание, он создает дополнительные отступы или поля, которые перекрывают другие поля.Margin/padding hover with pseudo element issue

Я пробовал делать:

.marketing-service.active { 
    margin: 0; 
} 

и

.marketing-service.active:hover { 
    margin: 0; 
} 

Но оба были неудачные попытки. При просмотре фрагмента или Jsfddle убедитесь, что по крайней мере одно окно находится во второй строке и щелкните по первому полю, а затем наведите указатель мыши на него.

Что я могу сделать, чтобы все ящики остались в исходном месте, но устранить лишний интервал, который вызывает стрелка вниз?

$('#marketing-tab1').addClass('active'); 
 
\t $('#marketing1').show(); 
 
    
 
    $('.marketing-service').click(function() { 
 
\t \t $('.marketing-service.active').removeClass('active'); 
 
\t \t $(this).toggleClass('active'); 
 
\t \t 
 
\t \t //To get the service display box to show 
 
\t \t var item_number = $(this).attr('id').replace('marketing-tab', ''); 
 
\t \t /* $('html, body').animate({ 
 
\t \t scrollTop: $("#service-display-box").offset().top 
 
\t }, 1500);*/ 
 
\t \t $('#marketing'+item_number).show().siblings('.marketing-service-section').hide(); 
 
\t });
#marketing-services { 
 
    width: 80%; 
 
    margin: 0 10%; 
 
} 
 

 
.marketing-service { 
 
    display: inline-block; 
 
    width: 22%; 
 
    margin: 0 2%; 
 
    height: 400px; 
 
    background: #F0F0F0; 
 
    position: relative; 
 
    cursor: pointer; 
 
} 
 

 
.marketing-service:first-child { 
 
    margin-left: 0; 
 
} 
 

 
.marketing-service:last-child { 
 
    margin-right: 0; 
 
} 
 

 
.marketing-service:hover { 
 
    background: rgba(0, 255, 170, .4); 
 
    z-index: 1; 
 
} 
 

 
.marketing-service-wrap { 
 
    padding: 10%; 
 
    width: 80%; 
 
} 
 

 
.marketing-service-title { 
 
    font-size: 1.6em; 
 
    margin-bottom: 100px; 
 
} 
 

 
.marketing-img { 
 
    width: 125px; 
 
    height: 125px; 
 
} 
 

 

 
/*-- Down Arrow for boxes --*/ 
 

 
.marketing-service.active, 
 
#marketing-tab1.active { 
 
    background: rgba(0, 255, 170, .4); 
 
} 
 

 
.marketing-service.active:after, 
 
.marketing-service.active:before, 
 
#marketing-tab1.active:after, 
 
#marketing-tab1.active:before { 
 
    top: 100%; 
 
    left: 50%; 
 
    border: solid transparent; 
 
    content: " "; 
 
    height: 0; 
 
    width: 0; 
 
    position: absolute; 
 
} 
 

 
.marketing-service.active:after, 
 
#marketing-tab1.active:after { 
 
    border-width: 0px; 
 
    margin-left: 0px; 
 
    border-color: rgba(0, 255, 170, .4); 
 
    border-right-color: rgba(0, 255, 170, .4); 
 
    margin-top: -30px; 
 
} 
 

 
.marketing-service.active:before, 
 
#marketing-tab1.active:before { 
 
    border-color: #FFF; 
 
    border-top-color: rgba(0, 255, 170, .4); 
 
    border-width: 36px; 
 
    margin-left: -36px; 
 
    margin-top: 0; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="marketing-services"> 
 
    <div class="marketing-service" id="marketing-tab1"> 
 
    <div class="marketing-service-wrap total-center"> 
 
     <h2 class="marketing-service-title">A</h2> 
 
     <img src="../images/marketing-seo.png" class="marketing-img"> 
 
    </div> 
 
    </div> 
 
    <div class="marketing-service" id="marketing-tab2"> 
 
    <div class="marketing-service-wrap total-center"> 
 
     <h2 class="marketing-service-title">B</h2> 
 
     <img src="../images/marketing-ppc.png" class="marketing-img"> 
 
    </div> 
 
    </div> 
 
    <div class="marketing-service" id="marketing-tab3"> 
 
    <div class="marketing-service-wrap total-center"> 
 
     <h2 class="marketing-service-title">C</h2> 
 
     <img src="../images/marketing-conversion.png" class="marketing-img"> 
 
    </div> 
 
    </div> 
 
    <div class="marketing-service" id="marketing-tab4"> 
 
    <div class="marketing-service-wrap total-center"> 
 
     <h2 class="marketing-service-title">D</h2> 
 
     <img src="../images/marketing-email.png" class="marketing-img"> 
 
    </div> 
 
    </div> 
 
</div>

+0

так что вы хотите, чтобы удалить пустое пространство вокруг стрелки, но хотите, чтобы появиться стрелка? – ab29007

+0

@kittyCat Да, точно. – Paul

ответ

1

Удалить border-color:fff. редактировать это в вашем CSS:

.marketing-service.active:before, 
#marketing-tab1.active:before { 
    border-color: transparent; 
    border-top-color: rgba(0, 255, 170, .4); 
    border-width: 36px; 
    margin-left: -36px; 
    margin-top: 0; 
} 

Вот рабочий фрагмент:

$('#marketing-tab1').addClass('active'); 
 
\t $('#marketing1').show(); 
 
    
 
    $('.marketing-service').click(function() { 
 
\t \t $('.marketing-service.active').removeClass('active'); 
 
\t \t $(this).toggleClass('active'); 
 
\t \t 
 
\t \t //To get the service display box to show 
 
\t \t var item_number = $(this).attr('id').replace('marketing-tab', ''); 
 
\t \t /* $('html, body').animate({ 
 
\t \t scrollTop: $("#service-display-box").offset().top 
 
\t }, 1500);*/ 
 
\t \t $('#marketing'+item_number).show().siblings('.marketing-service-section').hide(); 
 
\t });
#marketing-services { 
 
    width: 80%; 
 
    margin: 0 10%; 
 
} 
 

 
.marketing-service { 
 
    display: inline-block; 
 
    width: 22%; 
 
    margin: 0 2%; 
 
    height: 400px; 
 
    background: #F0F0F0; 
 
    position: relative; 
 
    cursor: pointer; 
 
} 
 

 
.marketing-service:first-child { 
 
    margin-left: 0; 
 
} 
 

 
.marketing-service:last-child { 
 
    margin-right: 0; 
 
} 
 

 
.marketing-service:hover { 
 
    background: rgba(0, 255, 170, .4); 
 
    z-index: 1; 
 
} 
 

 
.marketing-service-wrap { 
 
    padding: 10%; 
 
    width: 80%; 
 
} 
 

 
.marketing-service-title { 
 
    font-size: 1.6em; 
 
    margin-bottom: 100px; 
 
} 
 

 
.marketing-img { 
 
    width: 125px; 
 
    height: 125px; 
 
} 
 

 

 
/*-- Down Arrow for boxes --*/ 
 

 
.marketing-service.active, 
 
#marketing-tab1.active { 
 
    background: rgba(0, 255, 170, .4); 
 
} 
 

 
.marketing-service.active:after, 
 
.marketing-service.active:before, 
 
#marketing-tab1.active:after, 
 
#marketing-tab1.active:before { 
 
    top: 100%; 
 
    left: 50%; 
 
    border: solid transparent; 
 
    content: " "; 
 
    height: 0; 
 
    width: 0; 
 
    position: absolute; 
 
} 
 

 
.marketing-service.active:after, 
 
#marketing-tab1.active:after { 
 
    border-width: 0px; 
 
    margin-left: 0px; 
 
    border-color: rgba(0, 255, 170, .4); 
 
    border-right-color: rgba(0, 255, 170, .4); 
 
    margin-top: -30px; 
 
} 
 

 
.marketing-service.active:before, 
 
#marketing-tab1.active:before { 
 
    border-color: transparent; 
 
    border-top-color: rgba(0, 255, 170, .4); 
 
    border-width: 36px; 
 
    margin-left: -36px; 
 
    margin-top: 0; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="marketing-services"> 
 
    <div class="marketing-service" id="marketing-tab1"> 
 
    <div class="marketing-service-wrap total-center"> 
 
     <h2 class="marketing-service-title">A</h2> 
 
     <img src="../images/marketing-seo.png" class="marketing-img"> 
 
    </div> 
 
    </div> 
 
    <div class="marketing-service" id="marketing-tab2"> 
 
    <div class="marketing-service-wrap total-center"> 
 
     <h2 class="marketing-service-title">B</h2> 
 
     <img src="../images/marketing-ppc.png" class="marketing-img"> 
 
    </div> 
 
    </div> 
 
    <div class="marketing-service" id="marketing-tab3"> 
 
    <div class="marketing-service-wrap total-center"> 
 
     <h2 class="marketing-service-title">C</h2> 
 
     <img src="../images/marketing-conversion.png" class="marketing-img"> 
 
    </div> 
 
    </div> 
 
    <div class="marketing-service" id="marketing-tab4"> 
 
    <div class="marketing-service-wrap total-center"> 
 
     <h2 class="marketing-service-title">D</h2> 
 
     <img src="../images/marketing-email.png" class="marketing-img"> 
 
    </div> 
 
    </div> 
 
</div>

+0

Ничего себе такой простой пересмотр. Спасибо за помощь! – Paul

+0

@ Paul, я отредактировал свой ответ, если последняя версия моего ответа не работает нормально, попробуйте новый. Также, пожалуйста, не забудьте принять ответ. – ab29007