Головна » Кодування » Створіть ефект відображення лише для CSS з прозорими межами

    Створіть ефект відображення лише для CSS з прозорими межами

    A Ефект розкриття тільки CSS-зображення можуть бути вирішені по-різному. Це насправді досить легко кодувати дизайн, в якому зображення виділяється з (переповнений) його суцільне тло -ви просто розмістити зображення над меншим елементом з твердим фоном.

    Ви можете отримати той самий результат, якщо ви використовуєте прозорі кордони, де ви зберігаєте розмір елемента фону однаковий як і на передньому плані і додати прозорі межі для того, щоб створити порожній простір для перетікання переднього плану.

    Існує деякі переваги у використанні останнього методу. Оскільки це прозорі кордони, які забезпечують область для переповнення переднього плану, ми можемо керувати напрямком переповнення між лівою, правою, верхньою і нижньою межами. Також, маючи однаковий розмір як для переднього плану, так і для фону полегшує переміщення обох елементів одночасно на сторінці.

    Коротко кажучи, ми побачимо, як це зробити створити ефект відображення лише для CSS за допомогою a менший суцільний фон з зображення переднього плану, яке має прозорі межі. Ви можете перевірити остаточне демо нижче.

    1. Створіть початковий код

    HTML-мудрий, тільки один

    необхідно:

     

    У CSS ми використовуємо дві змінні CSS, --bgc і --dim для колір фону і розміри з .foo контейнера відповідно. У прикладі я використав однакове значення для ширини і висоти, щоб отримати квадратний ящик, створюйте окремі змінні для висоти і ширини, якщо потрібно прямокутник.

    Ми також додаємо позиція: відносна правило до .foo, так що його псевдоелементи, які ми будемо використовувати для розкриття зображення, може бути абсолютно позиціонується (див. нижче), і таким чином складені один на одного.

     .foo --bgc: # FFCC03; --dim: 300px; width: var (- dim); height: var (- dim); background-color: var (- bgc); позиція: відносна;  

    Ми додайте порожній зміст власності до обох псевдоелементів, .foo :: до і .foo :: after, щоб отримати їх належним чином.

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

    The .foo Елемент, його два псевдоелемента, .foo :: до, .foo :: after, і їх : hover псевдокласи отримати перехід власності що буде додайте простоту переходу їм 500 мілісекунд (півсекунди).

     .foo, .foo: hover, .foo :: before, .foo :: after, .foo: hover :: before, .foo: hover :: after перемикання: перетворення 500ms;  

    2. Додайте зображення

    Додаємо зображення до .foo :: до псевдоелемент як фонове зображення, і розмір його покриває весь псевдоелемент з ширина і висота властивості. Ми складіть його прямо під .foo елемент за допомогою z-індекс: -1 правило.

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

    The центр ключове слово центрі зображення, в той час як покриття ключове слово масштабує зображення охоплюють весь елемент при збереженні співвідношення сторін.

    На скріншот нижче ви можете побачити, що ми маємо досі (z-індекс видалено з .foo :: до так що це можна побачити):

    3. Додайте висувний фон

    Щоб додати менше зображення (висувається) за зображенням, ми будемо використовувати інший псевдоелемент, .foo :: after.

    Ми створюємо іншу змінну CSS, --b, для ширина кордону. Ми даємо три прозорі межі до :: після псевдоелемент: зверху, праворуч і знизу.

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

    The ширина розраховується як calc (100% - var - b)) що повертається загальна ширина .foo мінус загальна ширина її горизонтальних меж (лише правий кордон, оскільки кордон не залишився).

    The висота розраховується як calc (100% - calc (var (- b) * 2)) що повертається загальна висота .foo мінус загальна ширина його вертикальних кордонів (верхня і нижня межі).

    З box-shadow власності, ми також додайте горизонтальну вставку тіні розміру такий же, як .foo (який var (- dim)).

    CSS-фільтр яскравість (.8) темніє колір фону трохи, і, нарешті, z-індекс: -2 правило розміщує :: після псевдоелемент під ним :: раніше містить зображення.

    Ось це скріншот демо надано досі (с z-індекс видалені з обох псевдоелементів, щоб їх можна було побачити):

    4. Додайте перетворення

    Ми додайте перетворення власності до двох псевдоелементів, тому коли користувач зависає .foo, є обидва псевдоелемента переміщуються горизонтально.

    Як ми вже додано перехід властивість всіх елементів наприкінці кроку 1, рух зображення і його фон є обидва анімовані.

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

    Нижче ви можете побачити остаточне демо.

    Бонус: необов'язкова маржа

    Якщо відображається .foo поруч з іншими елементами на сторінці і бажаєте, щоб ці інші елементи відсунься тоді, коли зображення і його фон виходять, то додайте праву крапку такої ж ширини, що і .foo до .foo: hover елемент.

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