Рассмотрим подробно свойство clip
В данном уроке мы разберемся с редко используемым и плохо понимаемым свойством CSS clip, а также рассмотрим, как с его помощью получать замечательные эффекты.
Назначение свойства clip - определять, какую часть элемента нужно выводить. Вы наверняка слышали о таком эффекте под названием "обрезка" (по-английски "crop"). Существует достаточно много плагинов JavaScript для обрезания элемента, но в действительности можно делать то же самое с помощью свойства CSS clip
. Конечно, с некоторыми ограничениями. Мы рассмотрим их несколько позже.
Синтаксис
Начнем с разбора синтаксиса свойства clip
, который может показаться на первый взгляд сложным для понимания. Посмотрим на следующий пример:
.my-element { position: absolute; clip: rect(110px, 160px, 170px, 60px); }
Первое, что нужно запомнить: свойство clip работает только для элементов со свойствами position: absolute
или position: fixed
. Оно не действует при относительном или статичном позиционировании.
Разумных объяснений данному факту не нашлось на просторах Интернет.
Однако, все еще можно сделать несколько интересных экспериментов со свойством clip
и найти отличные способы его применения.
Рассмотрим синтаксис детально.
Свойство clip
может иметь три различных значения:
- auto: устанавливается по умолчанию. Установка данного значения эквивалентна отказу от использования свойства
clip
. - inherit: наследование значения свойства
clip
от родительского элемента. - функция формы. В текущий момент доступна только функция
rect()
.
clip: { shape | auto | inherit } ;
В большинстве случаев вы захотите использовать функцию формы. Может быть наступят дни, когда мы сможем использовать не только функцию rect()
для задания формы (например, circle()
), но сегодня наши возможности ограничены только прямоугольником. Но не стоит беспокоиться - данной функции достаточно для получения интересных эффектов.
Функция rect()
Теперь разберемся с синтаксисом функции rect()
. он требует 4 значения, разделенных запятой: top (верх), right (право), bottom (низ) и left (лево). Как для отступов или полей свойство указываются по часовой стрелке.
clip: rect(<top>, <right>, <bottom>, <left>);
Теперь нужно сосредоточить внимание, так как есть небольшая хитрость. Значения top(верх) и bottom(низ) определяют смещение от верхней границы, а left(лево) и right(право) определяют смещение от левой границы.
Рассмотрим небольшой пример:
clip: rect(40px, 260px, 150px, 80px);
Данный код означает, что мы берем часть элемента между 40px и 150px по вертикали и между 80px и 260px по горизонтали. На следующем рисунке показан принцип.
Как только вы разберетесь с принципом работы функции rect()
, использование свойства clip
станет простым для вас.
Теперь небольшой вопрос для закрепления материала. Допустим, у нас есть элемент 400px по ширине и 200px по высоте. Нужно удалить 50px справа, 10px сверху и30px снизу. Какое из ниже приведенных описаний нужно использовать?
clip: rect(50px, 30px, 350px, 70px); clip: rect(0, 10px, 30px, 50px); clip: rect(10px, 50px, 30px, 0); clip: rect(50px, 30px, 10px, 10px); clip: rect(10px, 350px, 170px, 0);
Дополнительные возможности
Мы рассмотрели базовые установки свойства clip
. Но есть несколько моментов, про которые следует знать.
Во-первых, функция rect()
принимает auto
в качестве значения любого параметра. Оно означает “100%”. Например, есть элемент размером 100px на 100px и нам нужно выводить его полностью. Можно воспользоваться значением rect(0, 100px, 100px, 0)
или rect(0, auto, auto, 0)
.
Во-вторых, так как функция rect()
использует значение длины для каждого параметра, то они могут анимироваться с помощью трансформаций или переходов CSS. Такой подход открывает отличную возможность для создания впечатляющих эффектов. Конечно, анимировать auto
неп олучится, так как оно не является целым типом.
В-третьих, процентные значения для функции rect()
не поддерживаются. Плохая новость, так как создание адаптивных эффектов осложняется.
Поддержка в браузерах
Множество замечательных возможностей разбивалось вдребезги о риф плохой поддержки в браузерах. Но вы будете удивлены, посмотрев на список с указанием версий, в которых действует свойство clip
:
- Chrome >1.0
- FireFox >1.0
- Opera >7.0
- Safari >1.0
- IE >4.0 (а с версии 8.0 поддерживается синтаксис с запятой)
Да, вы не ошиблись - Internet Explorer версии 4.0. Но для версий до 8.0 нужно использовать синтаксис с разделением значений пробелом, а не запятой.
.my-element { position: absolute; clip: rect(10px 350px 170px 0); /* IE4 to IE7 */ clip: rect(10px, 350px, 170px, 0); /* IE8+ & other browsers */ }
Демонстрация
Для более наглядного представления мы подготовили пару примеров.
В первом примере используем:
- Свойство
clip
- Переходы CSS
- Селектор
~
или+
Сначала изображение скрыто с помощью обрезки. Затем, при наведении курсора мыши на кнопку изображение разворачивается за 0.5с от центра.
<iframe style="width: 100%; height: 350px"
src="http://jsfiddle.net/zNcTR/4/embedded/result,html,css,js"></iframe>
Эффектно? Второй пример показывает более реалистичное применение свойства clip
вместе с другими селекторами и переходами.
В следующем уроке мы сделаем вполне реальное приложение с использованием свойства clip
.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/fP44FQM28-Q/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей Индийская пословица |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.