2016-07-21 3 views
19

По какой-то причине между моими трапециями есть место.Удалите пространство между двумя трапециями

#trapezoid { 
 
    margin-top: 100px; 
 
\t border-bottom: 100px solid red; 
 
\t border-left: 20px solid transparent; 
 
\t border-right: 20px solid transparent; 
 
\t height: 0; 
 
\t width: 200px; 
 
    transform:rotate(90deg); 
 
    float: left; 
 
} 
 

 
#trapezoid2 { 
 
    margin-top: 100px; 
 
\t border-bottom: 100px solid red; 
 
\t border-left: 20px solid transparent; 
 
\t border-right: 20px solid transparent; 
 
\t height: 0; 
 
\t width: 200px; 
 
    transform:rotate(-90deg); 
 
    float: left; 
 
}
<div id="trapezoid2"></div> 
 
<div id="trapezoid"></div>

Есть ли способ, чтобы удалить пространство без использования отрицательного запаса?

ответ

9

Это потому, что элементы все еще сохраняют поток DOM, когда вы делаете transform:rotate(-90deg);. Если вы удалите его, вы увидите, что на самом деле касаются два div. Вы можете перемещать второй элемент, чтобы уменьшить разрыв.

#trapezoid { 
 
    margin-top: 100px; 
 
    border-bottom: 100px solid red; 
 
    border-left: 20px solid transparent; 
 
    border-right: 20px solid transparent; 
 
    height: 0; 
 
    width: 200px; 
 
    transform: rotate(90deg); 
 
    float: left; 
 
    
 
    /* Added code */ 
 
    position: relative; 
 
    right: 140px; 
 
} 
 
#trapezoid2 { 
 
    margin-top: 100px; 
 
    border-bottom: 100px solid red; 
 
    border-left: 20px solid transparent; 
 
    border-right: 20px solid transparent; 
 
    height: 0; 
 
    width: 200px; 
 
    transform: rotate(-90deg); 
 
    float: left; 
 
}
<div id="trapezoid2"></div> 
 
<div id="trapezoid"></div>

+0

Где 140px взялось? – kulan

3

Этот разрыв существует из-за width и transform: rotate, но вы можете использовать translateY, чтобы исправить это.

#trapezoid { 
 
    margin-top: 100px; 
 
    border-bottom: 100px solid red; 
 
    border-left: 20px solid transparent; 
 
    border-right: 20px solid transparent; 
 
    height: 0; 
 
    width: 200px; 
 
    transform: rotate(90deg) translateY(70px); 
 
    float: left; 
 
} 
 
#trapezoid2 { 
 
    margin-top: 100px; 
 
    border-bottom: 100px solid red; 
 
    border-left: 20px solid transparent; 
 
    border-right: 20px solid transparent; 
 
    height: 0; 
 
    width: 200px; 
 
    transform: rotate(-90deg) translateY(70px); 
 
    float: left; 
 
}
<div id="trapezoid2"></div> 
 
<div id="trapezoid"></div>

+0

где 70px? – kulan

+0

Ну, разрыв составляет около 140 пикселей, и я думаю, что это результат '400- (140 + 140) = 120', но 120 при преобразовании создают разрыв около 140, но я не уверен в этом. –

11

Вместо того, чтобы трапецию по горизонтали, а затем поворот, просто сделать это так, как вы хотите.

#trapezoid { 
 
    margin-top:20px; 
 
    border-left:100px solid red; 
 
    border-top: 20px solid transparent; 
 
    border-bottom: 20px solid transparent; 
 
    height: 200px; 
 
    float: left; 
 
} 
 

 
#trapezoid2 { 
 
    margin-top:20px; 
 
    border-right:100px solid red; 
 
    border-top: 20px solid transparent; 
 
    border-bottom: 20px solid transparent; 
 
    height: 200px; 
 
    float: left; 
 
}
<div id="trapezoid2"></div> 
 
    <div id="trapezoid"></div>

4

Делают это без вращающаяся:

#trapezoid { 
    border-left: 100px solid red; 
    border-top: 20px solid transparent; 
    border-bottom: 20px solid transparent; 
    height: 200px; 
    width: 0px; 
    float: left; 
} 

#trapezoid2 { 
    border-right: 100px solid red; 
    border-top: 20px solid transparent; 
    border-bottom: 20px solid transparent; 
    height: 200px; 
    width: 0px; 
    float: left; 
} 

http://codepen.io/anon/pen/Wxzdrv

Смежные вопросы