DIV под наклоном

381
26 ноября 2016, 18:42

Помогите, пожалуйста. Мне нужно сделать:

  1. Дивы неправильной формы
  2. Чтобы при наведении на див менялся бэкграунд

Пока что у меня получается только накладывать прямоугольные блоки с фоном, но в этом случае они залезают друг на друга и при наведении меняется только часть фона. Может вы сможете подсказать как это лучше реализовать?

Заранее спасибо

HTML

<div class="serv_block">
        <div class="serv_block1"></div>
        <div class="serv_block2"></div> 
        <div class="serv_block3"></div>
        <div class="serv_block4"></div>
    </div>`

CSS

.serv_block1 {
    background: url(../img/serv_block1.png) no-repeat top left;
    width: 100%;
    height: 650px;
    z-index: 9;
    position: relative;   
    float: left;
     -webkit-clip-path: polygon(0 0%,100% 0,50% 100%,0 100%); 
    margin-left: -9%;
    margin-top: -100px;
    shape-outside: url(../img/serv_block1.png);
}
.serv_block4:hover {
    background: url(../img/serv_block44.png) no-repeat top right;
}
.serv_block2 {
    background: url(../img/serv_block2.png) no-repeat top right;
    width: 100%;
    height: 650px;
    z-index: 9;
    position: relative;   
    float: right;
        -webkit-clip-path: polygon(0 0%,100% 0,100% 100%,0% 100%);
    margin-right: -6%; 
    margin-top: -650px;
    shape-outside: url(../img/serv_block2.png);
}
.serv_block3 {
    background: url(../img/serv_block3.png) no-repeat top left;
    width: 100%;
    height: 650px;
    z-index: 9;
    position: relative;   
    float: left; 
    -webkit-clip-path: polygon(0 0%,100% 0,50% 100%,0 100%);
    margin-left: -9%;
    shape-outside: url(../img/serv_block3.png);
}
.serv_block4 {
    background: url(../img/serv_block4.png) no-repeat top right;
    width: 100%;
    height: 650px;
    z-index: 9;
    position: relative; 
    float: right;
     overflow:hidden;
        -webkit-clip-path: polygon(0 0%,100% 0,100% 100%,0% 100%);
    margin-right: -6%;
    margin-top: -650px;
    shape-outside: url(../img/serv_block4.png);
}

Answer 1

Думаю, неплохое решение сделать два вложенных блока. Внешний задает форму с одной скошенной стороной:

transform: perspective(300px) rotateX(-30deg);
transform-origin: 0% 50%;
overflow: hidden;

А внутренний с фоном подвергается обратной трансформации, чтобы картинка на фоне не искажалась.

 background-image: url('...');
 transform: perspective(300px) rotateX(30deg);
 transform-origin: 0% 0%;
READ ALSO
Генерация 1 000+ мелких div блоков кладкой Masonry Grid?

Генерация 1 000+ мелких div блоков кладкой Masonry Grid?

Я сегодня тестировал основные библиотеки по Masonry Grid, однако, когда дело доходит до настолько мелких блоков, все ломается

268
Смена изображения при клике на кнопку

Смена изображения при клике на кнопку

Есть задача -нужен блок, где можно будет прокрутить длинное изображение (или несколько стоящих в ряд) горизонтальным скроллом влево-вправоСкролл...

401
Как выровнять элементы списка если в списке первый элемент - картинка?

Как выровнять элементы списка если в списке первый элемент - картинка?

Не могу выровнять текст по центру относительно высоты картинкиПробовал vertical-align:middle; но скорее всего, я что-то не так делал

251
Не выводится tooltip

Не выводится tooltip

На сайте есть изображение jpg, где на нем проставлены маркерыПри наведении на маркер должен всплывать тултип

336