Начална » кодиране на стоките » Създайте CSS-Only Image Reveal Ефект с прозрачни граници

    Създайте CSS-Only Image Reveal Ефект с прозрачни граници

    А CSS-единствено изображение разкрива ефект може да бъде решен по различни начини. Това всъщност е много лесно да се кодира дизайн, в който изображението се откроява от (е препълнен от) нейния солиден фон -ти просто поставете изображение върху по-малък елемент със солиден фон.

    Можете да получите същия резултат, ако използвате прозрачни граници, където държите размерът на елемента на фона е същият като на преден план и да добавите прозрачни граници, за да създайте празно пространство за да нахлуе на преден план.

    Има някои предимства при използването на последния метод. Тъй като това са прозрачните граници, които осигуряват площта, в която предният план може да се препълни, можем контролирайте посоката на преливане между лявата, дясната, горната и долната граница. Също така, имат същия размер както за преден план, така и за фон улеснява едновременното преместване на двата елемента на страницата.

    Накратко, ще видим как да го направим създайте CSS-ефект само за разкриване на изображение с помощта на по-малък солиден фон с изображение от преден план, което има прозрачни граници. Можете да проверите окончателно демо По-долу.

    1. Създайте първоначалния код

    HTML-мъдър, само един

    изисква се:

     

    В CSS използваме две CSS променливи, --BGC и --блед за цвят на фона и размери от .Foo съответно. В примера използвах същата стойност за ширина и височина, за да получите квадратна кутия, създайте отделни променливи за височината и ширината, ако искате правоъгълник.

    Ние също добавяме позиция: относителна правило .Foo, така че неговите псевдо-елементи, за които ще използваме разкриване на образа, може да бъде абсолютно позициониран (виж по-долу) и по този начин натрупани един върху друг.

     .foo --bgc: # FFCC03; --dim: 300px; width: var (- dim); височина: var (- dim); фон-цвят: var (- bgc); позиция: относителна;  

    ние добавете празно съдържание Имот към двата псевдоелемента, .Foo :: преди и .Foo :: след, за да ги направят правилно.

     .foo :: before, .foo :: after content: "; position: absolute; left: 0; top: 0; 

    Най- .Foo елемент, неговите два псевдоелемента, .Foo :: преди, .Foo :: след, и техния : навъртам псевдо-класовете получите преход Имот че ще добавете лесен преход към тях за 500 милисекунди (половин секунда).

     .foo, .foo: hover, .foo :: before, .foo :: after, .foo: hover :: before, .foo: hover :: after transition: преобразувайте 500ms;  

    2. Добавете изображението

    Добавяме изображението към .Foo :: преди псевдо-елемент като фоново изображение, и размер, за да покрие целия псевдоелемент с широчина и височина Имоти. ние подредете го точно под .Foo елемент използвайки z-индекс: -1 правило.

     .foo :: before ширина: 100%; височина: 100%; фон: url (camel.png) център / капак; z-индекс: -1;  

    Най- център ключова дума центрира изображението, докато Покрийте Ключовата дума мащабира изображението покриване на целия елемент при запазване на пропорцията.

    На екранна снимка по-долу можете да видите какво имаме досега (Z-индекс се премахва от .Foo :: преди така че да може да се види):

    3. Добавете фона на слайда

    За да добавите по-малък (плъзгащ се) фон зад изображението, ще използваме другия псевдоелемент, .Foo :: след.

    Създаваме друга CSS променлива, --б, за ширина на границата. Ние даваме три прозрачни граници към ::след псевдо-елемент: отгоре, отдясно и отдолу.

     .foo :: after --b: 20px; width: calc (100% - var (- b)); височина: изчислена (100% - изчислена (var (- b) * 2)); border: var (- b) прозрачен; граница ляво: няма; box-shadow: вмъкване 0 var (- dim) 0 var (- bgc); филтър: яркост (.8); z-индекс: -2;  

    Най- широчина се изчислява като изчисление (100% - var - b)) това се връща общата ширина на. \ t .Foo минус общата ширина на нейните хоризонтални граници (само дясната граница, тъй като няма лява граница).

    Най- височина се изчислява като изчисление (100% - изчисление (var (- b) * 2)) това се връща общата височина на. \ t .Foo минус общата ширина на нейните вертикални граници (горни и долни граници).

    С кутия сянка собственост, ние също добавете хоризонтална вмъкната сянка от размера същият като .Foo (кое е Var (- слабо)).

    CSS филтър на яркост (0,8) Затъмнява цвета на фона малко, и накрая, z-индекс: -2 правило места ::след псевдоелемент отдолу ::преди който съдържа изображението.

    Ето снимка на демото досега (с Z-индекс премахнати от двата псевдоелемента, така че те да могат да се видят):

    4. Добавете трансформацията

    ние добавете трансформиране Имот към двата псевдоелемента, така че когато потребителят се издига .Foo, двата псевдоелемента са хоризонтално.

    Тъй като ние вече добави преход собственост на всички елементи в края на Стъпка 1, движението на изображението и неговия фон са и двете са анимирани.

     .foo: hover :: before, .foo: hover :: after transform: translateX (100%);  

    По-долу можете да видите окончателно демо.

    Бонус: Незадължителен марж

    Ако покажете .Foo до други елементи на страница и искат тези други елементи да премести се след това изображението и неговият фон излизат добавете дясно поле от същата ширина като тази на .Foo към .Foo: навъртам елемент.

     .foo: hover margin-right: var (- dim);